Sha256: c13452737de2598225a6da78c95849acf6645be71758d487f29b4b95244f486e

Contents?: true

Size: 1.59 KB

Versions: 17

Compression:

Stored size: 1.59 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: nav_type, weight: 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

17 entries across 17 versions & 1 rubygems

Version Path
blacklight-spotlight-4.2.0 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.1.2 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.1.1 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.1.0 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.0.3 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.0.2 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.0.1 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-4.0.0 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-3.6.0.beta10 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-3.6.0.beta9 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-3.6.0.beta8 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-3.6.0.beta7 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-3.6.0.beta6 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-3.6.0.beta5 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-3.6.0.beta4 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-3.6.0.beta3 app/models/concerns/spotlight/exhibit_defaults.rb
blacklight-spotlight-3.6.0.beta1 app/models/concerns/spotlight/exhibit_defaults.rb