Разрешить только уценку для Youtube / Vimeo в уценке - PullRequest
2 голосов
/ 10 февраля 2011

Я пытаюсь разрешить пользователям вставлять видео YouTube или Vimeo в сообщения для приложения Rails3, над которым мы работаем, и оба сейчас используют iframe.Похоже, что помощник sanitize позволяет только глобально добавлять теги в белый список - кроме того, у youtube есть согласованный класс для их iframe, а vimeo - нет.

Как бы вы занялись внесением белых списков встраивания из этих двух URL, но не допустили бы их иначе?

Ответы [ 2 ]

0 голосов
/ 21 июня 2011

http://github.com/rgrove/sanitize/

Это отличный проект, с примером для встраивания на YouTube. Youtube недавно изменился на iframe, и я отправляю им пример «фильтра для него»:

T_YOUTUBE_IFRAME = lambda do |env|
 node      = env[:node]
 return nil unless (env[:node_name] == 'iframe')

 if node['src'] =~ /^http:\/\/www.youtube.com\/embed\//
   node['src'] += "?test" 

   return {:node_whitelist => [node]}
 end
end
0 голосов
/ 18 апреля 2011

Я не уверен, как добавить теги в белый список, используя метод sanitize, но вы всегда можете отфильтровать другой метод и, в частности, проверить src с помощью regex и выписать только, если он соответствует youtube.

def santize_iframe(text)
  text.gsub(/\<iframe( src="(.+?)")?\>(.+?)\<\/iframe\>/m) do
    if $2.include? "youtube.com"
        ... logic to display video
    else
        ""
    end
  end
end
...