Sha256: d8928f59f00bdaf7a5bd2a631219bcdac60f80086684f0a1cc91ea3e9383f858

Contents?: true

Size: 1.87 KB

Versions: 53

Compression:

Stored size: 1.87 KB

Contents

module Spotlight
  ##
  # Helpers to provide default blacklight configuration values
  module BlacklightConfigurationDefaults
    extend ActiveSupport::Concern

    included do
      before_create :setup_defaults
      attr_accessor :skip_default_configuration
    end

    protected

    def setup_defaults
      return if skip_default_configuration

      default_search_fields
      default_sort_fields
      default_view_types
      set_default_per_page
    end

    def default_search_fields
      return true unless search_fields.empty?

      # can't use default_blacklight_config until after the BlacklightConfiguration
      # is created or we run into a circular dependency.
      default_fields = Spotlight::Engine.blacklight_config.search_fields
      self.search_fields = default_fields.each_with_object({}) do |(k, _v), obj|
        obj[k] = { enabled: true }
      end
    end

    def default_sort_fields
      return true unless sort_fields.empty?

      # can't use default_blacklight_config until after the BlacklightConfiguration
      # is created or we run into a circular dependency.
      default_fields = Spotlight::Engine.blacklight_config.sort_fields
      self.sort_fields = default_fields.each_with_object({}) do |(k, _v), obj|
        obj[k] = { enabled: true }
      end
    end

    def default_view_types
      return true unless document_index_view_types.empty?

      # can't use default_blacklight_config until after the BlacklightConfiguration
      # is created or we run into a circular dependency.
      self.document_index_view_types = Spotlight::Engine.blacklight_config.view.keys.map(&:to_s)
    end

    def set_default_per_page
      # can't use default_blacklight_config until after the BlacklightConfiguration
      # is created or we run into a circular dependency.
      self.default_per_page ||= Spotlight::Engine.blacklight_config.per_page.first
    end
  end
end

Version data entries

53 entries across 53 versions & 1 rubygems

Version Path
blacklight-spotlight-1.0.0 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-1.0.0.alpha2 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-1.0.0.alpha1 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.34.1 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.34.0 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.33.3 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.33.2 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.33.1 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.33.0 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.32.0 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.31.0 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.30.0 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.29.1 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.29.0 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.28.3 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.28.2 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.28.1 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.28.0 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.27.0 app/models/concerns/spotlight/blacklight_configuration_defaults.rb
blacklight-spotlight-0.26.1 app/models/concerns/spotlight/blacklight_configuration_defaults.rb