Sha256: 0015571e325abdfc1ac4816bad10e6e1341856d57e6acf202778cad6f233b1bd

Contents?: true

Size: 1.57 KB

Versions: 16

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

module Spotlight
  # Mixin for adding default configuration to exhibits
  module ExhibitDefaults
    extend ActiveSupport::Concern

    included do
      before_create :build_home_page
      before_create :add_site_reference
      after_create :initialize_config
      after_create :initialize_browse
      after_create :initialize_main_navigation
      after_create :initialize_filter
    end

    protected

    def initialize_filter
      return unless Spotlight::Engine.config.filter_resources_by_exhibit

      filters.create field: default_filter_field, value: default_filter_value
    end

    def initialize_config
      self.blacklight_configuration ||= Spotlight::BlacklightConfiguration.create!
    end

    def initialize_browse
      return if searches.present?

      searches.create title: 'All exhibit items',
                      long_description: 'All items in this exhibit.'
    end

    def initialize_main_navigation
      default_main_navigations.each_with_index do |nav_type, weight|
        main_navigations.create nav_type:, weight:
      end
    end

    def add_site_reference
      self.site ||= Spotlight::Site.instance
    end

    def default_filter_field
      "#{Spotlight::Engine.config.solr_fields.prefix}spotlight_exhibit_slug_#{slug}#{Spotlight::Engine.config.solr_fields.boolean_suffix}"
    end

    # Return a string to work around any ActiveRecord type-casting
    def default_filter_value
      'true'
    end

    private

    def default_main_navigations
      Spotlight::Engine.config.exhibit_main_navigation.dup
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
blacklight-spotlight-5.0.0.pre.alpha3 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-5.0.0.pre.alpha2 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-5.0.0.pre.alpha1 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.7.1 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.7.0 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.6.1 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.6.0 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.5.0 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.4.0 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.3.6 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.3.5 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.3.4 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.3.3 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.3.2 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.3.1 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.3.0 app/models/concerns/spotlight/exhibit_defaults.rb