Sha256: b00db62cd73e6d1dddc2de1ce0365d84fc8e81b56d040f9a24aedf8c7d6645b5

Contents?: true

Size: 1.74 KB

Versions: 7

Compression:

Stored size: 1.74 KB

Contents

# frozen_string_literal: true

module Spotlight
  ##
  # Featured images for browse categories, feature pages, and exhibits
  class FeaturedImage < ActiveRecord::Base
    mount_uploader :image, Spotlight::FeaturedImageUploader

    after_save do
      if image.present?
        image.cache! unless image.cached?
        image.store!
      end
    end

    after_create :set_tilesource_from_uploaded_resource

    def iiif_url
      return unless iiif_service_base.present?

      [iiif_service_base, iiif_region || 'full', image_size.join(','), '0', 'default.jpg'].join('/')
    end

    # This is used to fetch images given the URL field in the CSV uploads
    # If the image is local, this step will fail, which is okay since the only
    # consumer is CSV uploads and the URL is intended to be remote
    def remote_image_url=(url)
      super url unless url.starts_with? '/'
    end

    def document
      return unless document_global_id && source == 'exhibit'

      @document = nil if @document && document_global_id != @document.to_global_id.to_s

      @document ||= GlobalID::Locator.locate document_global_id
    rescue Blacklight::Exceptions::RecordNotFound => e
      Rails.logger.info("Exception fetching record by id: #{document_global_id}")
      Rails.logger.info(e)

      nil
    end

    def file_present?
      image.file.present?
    end

    private

    def set_tilesource_from_uploaded_resource
      return if iiif_tilesource

      riiif = Riiif::Engine.routes.url_helpers
      self.iiif_tilesource = riiif.info_path(id)
      save
    end

    def image_size
      Spotlight::Engine.config.featured_image_thumb_size
    end

    def iiif_service_base
      return unless iiif_tilesource

      iiif_tilesource.sub('/info.json', '')
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
blacklight-spotlight-3.0.0.alpha.9 app/models/spotlight/featured_image.rb
blacklight-spotlight-3.0.0.alpha.8 app/models/spotlight/featured_image.rb
blacklight-spotlight-3.0.0.alpha.7 app/models/spotlight/featured_image.rb
blacklight-spotlight-3.0.0.alpha.6 app/models/spotlight/featured_image.rb
blacklight-spotlight-3.0.0.alpha.5 app/models/spotlight/featured_image.rb
blacklight-spotlight-3.0.0.alpha.4 app/models/spotlight/featured_image.rb
blacklight-spotlight-3.0.0.alpha.3 app/models/spotlight/featured_image.rb