diff --git a/Gemfile.lock b/Gemfile.lock index 9705bb5e34ec40b006277747630da32be3e6a3ca..3cc1a3a3d30c62d67fee725024695b26420b91da 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -318,7 +318,7 @@ GEM listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - loofah (2.21.3) + loofah (2.21.4) crass (~> 1.0.2) nokogiri (>= 1.12.0) mail (2.8.1) @@ -450,7 +450,7 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - regexp_parser (2.8.1) + regexp_parser (2.8.2) requests (1.0.2) require_all (3.0.0) responders (3.1.0) diff --git a/app/models/communication/block/template/video.rb b/app/models/communication/block/template/video.rb index 0e0612d61b86f51883bdc0ff1bf4433d9d8ac71b..c69e4f07cdac33db3f95ec17036f7f2887e7e293 100644 --- a/app/models/communication/block/template/video.rb +++ b/app/models/communication/block/template/video.rb @@ -5,11 +5,31 @@ class Communication::Block::Template::Video < Communication::Block::Template::Ba has_component :transcription, :text def video_iframe - Video::Provider.find(url).iframe_tag(title: video_title) + video_provider.iframe_tag(title: video_title) + end + + def video_platform + video_provider.platform + end + + def video_identifier + video_provider.identifier + end + + def video_poster + video_provider.poster + end + + def video_embed + video_provider.embed end protected + def video_provider + @video_provider ||= Video::Provider.find(url) + end + def check_accessibility super accessibility_error 'accessibility.blocks.templates.video.title_missing' if block.title.blank? && video_title.blank? diff --git a/app/services/video/provider/dailymotion.rb b/app/services/video/provider/dailymotion.rb index 2cd9d3900692a9f76ecfcbf28b5a24562a3e4213..1bd00d94096c4dd1c661711538fd62ab8208e15d 100644 --- a/app/services/video/provider/dailymotion.rb +++ b/app/services/video/provider/dailymotion.rb @@ -6,6 +6,11 @@ class Video::Provider::Dailymotion < Video::Provider::Default : video_url.split('video/').last end + # https://www.dailymotion.com/thumbnail/video/x8lyp39 + def poster + "https://www.dailymotion.com/thumbnail/video/#{identifier}" + end + # https://developer.dailymotion.com/player#player-parameters def iframe_url "https://www.dailymotion.com/embed/video/#{identifier}" diff --git a/app/services/video/provider/default.rb b/app/services/video/provider/default.rb index bb0f92e3f4bbf72beec5619eb7e9aa106cbe65ac..d3e202b44cdb27a61a9539a22cde9586ddd94b62 100644 --- a/app/services/video/provider/default.rb +++ b/app/services/video/provider/default.rb @@ -21,6 +21,18 @@ class Video::Provider::Default URI.parse(iframe_url).host end + def identifier + '' + end + + def poster + '' + end + + def embed + iframe_url + end + def iframe_tag(**iframe_options) content_tag(:iframe, nil, default_iframe_options.merge(iframe_options)) end diff --git a/app/services/video/provider/vimeo.rb b/app/services/video/provider/vimeo.rb index f13183cbcc969ccc87a08254fc45b8bfd5a1a08f..47e696cd18fdde9e5596891164015788a3c8a3c2 100644 --- a/app/services/video/provider/vimeo.rb +++ b/app/services/video/provider/vimeo.rb @@ -5,6 +5,11 @@ class Video::Provider::Vimeo < Video::Provider::Default video_url.chomp('/').split('/').last end + # https://vumbnail.com/621585396.jpg + def poster + "https://vumbnail.com/#{identifier}.jpg" + end + # https://help.vimeo.com/hc/en-us/articles/360001494447-Using-Player-Parameters def iframe_url "https://player.vimeo.com/video/#{identifier}" diff --git a/app/services/video/provider/youtube.rb b/app/services/video/provider/youtube.rb index 62153446e92eeade6e43a866d1eb707f95468b60..a47933fbf3113af0275593c920ccb1d1defa5ff5 100644 --- a/app/services/video/provider/youtube.rb +++ b/app/services/video/provider/youtube.rb @@ -6,6 +6,11 @@ class Video::Provider::Youtube < Video::Provider::Default : video_url.split('v=').last end + # https://img.youtube.com/vi/XEEUOiTgJL0/hqdefault.jpg + def poster + "https://img.youtube.com/vi/#{identifier}/hqdefault.jpg" + end + # https://developers.google.com/youtube/player_parameters def iframe_url "https://www.youtube.com/embed/#{identifier}" diff --git a/app/views/admin/communication/blocks/templates/video/_static.html.erb b/app/views/admin/communication/blocks/templates/video/_static.html.erb index 592e98d2c612deb20fd6694ee070278c82d27947..e0a5e480b84ab0f15456e8c7ca27cc386736b4c4 100644 --- a/app/views/admin/communication/blocks/templates/video/_static.html.erb +++ b/app/views/admin/communication/blocks/templates/video/_static.html.erb @@ -3,5 +3,14 @@ <% if block.template.url.present? %> video_iframe: >- <%= block.template.video_iframe %> + video: + platform: "<%= block.template.video_platform %>" + identifier: "<%= block.template.video_identifier %>" + poster: >- + <%= block.template.video_poster %> + embed: >- + <%= block.template.video_embed %> + iframe: >- + <%= block.template.video_iframe %> <% end %> <%= block_component_static block, :transcription %>