Skip to content

Commit

Permalink
Fix Colletion Thumbnails
Browse files Browse the repository at this point in the history
  • Loading branch information
laritakr committed Jun 14, 2024
1 parent 387e2bb commit 74b565a
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
# - ensure user is allowed to change visibility
# - add the ability to upload a collection thumbnail
# - add altext to collection banner
# @TODO clean up of unnecessary methods now that we are using Valkyrie transactions to set branding

module Hyrax
module Dashboard
Expand Down Expand Up @@ -45,7 +46,7 @@ def update_valkyrie_collection
def edit
form
# Gets original filename of an uploaded thumbnail. See #update
return unless ::SolrDocument.find(@collection.id).thumbnail_path.include?("uploaded_collection_thumbnails") && uploaded_thumbnail?
return unless ::SolrDocument.find(@collection.id).thumbnail_path&.include?("uploaded_collection_thumbnails") && uploaded_thumbnail?
@thumbnail_filename = File.basename(uploaded_thumbnail_files.reject { |f| File.basename(f).include? @collection.id }.first)
end

Expand Down
24 changes: 20 additions & 4 deletions app/helpers/application_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,33 @@ def group_navigation_presenter
@group_navigation_presenter ||= Hyku::Admin::Group::NavigationPresenter.new(params:)
end

def collection_thumbnail(document, _image_options = {}, _url_options = {})
return image_tag(document['thumbnail_path_ss']) if document['thumbnail_path_ss'].present?
return super if Site.instance.default_collection_image.blank?
# Return collection thumbnail formatted for display:
# - use collection's branding thumbnail if it exists
# - use site's default collection image if one exists
# - fallback to Hyrax's default image
def collection_thumbnail(document, _image_options = {}, url_options = {})
view_class = url_options[:class]
# The correct thumbnail SHOULD be indexed on the object
return image_tag(document['thumbnail_path_ss'], class: view_class, alt: alttext_for(document)) if document['thumbnail_path_ss'].present?

image_tag(Site.instance.default_collection_image&.url)
# If nothing is indexed, we just fall back to site default
return image_tag(Site.instance.default_collection_image&.url, alt: alttext_for(document), class: view_class) unless Site.instance.default_collection_image.blank?

# fall back to Hyrax default if no site default
tag.span("", class: [Hyrax::ModelIcon.css_class_for(::Collection), view_class],
alt: alttext_for(document))
end

def label_for(term:, record_class: nil)
locale_for(type: 'labels', term:, record_class:)
end

def alttext_for(collection)
thumbnail = CollectionBrandingInfo.where(collection_id: collection.id, role: "thumbnail")&.first
return thumbnail.alt_text if thumbnail
block_for(name: 'default_collection_image_text') || "#{collection.title_or_label} #{t('hyrax.dashboard.my.sr.thumbnail')}"
end

def hint_for(term:, record_class: nil)
hint = locale_for(type: 'hints', term:, record_class:)

Expand Down
9 changes: 2 additions & 7 deletions app/presenters/hyrax/collection_presenter_decorator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,9 @@ def banner_file
end
end

# use either the indexed thumbnail or find the branding for the collection
def thumbnail_file
@thumbnail_file ||= CollectionBrandingInfo.where(collection_id: id, role: "thumbnail")
.select(:local_path, :alt_text, :target_url).map do |thumbnail|
{ alttext: thumbnail.alt_text,
file: File.split(thumbnail.local_path).last,
file_location: "/#{thumbnail.local_path.split('/')[-4..-1].join('/')}",
linkurl: thumbnail.target_url }
end
@thumbnail_file ||= collection_thumbnail(solr_document)
end

# Begin Featured Collections Methods
Expand Down
8 changes: 6 additions & 2 deletions app/services/hyrax/thumbnail_path_service_decorator.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true

# OVERRIDE Hyrax v5.0.0rc2 - use site defaults instead of app wide defaults
# OVERRIDE Hyrax v5.0.0rc2 - index using site defaults instead of app wide defaults

module Hyrax
module ThumbnailPathServiceDecorator
Expand All @@ -10,7 +10,11 @@ def call(object)
collection_thumbnail = CollectionBrandingInfo.where(collection_id: object.id.to_s, role: "thumbnail").first
return collection_thumbnail.local_path.gsub(Rails.public_path.to_s, '') if collection_thumbnail

default_image
default_collection_image
end

def default_collection_image
Site.instance.default_collection_image&.url || ActionController::Base.helpers.image_path('default.png')
end

def default_image
Expand Down
11 changes: 3 additions & 8 deletions app/views/hyrax/collections/_media_display.html.erb
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
<% if presenter.thumbnail_path %>
<%= image_tag presenter.thumbnail_path,
class: "representative-media",
alt: block_for(name: 'default_collection_image_text'),
role: "presentation" %>
<% else %>
<%= image_tag(Site.instance.default_collection_image) %>
<% end %>
<%# OVERRIDE Hyrax 6.0: %>
<%# show uploaded thumbnail or default with alttext %>
<%= collection_thumbnail(presenter.solr_document, "", {class: "representative-media"}) %>
11 changes: 3 additions & 8 deletions app/views/hyrax/dashboard/collections/_list_collections.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,14 @@
<td>
<div class="thumbnail-title-wrapper">
<div class="thumbnail-wrapper">
<% if (collection_presenter.thumbnail_path == nil) %>
<%= image_tag(Site.instance.default_collection_image) %>
<% else %>
<%# OVERRIDE begin %>
<%= image_tag(collection_presenter.thumbnail_path, alt: block_for(name: 'default_collection_image_text') || "#{collection_presenter.title_or_label} #{t('hyrax.dashboard.my.sr.thumbnail')}") %>
<%# OVERRIDE end %>
<% end %>
<%# Use appropriate collection thumbnail + alttext %>
<%= collection_thumbnail(collection_presenter.solr_document) %>
</div>
<%= link_to collection_presenter.show_path do %>
<span class="sr-only"><%= t("hyrax.dashboard.my.sr.show_label") %> </span>
<%= markdown(collection_presenter.title_or_label) %>
<% end %>
<div class="thumbnail-title-wrapper">
<%# Expand arrow %>
<a href="#" class="small show-more" title="Click for more details">
<i id="expand_<%= id %>" class="fa fa-chevron-right" aria-hidden="true"></i>
Expand Down
9 changes: 2 additions & 7 deletions app/views/hyrax/my/collections/_list_collections.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,8 @@
<td>
<div class="thumbnail-title-wrapper">
<div class="thumbnail-wrapper">
<% if (collection_presenter.thumbnail_path == nil) %>
<span class="<%= Hyrax::ModelIcon.css_class_for(::Collection) %> collection-icon-small"></span>
<% else %>
<%# OVERRIDE begin %>
<%= image_tag(collection_presenter.thumbnail_path, alt: collection_presenter.thumbnail_file.first&.[](:alttext) || block_for(name: 'default_collection_image_text') || "#{collection_presenter.title_or_label} #{t('hyrax.dashboard.my.sr.thumbnail')}") %>
<%# OVERRIDE end %>
<% end %>
<%# Use appropriate collection thumbnail + alttext %>
<%= collection_thumbnail(collection_presenter.solr_document) %>
</div>
<%= link_to collection_presenter.show_path, id: "src_copy_link#{id}" do %>
<span class="sr-only"><%= t("hyrax.dashboard.my.sr.show_label") %></span>
Expand Down

0 comments on commit 74b565a

Please sign in to comment.