From a5578f31336ee1a9103cdf8a7d22e9e5720ec9b9 Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Fri, 27 Sep 2024 09:04:26 -0700 Subject: [PATCH 1/4] Update icons work-around for compatibility with blacklight 7.39 (which backported the 7.38 fix.) --- app/components/spotlight/icon_component.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/components/spotlight/icon_component.rb b/app/components/spotlight/icon_component.rb index ce278f1c9..e87514f32 100644 --- a/app/components/spotlight/icon_component.rb +++ b/app/components/spotlight/icon_component.rb @@ -3,10 +3,10 @@ module Spotlight # Displays the document class IconComponent < Blacklight::Icons::IconComponent - if Blacklight.version < '8.0' - # Work around https://github.com/projectblacklight/blacklight/issues/3232 (fixed in Blacklight 8.0) + if Blacklight.version < '7.39' + # Work around https://github.com/projectblacklight/blacklight/issues/3232 (fixed in Blacklight 7.39) def classes - (@classes - ['blacklight-icons-'] + ["blacklight-icons-#{name}"]).uniq + ((@classes || (super if defined?(super)) || []) - ['blacklight-icons-'] + ["blacklight-icons-#{name}"]).uniq end end end From 42ea923b9b0575f6108a6783c271f1ace3f439cf Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Fri, 27 Sep 2024 09:42:04 -0700 Subject: [PATCH 2/4] Don't populate the embed partial if an embed component is defined. --- app/models/spotlight/blacklight_configuration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/spotlight/blacklight_configuration.rb b/app/models/spotlight/blacklight_configuration.rb index 705fc52c2..f43357af1 100644 --- a/app/models/spotlight/blacklight_configuration.rb +++ b/app/models/spotlight/blacklight_configuration.rb @@ -123,7 +123,7 @@ def blacklight_config config.view.embed! # This is blacklight-gallery's openseadragon partial unless config.view.embed.document_component - config.view.embed.partials ||= ['openseadragon'] + config.view.embed.partials ||= ['openseadragon'] unless config.view.embed.embed_component config.view.embed.document_component = Spotlight::SolrDocumentLegacyEmbedComponent end config.view.embed.if = false From 1b8da70edd033bc437a8155e63ed7b787e2f1c34 Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Fri, 27 Sep 2024 09:46:17 -0700 Subject: [PATCH 3/4] Configure embed components for testing for Blacklight 8 --- app/helpers/spotlight/pages_helper.rb | 6 ++++++ .../blocks/_embedded_document.html.erb | 2 +- spec/test_app_templates/catalog_controller.rb | 17 +++++++++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/helpers/spotlight/pages_helper.rb b/app/helpers/spotlight/pages_helper.rb index 1ed55a4cf..91dc06556 100644 --- a/app/helpers/spotlight/pages_helper.rb +++ b/app/helpers/spotlight/pages_helper.rb @@ -80,5 +80,11 @@ def render_contact_email_address(address) def configurations_for_current_page Spotlight::PageConfigurations.new(context: self, page: @page).as_json end + + def embedded_document_presenter(document, view_config: nil) + return document_presenter(document) if view_config.nil? || Blacklight.version < '8.0' + + view_config.document_presenter_class.new(document, self, view_config: view_config) + end end end diff --git a/app/views/spotlight/sir_trevor/blocks/_embedded_document.html.erb b/app/views/spotlight/sir_trevor/blocks/_embedded_document.html.erb index cb18e6944..fba30e390 100644 --- a/app/views/spotlight/sir_trevor/blocks/_embedded_document.html.erb +++ b/app/views/spotlight/sir_trevor/blocks/_embedded_document.html.erb @@ -1,6 +1,6 @@
<% view_config = blacklight_config.view_config(:embed) %> - <%= render (view_config.document_component || Spotlight::SolrDocumentLegacyEmbedComponent).new((Blacklight.version > '8.0' ? :document : :presenter) => document_presenter(document), counter: nil) do |component| %> + <%= render (view_config.document_component || Spotlight::SolrDocumentLegacyEmbedComponent).new((Blacklight.version > '8.0' ? :document : :presenter) => embedded_document_presenter(document, view_config: view_config), counter: nil) do |component| %> <% component.with_partial do %> <%= render_document_partials document, view_config.partials, component: component, document_counter: nil, view_config: view_config, block: local_assigns[:block], **(view_config.locals) %> <% end if view_config&.partials&.any? %> diff --git a/spec/test_app_templates/catalog_controller.rb b/spec/test_app_templates/catalog_controller.rb index b3252ba99..4db20990d 100644 --- a/spec/test_app_templates/catalog_controller.rb +++ b/spec/test_app_templates/catalog_controller.rb @@ -11,8 +11,21 @@ class CatalogController < ApplicationController # config.view.gallery.classes = 'row-cols-2 row-cols-md-3' config.view.masonry(document_component: Blacklight::Gallery::DocumentComponent, icon: Blacklight::Gallery::Icons::MasonryComponent) config.view.slideshow(document_component: Blacklight::Gallery::SlideshowComponent, icon: Blacklight::Gallery::Icons::SlideshowComponent) - config.show.tile_source_field = :content_metadata_image_iiif_info_ssm - config.show.partials.insert(1, :openseadragon) + + if Blacklight.version > '8.0' + config.view.embed(if: false, + partials: [], + document_component: Spotlight::SolrDocumentLegacyEmbedComponent, + embed_component: Blacklight::Gallery::OpenseadragonEmbedComponent) + + config.show.tile_source_field = :content_metadata_image_iiif_info_ssm + + config.show.embed_component = Blacklight::Gallery::OpenseadragonEmbedComponent + else + config.show.tile_source_field = :content_metadata_image_iiif_info_ssm + config.show.partials.insert(1, :openseadragon) + end + ## Default parameters to send to solr for all search-like requests. See also SolrHelper#solr_search_params config.default_solr_params = { qt: 'search', From 60b4a0ce5d68ca447a11e04d63ce2cd1a80d7df7 Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Fri, 27 Sep 2024 14:00:28 -0700 Subject: [PATCH 4/4] Blacklight 8 always inflicts a blank partial slot on us, so we have to check if there's actually content. --- .../solr_document_legacy_embed_component.html.erb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/components/spotlight/solr_document_legacy_embed_component.html.erb b/app/components/spotlight/solr_document_legacy_embed_component.html.erb index c428f9208..dc8926e65 100644 --- a/app/components/spotlight/solr_document_legacy_embed_component.html.erb +++ b/app/components/spotlight/solr_document_legacy_embed_component.html.erb @@ -1,11 +1,14 @@ <% if body.present? %> <%= body %> -<% elsif partials? %> - <% partials.each do |partial| %> - <%= partial %> +<% elsif partials? || embed? %> + <% partial_content = capture do %> + <% partials.each do |partial| %> + <%= partial %> + <% end %> <% end %> -<% elsif embed? %> - <%= embed %> + + <%= partial_content if partial_content.present? %> + <%= embed if embed? && partial_content.blank? %> <% elsif thumbnail? %> <%= thumbnail %> <% end %>