Sha256: a2e15f3f169a010885361232f1d4c7cd17121f9bccd8b24f8115da5b5506dca1

Contents?: true

Size: 1.22 KB

Versions: 14

Compression:

Stored size: 1.22 KB

Contents

module CurationConcerns
  module FilterByType
    extend ActiveSupport::Concern

    included do
      self.default_processor_chain += [:filter_models]
    end

    # Add queries that excludes everything except for works and collections
    def filter_models(solr_parameters)
      solr_parameters[:fq] ||= []
      solr_parameters[:fq] << '{!terms f=has_model_ssim}' + (work_clauses + collection_clauses).join(',')
    end

    protected

      def only_collections?
        generic_type_field.include?('Collection')
      end

      def only_works?
        generic_type_field.include?('Work')
      end

    private

      def generic_type_field
        Array.wrap(blacklight_params.fetch(:f, {}).fetch(:generic_type_sim, []))
      end

      # Override this method if you want to limit some of the registered
      # types from appearing in search results
      # @returns [Array<Class>] the list of work types to include in searches
      def work_types
        CurationConcerns.config.curation_concerns
      end

      def work_clauses
        return [] if only_collections?
        work_types.map(&:to_class_uri)
      end

      def collection_clauses
        return [] if only_works?
        [::Collection.to_class_uri]
      end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
curation_concerns-1.5.0 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.4.0 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.3.3 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.3.2 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.3.1 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.3.0 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.2.0 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.1.2 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.1.1 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.1.0 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.0.0 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.0.0.beta10 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.0.0.beta9 app/search_builders/curation_concerns/filter_by_type.rb
curation_concerns-1.0.0.beta8 app/search_builders/curation_concerns/filter_by_type.rb