Class: Blacklight::Configuration
- Inherits:
-
OpenStructWithHashAccess
- Object
- OpenStruct
- OpenStructWithHashAccess
- Blacklight::Configuration
- Includes:
- Fields
- Defined in:
- lib/blacklight/configuration.rb,
lib/blacklight/configuration/fields.rb,
lib/blacklight/configuration/context.rb,
lib/blacklight/configuration/view_config.rb
Overview
Blacklight::Configuration holds the configuration for a Blacklight::Controller, including fields to display, facets to show, sort options, and search fields.
Defined Under Namespace
Modules: Fields Classes: Context, DisplayField, FacetField, Field, IndexField, NullField, SearchField, ShowField, SortField, ToolConfig, ViewConfig
Constant Summary collapse
- BASIC_SEARCH_PARAMETERS =
[:q, :qt, :page, :per_page, :search_field, :sort, :controller, :action, :'facet.page', :'facet.prefix', :'facet.sort', :rows, :format, :view].freeze
- ADVANCED_SEARCH_PARAMETERS =
[{ clause: {} }, :op].freeze
Instance Attribute Summary collapse
- #action_mapping ⇒ Hash{Symbol => Blacklight::Configuration::ViewConfig}
- #advanced_search ⇒ #enabled
- #autocomplete_suggester ⇒ String
-
#connection_config ⇒ Class
repository connection configuration.
-
#crawler_detector ⇒ <nil, Proc>
proc for determining whether the session is a crawler/bot ex.: crawler_detector: lambda { |req| req.env =~ /bot/ }.
-
#default_document_solr_params ⇒ Hash
Default values of parameters to send with every single-document request.
- #default_facet_limit ⇒ Integer
- #default_more_limit ⇒ Integer
- #default_per_page ⇒ Integer
-
#default_solr_params ⇒ Hash
Default values of parameters to send with every search request.
-
#document_factory ⇒ Object
A class that builds documents.
-
#document_model ⇒ Class
the model to use for each response document.
-
#document_pagination_params ⇒ Hash
Default values of parameters to send when getting the previous + next documents.
-
#document_solr_path ⇒ String
The url path (relative to the solr base url) to use when requesting only a single document.
-
#document_solr_request_handler ⇒ String
The solr request handler to use when requesting only a single document.
-
#document_unique_id_param ⇒ Symbol
The solr query parameter used for sending the unique identifiers for one or more documents.
- #email ⇒ Blacklight::Configuration::ViewConfig
- #email_fields ⇒ Hash{Symbol=>Blacklight::Configuration::DisplayField}
- #enable_search_bar_autofocus ⇒ Boolean
- #facet_fields ⇒ Hash{Symbol=>Blacklight::Configuration::FacetField}
-
#facet_paginator_class ⇒ Class
Class for paginating long lists of facet fields.
-
#fetch_many_document_params ⇒ Hash
Default values of parameters to send with every multi-document request.
-
#fetch_many_documents_path ⇒ String
The url path (relative to the solr base url) to use when requesting multiple documents by id.
-
#filter_search_state_fields ⇒ Boolean
Have SearchState filter out unknown request parameters.
-
#http_method ⇒ :get, :post
HTTP method used for search.
-
#index ⇒ Blacklight::Configuration::ViewConfig::Index
General configuration for all views.
- #index_fields ⇒ Hash{Symbol=>Blacklight::Configuration::IndexField}
-
#json_solr_path ⇒ String
The url path (relative to the solr base url) to use when using Solr’s JSON Query DSL (as with the advanced search).
-
#max_per_page ⇒ Integer
Maximum number of results to show per page.
- #navbar ⇒ #partials
-
#per_page ⇒ Array<Integer>
Options for the user for number of results to show per page.
- #raw_endpoint ⇒ #enabled
-
#repository_class ⇒ Class
Class for sending and receiving requests from a search index.
-
#response_model ⇒ Class
model that maps index responses to the blacklight response model.
-
#search_builder_class ⇒ Class
Class for converting Blacklight parameters to request parameters for the repository_class.
- #search_fields ⇒ Hash{Symbol=>Blacklight::Configuration::SearchField}
-
#search_history_window ⇒ Integer
how many searches to save in session history.
-
#search_state_fields ⇒ Array<Symbol>
List the request parameters that compose the SearchState.
-
#show ⇒ Blacklight::Configuration::ViewConfig::Show
Additional configuration when displaying a single document.
- #show_fields ⇒ Hash{Symbol=>Blacklight::Configuration::ShowField}
- #sms ⇒ Blacklight::Configuration::ViewConfig
- #sms_fields ⇒ Hash{Symbol=>Blacklight::Configuration::DisplayField}
-
#solr_path ⇒ String
The path to send requests to solr.
- #sort_fields ⇒ Hash{Symbol=>Blacklight::Configuration::SortField}
-
#spell_max ⇒ Integer
Maxiumum number of spelling suggestions to offer.
- #track_search_session ⇒ Boolean
-
#view ⇒ Hash{Symbol => Blacklight::Configuration::ViewConfig}
Configurations for specific types of index views.
Class Method Summary collapse
- .default_configuration(&block) ⇒ Object
- .initialize_default_configuration ⇒ Object
- .initialized_default_configuration? ⇒ Boolean
- .property(key, default: nil) ⇒ Object
Instance Method Summary collapse
- #add_email_field(config_key, hash_or_field_or_array) ⇒ Blacklight::Configuration::DisplayField
- #add_facet_field(config_key, hash_or_field_or_array) ⇒ Blacklight::Configuration::FacetField
-
#add_facet_fields_to_solr_request!(*fields) ⇒ Object
Add any configured facet fields to the default solr parameters hash.
-
#add_field_configuration_to_solr_request!(*fields) ⇒ Object
Add any configured facet fields to the default solr parameters hash.
- #add_index_field(config_key, hash_or_field_or_array) ⇒ Blacklight::Configuration::IndexField
-
#add_nav_action(name, opts = {}) ⇒ Object
Add a partial to the header navbar.
-
#add_results_collection_tool(name, opts = {}) ⇒ Object
Add a tool for the search result list itself.
-
#add_results_document_tool(name, opts = {}) ⇒ Object
Add a partial to the tools for each document in the search results.
- #add_search_field(config_key, hash_or_field_or_array) ⇒ Blacklight::Configuration::SearchField
- #add_show_field(config_key, hash_or_field_or_array) ⇒ Blacklight::Configuration::ShowField
-
#add_show_tools_partial(name, opts = {}) ⇒ Object
Add a partial to the tools when rendering a document.
- #add_sms_field(config_key, hash_or_field_or_array) ⇒ Blacklight::Configuration::DisplayField
- #add_sort_field(config_key, hash_or_field_or_array) ⇒ Blacklight::Configuration::SortField
-
#build(klass) ⇒ Object
(also: #inheritable_copy)
builds a copy for the provided controller class.
-
#configure {|config| ... } ⇒ Blacklight::Configuration
DSL helper.
-
#deep_copy ⇒ Object
Provide a ‘deep copy’ of Blacklight::Configuration that can be modified without effecting the original Blacklight::Configuration instance.
-
#default_search_field ⇒ Blacklight::Configuration::SearchField
Returns default search field, used for simpler display in history, etc.
-
#default_sort_field ⇒ Blacklight::Configuration::SortField
Returns default sort field, used for simpler display in history, etc.
- #default_title_field ⇒ String
-
#facet_configuration_for_field(field) ⇒ Blacklight::Configuration::FacetField
Blacklight facet configuration for the solr field.
-
#facet_field_names(group = nil) ⇒ Array<String>
A list of the facet field names from the configuration.
-
#facet_fields_in_group(group) ⇒ Array<Blacklight::Configuration::FacetField>
A list of facet fields.
-
#facet_group_names ⇒ Array<String>
A list of facet groups.
-
#for_display_type(display_type, &_block) ⇒ Object
Add a section of config that only applies to documents with a matching display type.
- #header_component ⇒ Object
-
#index_fields_for(document_or_display_types) ⇒ Object
Return a list of fields for the index display that should be used for the provided document.
-
#initialize(hash = {}) {|_self| ... } ⇒ Configuration
constructor
A new instance of Configuration.
- #locate_search_builder_class ⇒ Object
-
#logo_link ⇒ String
The destination for the link around the logo in the header.
- #repository ⇒ Blacklight::Repository
-
#show_fields_for(document_or_display_types) ⇒ Object
Return a list of fields for the show page that should be used for the provided document.
-
#view_config(view_type = nil, action_name: :index) ⇒ Blacklight::Configuration::ViewConfig
Get a view configuration for the given view type + action.
Methods included from Fields
Methods inherited from OpenStructWithHashAccess
#deep_dup, #merge, #merge!, #reverse_merge, #select, #sort_by, #sort_by!, #to_h
Constructor Details
#initialize(hash = {}) {|_self| ... } ⇒ Configuration
Returns a new instance of Configuration.
380 381 382 383 384 385 386 387 |
# File 'lib/blacklight/configuration.rb', line 380 def initialize(hash = {}) self.class.initialize_default_configuration unless self.class.initialized_default_configuration? super(self.class.default_values.deep_dup.merge(hash)) yield(self) if block_given? @view_config ||= {} end |
Instance Attribute Details
#action_mapping ⇒ Hash{Symbol => Blacklight::Configuration::ViewConfig}
218 219 220 221 222 223 |
# File 'lib/blacklight/configuration.rb', line 218 property :action_mapping, default: NestedOpenStructWithHashAccess.new( ViewConfig, default: { top_level_config: :index }, show: { top_level_config: :show }, citation: { parent_config: :show } ) |
#advanced_search ⇒ #enabled
312 |
# File 'lib/blacklight/configuration.rb', line 312 property :advanced_search, default: OpenStruct.new(enabled: false) |
#autocomplete_suggester ⇒ String
297 |
# File 'lib/blacklight/configuration.rb', line 297 property :autocomplete_suggester, default: 'mySuggester' |
#connection_config ⇒ Class
repository connection configuration
155 |
# File 'lib/blacklight/configuration.rb', line 155 property :connection_config, default: nil |
#crawler_detector ⇒ <nil, Proc>
proc for determining whether the session is a crawler/bot ex.: crawler_detector: lambda { |req| req.env =~ /bot/ }
292 |
# File 'lib/blacklight/configuration.rb', line 292 property :crawler_detector, default: nil |
#default_document_solr_params ⇒ Hash
Returns Default values of parameters to send with every single-document request.
76 |
# File 'lib/blacklight/configuration.rb', line 76 property :default_document_solr_params, default: {} |
#default_facet_limit ⇒ Integer
281 |
# File 'lib/blacklight/configuration.rb', line 281 property :default_facet_limit, default: 10 |
#default_more_limit ⇒ Integer
285 |
# File 'lib/blacklight/configuration.rb', line 285 property :default_more_limit, default: 20 |
#default_per_page ⇒ Integer
268 |
# File 'lib/blacklight/configuration.rb', line 268 property :default_per_page, default: nil |
#default_solr_params ⇒ Hash
Returns Default values of parameters to send with every search request.
55 |
# File 'lib/blacklight/configuration.rb', line 55 property :default_solr_params, default: {} |
#document_factory ⇒ Object
A class that builds documents
125 |
# File 'lib/blacklight/configuration.rb', line 125 property :document_factory, default: nil |
#document_model ⇒ Class
the model to use for each response document
133 |
# File 'lib/blacklight/configuration.rb', line 133 property :document_model, default: nil |
#document_pagination_params ⇒ Hash
Returns Default values of parameters to send when getting the previous + next documents.
87 |
# File 'lib/blacklight/configuration.rb', line 87 property :document_pagination_params, default: {} |
#document_solr_path ⇒ String
Returns The url path (relative to the solr base url) to use when requesting only a single document.
65 |
# File 'lib/blacklight/configuration.rb', line 65 property :document_solr_path, default: 'get' |
#document_solr_request_handler ⇒ String
Returns The solr request handler to use when requesting only a single document.
61 |
# File 'lib/blacklight/configuration.rb', line 61 property :document_solr_request_handler, default: nil |
#document_unique_id_param ⇒ Symbol
Returns The solr query parameter used for sending the unique identifiers for one or more documents.
73 |
# File 'lib/blacklight/configuration.rb', line 73 property :document_unique_id_param, default: :ids |
#email ⇒ Blacklight::Configuration::ViewConfig
233 |
# File 'lib/blacklight/configuration.rb', line 233 property :email, default: ViewConfig.new |
#email_fields ⇒ Hash{Symbol=>Blacklight::Configuration::DisplayField}
378 |
# File 'lib/blacklight/configuration.rb', line 378 define_field_access :email_field, Blacklight::Configuration::DisplayField |
#enable_search_bar_autofocus ⇒ Boolean
317 |
# File 'lib/blacklight/configuration.rb', line 317 property :enable_search_bar_autofocus, default: false |
#facet_fields ⇒ Hash{Symbol=>Blacklight::Configuration::FacetField}
360 |
# File 'lib/blacklight/configuration.rb', line 360 define_field_access :facet_field, Blacklight::Configuration::FacetField |
#facet_paginator_class ⇒ Class
Class for paginating long lists of facet fields
146 |
# File 'lib/blacklight/configuration.rb', line 146 property :facet_paginator_class, default: nil |
#fetch_many_document_params ⇒ Hash
Returns Default values of parameters to send with every multi-document request.
84 |
# File 'lib/blacklight/configuration.rb', line 84 property :fetch_many_document_params, default: {} |
#fetch_many_documents_path ⇒ String
Returns The url path (relative to the solr base url) to use when requesting multiple documents by id.
80 |
# File 'lib/blacklight/configuration.rb', line 80 property :fetch_many_documents_path, default: nil |
#filter_search_state_fields ⇒ Boolean
Have SearchState filter out unknown request parameters
334 |
# File 'lib/blacklight/configuration.rb', line 334 property :filter_search_state_fields, default: false |
#http_method ⇒ :get, :post
Returns HTTP method used for search.
49 |
# File 'lib/blacklight/configuration.rb', line 49 property :http_method, default: :get |
#index ⇒ Blacklight::Configuration::ViewConfig::Index
General configuration for all views
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/blacklight/configuration.rb', line 171 property :index, default: ViewConfig::Index.new( # document presenter class used by helpers and views document_presenter_class: nil, # component class used to render a document document_component: nil, # solr field to use to render a document title title_field: nil, # solr field to use to render format-specific partials display_type_field: nil, # partials to render for each document(see #render_document_partials) partials: [:index_header, :thumbnail, :index], document_actions: NestedOpenStructWithHashAccess.new(ToolConfig), collection_actions: NestedOpenStructWithHashAccess.new(ToolConfig), # what field, if any, to use to render grouped results group: false, # additional response formats for search results respond_to: OpenStructWithHashAccess.new, # component class used to render the facet grouping facet_group_component: nil, # component class used to render search constraints constraints_component: nil, # component class used to render the search bar search_bar_component: nil, # pagination parameters to pass to kaminari pagination_options: Blacklight::Engine.config.blacklight..dup ) |
#index_fields ⇒ Hash{Symbol=>Blacklight::Configuration::IndexField}
363 |
# File 'lib/blacklight/configuration.rb', line 363 define_field_access :index_field, Blacklight::Configuration::IndexField |
#json_solr_path ⇒ String
Returns The url path (relative to the solr base url) to use when using Solr’s JSON Query DSL (as with the advanced search).
69 |
# File 'lib/blacklight/configuration.rb', line 69 property :json_solr_path, default: nil |
#max_per_page ⇒ Integer
Maximum number of results to show per page
261 |
# File 'lib/blacklight/configuration.rb', line 261 property :max_per_page, default: 100 |
#navbar ⇒ #partials
166 |
# File 'lib/blacklight/configuration.rb', line 166 property :navbar, default: OpenStructWithHashAccess.new(partials: {}) |
#per_page ⇒ Array<Integer>
Options for the user for number of results to show per page
265 |
# File 'lib/blacklight/configuration.rb', line 265 property :per_page, default: [10, 20, 50, 100] |
#raw_endpoint ⇒ #enabled
302 |
# File 'lib/blacklight/configuration.rb', line 302 property :raw_endpoint, default: OpenStructWithHashAccess.new(enabled: false) |
#repository_class ⇒ Class
Returns Class for sending and receiving requests from a search index.
94 |
# File 'lib/blacklight/configuration.rb', line 94 property :repository_class, default: nil |
#response_model ⇒ Class
model that maps index responses to the blacklight response model
113 |
# File 'lib/blacklight/configuration.rb', line 113 property :response_model, default: nil |
#search_builder_class ⇒ Class
Returns class for converting Blacklight parameters to request parameters for the repository_class.
101 |
# File 'lib/blacklight/configuration.rb', line 101 property :search_builder_class, default: nil |
#search_fields ⇒ Hash{Symbol=>Blacklight::Configuration::SearchField}
369 |
# File 'lib/blacklight/configuration.rb', line 369 define_field_access :search_field, Blacklight::Configuration::SearchField |
#search_history_window ⇒ Integer
how many searches to save in session history
277 |
# File 'lib/blacklight/configuration.rb', line 277 property :search_history_window, default: 100 |
#search_state_fields ⇒ Array<Symbol>
List the request parameters that compose the SearchState. If you use a plugin that adds to the search state, then you can add the parameters by modifiying this field.
327 |
# File 'lib/blacklight/configuration.rb', line 327 property :search_state_fields, default: BASIC_SEARCH_PARAMETERS + ADVANCED_SEARCH_PARAMETERS |
#show ⇒ Blacklight::Configuration::ViewConfig::Show
Additional configuration when displaying a single document
201 202 203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/blacklight/configuration.rb', line 201 property :show, default: ViewConfig::Show.new( # document presenter class used by helpers and views document_presenter_class: nil, document_component: nil, display_type_field: nil, # Default route parameters for 'show' requests. # Set this to a hash with additional arguments to merge into the route, # or set `controller: :current` to route to the current controller. route: nil, # partials to render for each document(see #render_document_partials) partials: [:show_header, :show], document_actions: NestedOpenStructWithHashAccess.new(ToolConfig) ) |
#show_fields ⇒ Hash{Symbol=>Blacklight::Configuration::ShowField}
366 |
# File 'lib/blacklight/configuration.rb', line 366 define_field_access :show_field, Blacklight::Configuration::ShowField |
#sms ⇒ Blacklight::Configuration::ViewConfig
228 |
# File 'lib/blacklight/configuration.rb', line 228 property :sms, default: ViewConfig.new |
#sms_fields ⇒ Hash{Symbol=>Blacklight::Configuration::DisplayField}
375 |
# File 'lib/blacklight/configuration.rb', line 375 define_field_access :sms_field, Blacklight::Configuration::DisplayField |
#solr_path ⇒ String
Returns The path to send requests to solr.
52 |
# File 'lib/blacklight/configuration.rb', line 52 property :solr_path, default: 'select' |
#sort_fields ⇒ Hash{Symbol=>Blacklight::Configuration::SortField}
372 |
# File 'lib/blacklight/configuration.rb', line 372 define_field_access :sort_field, Blacklight::Configuration::SortField |
#spell_max ⇒ Integer
Maxiumum number of spelling suggestions to offer
256 |
# File 'lib/blacklight/configuration.rb', line 256 property :spell_max, default: 5 |
#track_search_session ⇒ Boolean
307 |
# File 'lib/blacklight/configuration.rb', line 307 property :track_search_session, default: true |
#view ⇒ Hash{Symbol => Blacklight::Configuration::ViewConfig}
Configurations for specific types of index views
238 239 240 241 242 243 244 245 246 247 248 |
# File 'lib/blacklight/configuration.rb', line 238 property :view, default: NestedOpenStructWithHashAccess.new(ViewConfig, list: {}, atom: { if: false, # by default, atom should not show up as an alternative view partials: [:document], summary_partials: [:index] }, rss: { if: false, # by default, rss should not show up as an alternative view partials: [:document] }) |
Class Method Details
.default_configuration(&block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/blacklight/configuration.rb', line 15 def default_configuration(&block) @default_configurations ||= [] if block @default_configurations << block block.call if @default_configuration_initialized end @default_configurations end |
.initialize_default_configuration ⇒ Object
27 28 29 30 |
# File 'lib/blacklight/configuration.rb', line 27 def initialize_default_configuration @default_configurations&.map(&:call) @default_configuration_initialized = true end |
.initialized_default_configuration? ⇒ Boolean
32 33 34 |
# File 'lib/blacklight/configuration.rb', line 32 def initialized_default_configuration? @default_configuration_initialized end |
.property(key, default: nil) ⇒ Object
11 12 13 |
# File 'lib/blacklight/configuration.rb', line 11 def property(key, default: nil) default_values[key] = default end |
Instance Method Details
#add_email_field(config_key, options) ⇒ Blacklight::Configuration::DisplayField #add_email_field(config_key, field) ⇒ Blacklight::Configuration::DisplayField #add_email_field(config_key, array) ⇒ Blacklight::Configuration::DisplayField
378 |
# File 'lib/blacklight/configuration.rb', line 378 define_field_access :email_field, Blacklight::Configuration::DisplayField |
#add_facet_field(config_key, options) ⇒ Blacklight::Configuration::FacetField #add_facet_field(config_key, field) ⇒ Blacklight::Configuration::FacetField #add_facet_field(config_key, array) ⇒ Blacklight::Configuration::FacetField
360 |
# File 'lib/blacklight/configuration.rb', line 360 define_field_access :facet_field, Blacklight::Configuration::FacetField |
#add_facet_fields_to_solr_request! ⇒ Object #add_facet_fields_to_solr_request!(field, field, etc) ⇒ Object
Add any configured facet fields to the default solr parameters hash
462 463 464 465 466 467 468 |
# File 'lib/blacklight/configuration.rb', line 462 def add_facet_fields_to_solr_request!(*fields) if fields.empty? self.add_facet_fields_to_solr_request = true else facet_fields.slice(*fields).each_value { |v| v.include_in_request = true } end end |
#add_field_configuration_to_solr_request! ⇒ Object #add_field_configuration_to_solr_request!(field, field, etc) ⇒ Object
Add any configured facet fields to the default solr parameters hash
475 476 477 478 479 480 481 482 483 |
# File 'lib/blacklight/configuration.rb', line 475 def add_field_configuration_to_solr_request!(*fields) if fields.empty? self.add_field_configuration_to_solr_request = true else index_fields.slice(*fields).each_value { |v| v.include_in_request = true } show_fields.slice(*fields).each_value { |v| v.include_in_request = true } facet_fields.slice(*fields).each_value { |v| v.include_in_request = true } end end |
#add_index_field(config_key, options) ⇒ Blacklight::Configuration::IndexField #add_index_field(config_key, field) ⇒ Blacklight::Configuration::IndexField #add_index_field(config_key, array) ⇒ Blacklight::Configuration::IndexField
363 |
# File 'lib/blacklight/configuration.rb', line 363 define_field_access :index_field, Blacklight::Configuration::IndexField |
#add_nav_action(name, opts = {}) ⇒ Object
Add a partial to the header navbar
563 564 565 |
# File 'lib/blacklight/configuration.rb', line 563 def add_nav_action(name, opts = {}) add_action(.partials, name, opts) end |
#add_results_collection_tool(name, opts = {}) ⇒ Object
Add a tool for the search result list itself
551 552 553 |
# File 'lib/blacklight/configuration.rb', line 551 def add_results_collection_tool(name, opts = {}) add_action(index.collection_actions, name, opts) end |
#add_results_document_tool(name, opts = {}) ⇒ Object
Add a partial to the tools for each document in the search results.
557 558 559 |
# File 'lib/blacklight/configuration.rb', line 557 def add_results_document_tool(name, opts = {}) add_action(index.document_actions, name, opts) end |
#add_search_field(config_key, options) ⇒ Blacklight::Configuration::SearchField #add_search_field(config_key, field) ⇒ Blacklight::Configuration::SearchField #add_search_field(config_key, array) ⇒ Blacklight::Configuration::SearchField
369 |
# File 'lib/blacklight/configuration.rb', line 369 define_field_access :search_field, Blacklight::Configuration::SearchField |
#add_show_field(config_key, options) ⇒ Blacklight::Configuration::ShowField #add_show_field(config_key, field) ⇒ Blacklight::Configuration::ShowField #add_show_field(config_key, array) ⇒ Blacklight::Configuration::ShowField
366 |
# File 'lib/blacklight/configuration.rb', line 366 define_field_access :show_field, Blacklight::Configuration::ShowField |
#add_show_tools_partial(name, opts = {}) ⇒ Object
Add a partial to the tools when rendering a document.
542 543 544 545 546 |
# File 'lib/blacklight/configuration.rb', line 542 def add_show_tools_partial(name, opts = {}) opts[:partial] ||= 'document_action' add_action(show.document_actions, name, opts) klass && ActionBuilder.new(klass, name, opts).build end |
#add_sms_field(config_key, options) ⇒ Blacklight::Configuration::DisplayField #add_sms_field(config_key, field) ⇒ Blacklight::Configuration::DisplayField #add_sms_field(config_key, array) ⇒ Blacklight::Configuration::DisplayField
375 |
# File 'lib/blacklight/configuration.rb', line 375 define_field_access :sms_field, Blacklight::Configuration::DisplayField |
#add_sort_field(config_key, options) ⇒ Blacklight::Configuration::SortField #add_sort_field(config_key, field) ⇒ Blacklight::Configuration::SortField #add_sort_field(config_key, array) ⇒ Blacklight::Configuration::SortField
372 |
# File 'lib/blacklight/configuration.rb', line 372 define_field_access :sort_field, Blacklight::Configuration::SortField |
#build(klass) ⇒ Object Also known as: inheritable_copy
builds a copy for the provided controller class
496 497 498 499 500 |
# File 'lib/blacklight/configuration.rb', line 496 def build(klass) deep_copy.tap do |conf| conf.klass = klass end end |
#configure {|config| ... } ⇒ Blacklight::Configuration
DSL helper
403 404 405 406 |
# File 'lib/blacklight/configuration.rb', line 403 def configure yield self if block_given? self end |
#deep_copy ⇒ Object
Provide a ‘deep copy’ of Blacklight::Configuration that can be modified without effecting the original Blacklight::Configuration instance.
Note: Rails provides ‘#deep_dup`, but it aggressively `#dup`’s class names too, turning them into anonymous class instances.
490 491 492 |
# File 'lib/blacklight/configuration.rb', line 490 def deep_copy deep_transform_values_in_object(self, &method(:_deep_copy)) end |
#default_search_field ⇒ Blacklight::Configuration::SearchField
Returns default search field, used for simpler display in history, etc. if not set, defaults to first defined search field
411 412 413 414 |
# File 'lib/blacklight/configuration.rb', line 411 def default_search_field field = super || search_fields.values.find { |f| f.default == true } field || search_fields.values.first end |
#default_sort_field ⇒ Blacklight::Configuration::SortField
Returns default sort field, used for simpler display in history, etc. if not set, defaults to first defined sort field
419 420 421 422 |
# File 'lib/blacklight/configuration.rb', line 419 def default_sort_field field = super || sort_fields.values.find { |f| f.default == true } field || sort_fields.values.first end |
#default_title_field ⇒ String
425 426 427 |
# File 'lib/blacklight/configuration.rb', line 425 def default_title_field document_model.unique_key || 'id' end |
#facet_configuration_for_field(field) ⇒ Blacklight::Configuration::FacetField
Returns Blacklight facet configuration for the solr field.
431 432 433 434 435 436 437 438 |
# File 'lib/blacklight/configuration.rb', line 431 def facet_configuration_for_field(field) # short-circuit on the common case, where the solr field name and the blacklight field name are the same. return facet_fields[field] if facet_fields[field] && facet_fields[field].field == field # Find the facet field configuration for the solr field, or provide a default. facet_fields.values.find { |v| v.field.to_s == field.to_s } || FacetField.new(field: field).normalize! end |
#facet_field_names(group = nil) ⇒ Array<String>
Returns a list of the facet field names from the configuration.
442 443 444 |
# File 'lib/blacklight/configuration.rb', line 442 def facet_field_names(group = nil) facet_fields_in_group(group).map(&:field) end |
#facet_fields_in_group(group) ⇒ Array<Blacklight::Configuration::FacetField>
Returns a list of facet fields.
448 449 450 |
# File 'lib/blacklight/configuration.rb', line 448 def facet_fields_in_group(group) facet_fields.values.select { |opts| group == opts[:group] } end |
#facet_group_names ⇒ Array<String>
Returns a list of facet groups.
453 454 455 |
# File 'lib/blacklight/configuration.rb', line 453 def facet_group_names facet_fields.map { |_facet, opts| opts[:group] }.uniq end |
#for_display_type(display_type, &_block) ⇒ Object
Add a section of config that only applies to documents with a matching display type
569 570 571 572 573 574 575 |
# File 'lib/blacklight/configuration.rb', line 569 def for_display_type display_type, &_block self.fields_for_type ||= {} (fields_for_type[display_type] ||= self.class.new).tap do |conf| yield(conf) if block_given? end end |
#header_component ⇒ Object
40 41 42 |
# File 'lib/blacklight/configuration.rb', line 40 def header_component super || Blacklight::HeaderComponent end |
#index_fields_for(document_or_display_types) ⇒ Object
Return a list of fields for the index display that should be used for the provided document. This respects any configuration made using for_display_type
580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 |
# File 'lib/blacklight/configuration.rb', line 580 def index_fields_for(document_or_display_types) display_types = if document_or_display_types.is_a? Blacklight::Document Deprecation.warn self, "Calling index_fields_for with a #{document_or_display_types.class} is deprecated and will be removed in Blacklight 8. Pass the display type instead." document_or_display_types[index.display_type_field || 'format'] else document_or_display_types end fields = {}.with_indifferent_access Array.wrap(display_types).each do |display_type| fields = fields.merge(for_display_type(display_type).index_fields) end fields.merge(index_fields) end |
#locate_search_builder_class ⇒ Object
106 107 108 |
# File 'lib/blacklight/configuration.rb', line 106 def locate_search_builder_class ::SearchBuilder end |
#logo_link ⇒ String
Returns The destination for the link around the logo in the header.
395 396 397 |
# File 'lib/blacklight/configuration.rb', line 395 def logo_link super || Rails.application.routes.url_helpers.root_path end |
#repository ⇒ Blacklight::Repository
390 391 392 |
# File 'lib/blacklight/configuration.rb', line 390 def repository repository_class.new(self) end |
#show_fields_for(document_or_display_types) ⇒ Object
Return a list of fields for the show page that should be used for the provided document. This respects any configuration made using for_display_type
600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 |
# File 'lib/blacklight/configuration.rb', line 600 def show_fields_for(document_or_display_types) display_types = if document_or_display_types.is_a? Blacklight::Document Deprecation.warn self, "Calling show_fields_for with a #{document_or_display_types.class} is deprecated and will be removed in Blacklight 8. Pass the display type instead." document_or_display_types[show.display_type_field || 'format'] else document_or_display_types end unless display_types.respond_to?(:each) Deprecation.warn self, "Calling show_fields_for with a scalar value is deprecated. It must receive an Enumerable." display_types = Array.wrap(display_types) end fields = {}.with_indifferent_access display_types.each do |display_type| fields = fields.merge(for_display_type(display_type).show_fields) end fields.merge(show_fields) end |
#view_config(view_type = nil, action_name: :index) ⇒ Blacklight::Configuration::ViewConfig
Get a view configuration for the given view type + action. The effective view configuration is inherited from:
-
the configuration from blacklight_config.view with the key ‘view_type`
-
the configuration from blacklight_config.action_mapping with the key ‘action_name`
-
any parent config for the action map result above
-
the action_mapping default configuration
-
the top-level index/show view configuration
513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 |
# File 'lib/blacklight/configuration.rb', line 513 def view_config(view_type = nil, action_name: :index) view_type &&= view_type.to_sym action_name &&= action_name.to_sym action_name ||= :index if view_type == :show action_name = view_type view_type = nil end @view_config[[view_type, action_name]] ||= begin if view_type.nil? action_config(action_name) else base_config = action_config(action_name) base_config.merge(view.fetch(view_type, {})) end end end |