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 %> diff --git a/app/helpers/spotlight/pages_helper.rb b/app/helpers/spotlight/pages_helper.rb index 85de2c4db..ac5733f9b 100644 --- a/app/helpers/spotlight/pages_helper.rb +++ b/app/helpers/spotlight/pages_helper.rb @@ -81,6 +81,12 @@ 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 + def resource_alt_text(options, default) return '' if options[:decorative].present? return options[:alt_text] if options[:alt_text].present? 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 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 427401fa4..acd8f30cb 100644 --- a/spec/test_app_templates/catalog_controller.rb +++ b/spec/test_app_templates/catalog_controller.rb @@ -12,8 +12,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',