2014-07-22 10:39:32 +08:00
|
|
|
# name: lazyYT
|
|
|
|
# about: Uses the lazyYT plugin to lazy load Youtube videos
|
2015-01-27 20:30:07 +08:00
|
|
|
# version: 1.0.1
|
2014-07-22 10:39:32 +08:00
|
|
|
# authors: Arpit Jalan
|
2015-02-07 07:08:57 +08:00
|
|
|
# url: https://github.com/discourse/discourse/tree/master/plugins/lazyYT
|
2014-07-22 10:39:32 +08:00
|
|
|
|
|
|
|
# javascript
|
|
|
|
register_asset "javascripts/lazyYT.js"
|
|
|
|
|
|
|
|
# stylesheet
|
|
|
|
register_asset "stylesheets/lazyYT.css"
|
2014-07-28 14:20:08 +08:00
|
|
|
register_asset "stylesheets/lazyYT_mobile.scss", :mobile
|
2014-07-22 10:39:32 +08:00
|
|
|
|
|
|
|
# freedom patch YouTube Onebox
|
|
|
|
class Onebox::Engine::YoutubeOnebox
|
|
|
|
include Onebox::Engine
|
|
|
|
|
|
|
|
def to_html
|
|
|
|
if video_id
|
2014-08-23 03:21:02 +08:00
|
|
|
# Put in the LazyYT div instead of the iframe
|
2015-05-08 20:33:36 +08:00
|
|
|
"<div class=\"lazyYT\" data-youtube-id=\"#{video_id}\" data-youtube-title=\"#{video_title}\" data-width=\"480\" data-height=\"270\" data-parameters=\"#{embed_params}\"></div>"
|
2014-07-22 10:39:32 +08:00
|
|
|
else
|
2014-08-23 03:21:02 +08:00
|
|
|
super
|
2014-07-22 10:39:32 +08:00
|
|
|
end
|
|
|
|
end
|
2014-07-26 21:11:21 +08:00
|
|
|
|
2014-07-22 10:39:32 +08:00
|
|
|
end
|
2014-08-21 18:54:05 +08:00
|
|
|
|
|
|
|
after_initialize do
|
|
|
|
|
|
|
|
Email::Styles.register_plugin_style do |fragment|
|
|
|
|
# YouTube onebox can't go in emails, so replace them with clickable links
|
|
|
|
fragment.css('.lazyYT').each do |i|
|
|
|
|
begin
|
|
|
|
src = "https://www.youtube.com/embed/#{i['data-youtube-id']}?autoplay=1&#{i['data-parameters']}"
|
|
|
|
src_uri = URI(src)
|
|
|
|
display_src = "https://#{src_uri.host}#{src_uri.path}"
|
|
|
|
i.replace "<p><a href='#{src_uri.to_s}'>#{display_src}</a><p>"
|
|
|
|
rescue URI::InvalidURIError
|
|
|
|
# If the URL is weird, remove it
|
|
|
|
i.remove
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|