scientist-softserv / palni-palci

Other
1 stars 0 forks source link

When IIIF Print is Disabled, We No Longer Render Representative Images (e.g. Thumbnail) #715

Open jeremyf opened 1 year ago

jeremyf commented 1 year ago

As reported on <2023-08-17 Thu> by Nic:

Post-update work pages with PDFs are no longer displaying the thumbnail of the file, instead displaying the default work icon or whatever image the user has set in place of the default icon.

The download link normally present under the thumbnail is also missing. (edited)

Code Analysis

The Baseline Hyrax Implementation is as follows:

<% if presenter.representative_id.present? && presenter.representative_presenter.present? %>
  <% if defined?(viewer) && viewer %>
    <%= iiif_viewer_display presenter %>
  <% else %>
    <%= render media_display_partial(presenter.representative_presenter), file_set: presenter.representative_presenter  %>
  <% end %>
<% else %>
  <%= image_tag 'default.png', class: "canonical-image", alt: 'default representative image' %>
<% end %>

The IIIF Print Override is as follows:

<% if presenter.iiif_viewer? %>
  <% if defined?(viewer) && viewer %>
    <%= iiif_viewer_display presenter %>
  <% else %>
    <%= render media_display_partial(presenter.representative_presenter), file_set: presenter.representative_presenter %>
  <% end %>
<% else %>
  <% alt = block_for(name: 'default_work_image_text') || 'Default work thumbnail' %>
  <%= image_tag default_work_image, class: "canonical-image", alt: alt %>
<% end %>

The logic has changed to say “If we are to use a IIIF Viewer…then render either the viewer OR the media_display.” In the case of toggling off IIIF Print for the tenant, the logic gates will presently result in showing a default work image.

Story

Acceptance Criteria

Proposed Solution

Ideally we should fix IIIF Print's overridden view. However, for expediency and testing, we should copy the IIIF Print view into the repository and then amend the view.

My recommendation is as follows:

<% if presenter.representative_id.present? && presenter.representative_presenter.present? %>
  <% if defined?(viewer) && viewer && presenter.iiif_viewer? %>
    <%= iiif_viewer_display presenter %>
  <% else %>
    <%= render media_display_partial(presenter.representative_presenter), file_set: presenter.representative_presenter %>
  <% end %>
<% else %>
  <% alt = block_for(name: 'default_work_image_text') || 'Default work thumbnail' %>
  <%= image_tag default_work_image, class: "canonical-image", alt: alt %>
<% end %>

The above logic ensures that if we have a representative image we're going to use a logic path that will render that representative.

Notes

Related to:

crisr15 commented 1 year ago

Passes internal QA: Thumbnails now show on works with a PDF if they do not have derivatives created to show in the UV.

Sample work: https://dev.commons-archive.org/concern/generic_works/4616118a-f8e4-4ace-bb9f-00f80e9073ae?locale=en

Image