From bf0748774dbd09b8b6186cf46adeca7866fcf677 Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Wed, 6 Dec 2023 10:16:26 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=81=20Video=20Embed:=20CDL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds video embed to CDL work type. Issue: - https://github.com/scientist-softserv/palni-palci/issues/911 --- app/forms/hyrax/cdl_form.rb | 6 +++++- app/models/cdl.rb | 18 ++++++++++++++++++ app/presenters/hyku/work_show_presenter.rb | 4 ++++ app/views/hyrax/base/show.html.erb | 21 ++++++++++++++------- 4 files changed, 41 insertions(+), 8 deletions(-) diff --git a/app/forms/hyrax/cdl_form.rb b/app/forms/hyrax/cdl_form.rb index cf05df61a..5a351bd96 100644 --- a/app/forms/hyrax/cdl_form.rb +++ b/app/forms/hyrax/cdl_form.rb @@ -8,9 +8,13 @@ class CdlForm < Hyrax::Forms::WorkForm include HydraEditor::Form::Permissions include PdfFormBehavior # List these terms first after the "Additional fields" divider - self.terms = %i[contributing_library library_catalog_identifier admin_note] + self.terms # rubocop:disable Style/RedundantSelf + self.terms = %i[contributing_library library_catalog_identifier admin_note video_embed] + self.terms # rubocop:disable Style/RedundantSelf self.terms += %i[resource_type additional_information bibliographic_citation chronology_note] self.terms -= %i[based_near] self.required_fields = %i[title creator keyword rights_statement resource_type] + + def secondary_terms + super + %i[video_embed] + end end end diff --git a/app/models/cdl.rb b/app/models/cdl.rb index e75aa746b..698402e8d 100644 --- a/app/models/cdl.rb +++ b/app/models/cdl.rb @@ -16,6 +16,16 @@ class Cdl < ActiveFedora::Base self.indexer = CdlIndexer validates :title, presence: { message: 'Your work must have a title.' } + # rubocop:disable Style/RegexpLiteral + validates :video_embed, + format: { + # regex matches only youtube & vimeo urls that are formatted as embed links. + with: /(http:\/\/|https:\/\/)(www\.)?(player\.vimeo\.com|youtube\.com\/embed)/, + message: "Error: must be a valid YouTube or Vimeo Embed URL." + }, + if: :video_embed? + # rubocop:enable Style/RegexpLiteral + property :additional_information, predicate: ::RDF::Vocab::DC.accessRights do |index| index.as :stored_searchable end @@ -44,6 +54,14 @@ class Cdl < ActiveFedora::Base index.as :stored_searchable, :facetable end + property :video_embed, predicate: ::RDF::URI("https://atla.com/terms/video_embed"), multiple: false do |index| + index.as :stored_searchable + end + + def video_embed? + video_embed.present? + end + include ::Hyrax::BasicMetadata # This line must be kept below all others that set up properties, # including `include ::Hyrax::BasicMetadata`. All properties must diff --git a/app/presenters/hyku/work_show_presenter.rb b/app/presenters/hyku/work_show_presenter.rb index c6777a2bf..fd43da0fd 100644 --- a/app/presenters/hyku/work_show_presenter.rb +++ b/app/presenters/hyku/work_show_presenter.rb @@ -92,6 +92,10 @@ def show_pdf_download_button? show_pdf_download_button.first.to_i.positive? end + def viewer? + iiif_viewer? || video_embed_viewer? || pdf_viewer? + end + def parent_works(current_user = nil) @parent_works ||= begin docs = solr_document.load_parent_docs diff --git a/app/views/hyrax/base/show.html.erb b/app/views/hyrax/base/show.html.erb index 7866a0fe4..f30a36836 100644 --- a/app/views/hyrax/base/show.html.erb +++ b/app/views/hyrax/base/show.html.erb @@ -29,14 +29,21 @@
<%= render 'pdf_js', file_set_presenter: pdf_file_set_presenter(@presenter) %>
+ <% else %> +
+ <%= render 'representative_media', presenter: @presenter, viewer: false %> + <%= render('download_pdf', presenter: @presenter, file_set_id: @presenter.file_set_presenters.first.id) if @presenter.show_pdf_download_button? %> + <%= render 'citations', presenter: @presenter %> +
+ <% end %> + <% if @presenter.viewer? %> +
+ <%= render('download_pdf', presenter: @presenter, file_set_id: @presenter.file_set_presenters.first.id) if @presenter.show_pdf_download_button? %> + <%= render 'citations', presenter: @presenter %> + + <%#= render 'analytics_button', presenter: @presenter %> +
<% end %> -
- <%= render 'representative_media', presenter: @presenter, viewer: false unless @presenter.iiif_viewer? || @presenter.show_pdf_viewer? %> - <%= render('download_pdf', presenter: @presenter, file_set_id: @presenter.file_set_presenters.first.id) if @presenter.show_pdf_download_button? %> - <%= render 'citations', presenter: @presenter %> - - <%#= render 'analytics_button', presenter: @presenter %> -
<%= render 'work_description', presenter: @presenter %> <%= render 'metadata', presenter: @presenter %>