blacklight 5.9.4 → 5.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/VERSION +1 -1
  4. data/app/assets/stylesheets/blacklight/_facets.scss +11 -10
  5. data/app/helpers/blacklight/blacklight_helper_behavior.rb +14 -14
  6. data/app/helpers/blacklight/configuration_helper_behavior.rb +16 -10
  7. data/app/helpers/blacklight/facets_helper_behavior.rb +15 -14
  8. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  9. data/app/models/bookmark.rb +1 -4
  10. data/app/models/search.rb +3 -6
  11. data/app/views/catalog/_facet_layout.html.erb +2 -2
  12. data/app/views/catalog/_facet_limit.html.erb +5 -3
  13. data/app/views/catalog/_facet_pivot.html.erb +4 -4
  14. data/app/views/catalog/_home_text.html.erb +8 -48
  15. data/app/views/catalog/_index_default.html.erb +3 -3
  16. data/app/views/catalog/_show_default.html.erb +3 -3
  17. data/app/views/catalog/_sms_form.html.erb +1 -1
  18. data/app/views/catalog/facet.html.erb +1 -1
  19. data/blacklight.gemspec +1 -1
  20. data/config/jetty.yml +0 -3
  21. data/config/locales/blacklight.de.yml +2 -0
  22. data/config/locales/blacklight.en.yml +2 -0
  23. data/config/locales/blacklight.es.yml +2 -0
  24. data/config/locales/blacklight.fr.yml +2 -0
  25. data/config/locales/blacklight.pt-BR.yml +2 -0
  26. data/lib/blacklight.rb +70 -26
  27. data/lib/blacklight/abstract_repository.rb +29 -0
  28. data/lib/blacklight/base.rb +7 -7
  29. data/lib/blacklight/bookmarks.rb +5 -5
  30. data/lib/blacklight/catalog.rb +34 -19
  31. data/lib/blacklight/catalog/search_context.rb +1 -1
  32. data/lib/blacklight/configuration.rb +112 -46
  33. data/lib/blacklight/configuration/facet_field.rb +9 -7
  34. data/lib/blacklight/configuration/field.rb +27 -0
  35. data/lib/blacklight/configuration/fields.rb +25 -20
  36. data/lib/blacklight/configuration/search_field.rb +6 -8
  37. data/lib/blacklight/configuration/solr_field.rb +3 -18
  38. data/lib/blacklight/configuration/sort_field.rb +6 -7
  39. data/lib/blacklight/document.rb +156 -0
  40. data/lib/blacklight/document/dublin_core.rb +41 -0
  41. data/lib/blacklight/document/email.rb +16 -0
  42. data/lib/blacklight/document/export.rb +107 -0
  43. data/lib/blacklight/document/extensions.rb +56 -0
  44. data/lib/blacklight/document/schema_org.rb +7 -0
  45. data/lib/blacklight/document/semantic_fields.rb +51 -0
  46. data/lib/blacklight/document/sms.rb +14 -0
  47. data/lib/blacklight/document_presenter.rb +3 -3
  48. data/lib/blacklight/exceptions.rb +9 -2
  49. data/lib/blacklight/facet.rb +21 -16
  50. data/lib/blacklight/request_builders.rb +60 -284
  51. data/lib/blacklight/routes.rb +1 -1
  52. data/lib/blacklight/search_builder.rb +130 -0
  53. data/lib/blacklight/search_helper.rb +316 -0
  54. data/lib/blacklight/solr.rb +1 -0
  55. data/lib/blacklight/solr/document.rb +4 -187
  56. data/lib/blacklight/solr/document/dublin_core.rb +3 -37
  57. data/lib/blacklight/solr/document/email.rb +4 -13
  58. data/lib/blacklight/solr/document/export.rb +3 -103
  59. data/lib/blacklight/solr/document/extensions.rb +4 -52
  60. data/lib/blacklight/solr/document/more_like_this.rb +1 -1
  61. data/lib/blacklight/solr/document/schema_org.rb +4 -4
  62. data/lib/blacklight/solr/document/sms.rb +4 -11
  63. data/lib/blacklight/solr/facet_paginator.rb +2 -2
  64. data/lib/blacklight/solr/search_builder.rb +264 -0
  65. data/lib/blacklight/solr_helper.rb +6 -261
  66. data/lib/blacklight/solr_repository.rb +30 -24
  67. data/lib/blacklight/solr_response.rb +3 -3
  68. data/lib/blacklight/user.rb +1 -2
  69. data/lib/blacklight/utils.rb +0 -23
  70. data/lib/generators/blacklight/controller_generator.rb +38 -0
  71. data/lib/generators/blacklight/document_generator.rb +20 -0
  72. data/lib/generators/blacklight/install_generator.rb +38 -39
  73. data/lib/generators/blacklight/models_generator.rb +2 -62
  74. data/lib/generators/blacklight/templates/catalog_controller.rb +3 -4
  75. data/lib/generators/blacklight/templates/config/{solr.yml → blacklight.yml} +3 -0
  76. data/lib/generators/blacklight/templates/config/jetty.yml +0 -3
  77. data/lib/generators/blacklight/templates/solr_document.rb +6 -6
  78. data/lib/generators/blacklight/test_support_generator.rb +1 -6
  79. data/lib/generators/blacklight/user_generator.rb +59 -0
  80. data/lib/railties/blacklight.rake +16 -7
  81. data/spec/controllers/catalog_controller_spec.rb +9 -15
  82. data/spec/features/facets_spec.rb +8 -0
  83. data/spec/helpers/configuration_helper_spec.rb +6 -13
  84. data/spec/helpers/facets_helper_spec.rb +3 -2
  85. data/spec/lib/blacklight/configuration_spec.rb +11 -38
  86. data/spec/lib/blacklight/{solr/document → document}/dublin_core_spec.rb +4 -4
  87. data/spec/lib/blacklight/{solr/document → document}/email_spec.rb +2 -2
  88. data/spec/lib/blacklight/{solr/document → document}/sms_spec.rb +2 -2
  89. data/spec/lib/blacklight/search_builder_spec.rb +145 -0
  90. data/spec/lib/blacklight/search_helper_spec.rb +775 -0
  91. data/spec/lib/blacklight/solr/document/more_like_this_spec.rb +1 -1
  92. data/spec/lib/blacklight/solr/search_builder_spec.rb +561 -0
  93. data/spec/lib/blacklight/solr_helper_spec.rb +5 -1291
  94. data/spec/lib/blacklight/solr_repository_spec.rb +13 -13
  95. data/spec/models/record_mailer_spec.rb +2 -2
  96. data/spec/spec_helper.rb +1 -0
  97. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  98. data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -1
  99. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +2 -2
  100. data/spec/views/catalog/index.atom.builder_spec.rb +1 -1
  101. data/tasks/blacklight.rake +1 -1
  102. data/template.demo.rb +1 -1
  103. metadata +33 -45
  104. data/doc/Adding-new-document-actions.md +0 -94
  105. data/doc/Atom-Responses.md +0 -90
  106. data/doc/Blacklight-Add-ons.md +0 -23
  107. data/doc/Blacklight-configuration.md +0 -411
  108. data/doc/Blacklight-on-Heroku.md +0 -100
  109. data/doc/Blacklight-out-of-the-box.md +0 -47
  110. data/doc/Bookmarks.md +0 -1
  111. data/doc/Code4Lib-2014.md +0 -94
  112. data/doc/Configuration---Facet-Fields.md +0 -130
  113. data/doc/Configuration---Results-View.md +0 -224
  114. data/doc/Configuration---Solr-fields.md +0 -106
  115. data/doc/Configuring-and-Customizing-Blacklight.md +0 -257
  116. data/doc/Configuring-rails-routes.md +0 -13
  117. data/doc/Contributing-to-Blacklight.md +0 -43
  118. data/doc/Examples.md +0 -120
  119. data/doc/Extending-or-Modifying-Blacklight-Search-Behavior.md +0 -141
  120. data/doc/Home.md +0 -100
  121. data/doc/How-to-release-a-version.md +0 -45
  122. data/doc/Indexing-your-data-into-solr.md +0 -36
  123. data/doc/Internationalization.md +0 -32
  124. data/doc/JSON-API.md +0 -83
  125. data/doc/Pagination.md +0 -52
  126. data/doc/Providing-your-own-view-templates.md +0 -69
  127. data/doc/Quickstart.md +0 -153
  128. data/doc/README_SOLR.md +0 -245
  129. data/doc/Saved-Searches.md +0 -5
  130. data/doc/Solr-Configuration.md +0 -154
  131. data/doc/Sunspot-for-indexing.md +0 -46
  132. data/doc/Support.md +0 -33
  133. data/doc/Theming.md +0 -62
  134. data/doc/Understanding-Rails-and-Blacklight.md +0 -75
  135. data/doc/User-Authentication.md +0 -60
  136. data/doc/_Sidebar.md +0 -9
  137. data/doc/testing.md +0 -58
@@ -102,7 +102,7 @@ module Blacklight::Catalog::SearchContext
102
102
  @next_document = documents.last
103
103
  end
104
104
  rescue Blacklight::Exceptions::InvalidRequest => e
105
- logger.warn "Unable to setup next and previous documents: #{e}"
105
+ Rails.logger.warn "Unable to setup next and previous documents: #{e}"
106
106
  end
107
107
 
108
108
  end
@@ -8,11 +8,14 @@ module Blacklight
8
8
  require 'blacklight/configuration/tool_config'
9
9
  # XXX this isn't very pretty, but it works.
10
10
  require 'blacklight/configuration/fields'
11
+ require 'blacklight/configuration/field'
11
12
  require 'blacklight/configuration/solr_field'
12
13
  require 'blacklight/configuration/search_field'
13
14
  require 'blacklight/configuration/facet_field'
14
15
  require 'blacklight/configuration/sort_field'
15
16
  include Fields
17
+ extend Deprecation
18
+ self.deprecation_horizon = 'blacklight 6.0'
16
19
 
17
20
  # Set up Blacklight::Configuration.default_values to contain
18
21
  # the basic, required Blacklight fields
@@ -21,52 +24,79 @@ module Blacklight
21
24
 
22
25
  @default_values ||= begin
23
26
  {
27
+ ##
28
+ # === Search request configuration
29
+ ##
24
30
  # HTTP method to use when making requests to solr; valid
25
31
  # values are :get and :post.
26
- :http_method => :get,
32
+ http_method: :get,
27
33
  # The solr request handler ('qt') to use for search requests
28
- :qt => 'search',
34
+ qt: 'search',
29
35
  # The path to send requests to solr.
30
- :solr_path => 'select',
36
+ solr_path: 'select',
31
37
  # Default values of parameters to send with every search request
32
- :default_solr_params => {},
33
- # the model to load solr response documents into; set below in #initialize_default_values
34
- :solr_document_model => nil,
35
- :solr_response_model => nil,
38
+ default_solr_params: {},
39
+ ## deprecated; use add_facet_field :include_in_request instead;
40
+ # if this is configured true, all facets will be included in the solr request
41
+ # unless explicitly disabled.
42
+ add_facet_fields_to_solr_request: false,
43
+ ## deprecated; use add_index_field :include_in_request instead;
44
+ # if this is configured true, all show and index will be included in the solr request
45
+ # unless explicitly disabled.
46
+ add_field_configuration_to_solr_request: false,
47
+ ##
48
+ # === Single document request configuration
49
+ ##
36
50
  # The solr rqeuest handler to use when requesting only a single document
37
- :document_solr_request_handler => 'document',
51
+ document_solr_request_handler: 'document',
38
52
  # THe path to send single document requests to solr
39
- :document_solr_path => nil,
40
- :document_unique_id_param => :id,
53
+ document_solr_path: nil,
54
+ document_unique_id_param: :id,
41
55
  # Default values of parameters to send when requesting a single document
42
- :default_document_solr_params => {
56
+ default_document_solr_params: {
43
57
  ## Blacklight provides these settings in the /document request handler
44
58
  ## by default, we just ask for all fields.
45
- #:fl => '*',
59
+ #fl: '*',
46
60
  ## this is a fancy way to say "find the document by id using
47
61
  ## the value in the id query parameter"
48
- #:q => "{!raw f=#{unique_key} v=$id}",
62
+ #q: "{!raw f=#{unique_key} v=$id}",
49
63
  ## disable features we don't need
50
- #:facet => false,
51
- #:rows => 1
64
+ #facet: false,
65
+ #rows: 1
52
66
  },
67
+ ##
68
+ # == Response models
69
+ ## Class for sending and receiving requests from a search index
70
+ repository_class: nil,
71
+ ## Class for converting Blacklight parameters to request parameters for the repository_class
72
+ search_builder_class: nil,
73
+ # model that maps index responses to the blacklight response model
74
+ response_model: nil,
75
+ # the model to use for each response document
76
+ document_model: nil,
77
+ # document presenter class used by helpers and views
78
+ document_presenter_class: nil,
79
+ ##
80
+ # == Blacklight view configuration
81
+ ##
82
+ navbar: OpenStructWithHashAccess.new(partials: { }),
53
83
  # General configuration for all views
54
- :index => ViewConfig::Index.new(
84
+ index: ViewConfig::Index.new(
55
85
  # solr field to use to render a document title
56
- :title_field => nil,
86
+ title_field: nil,
57
87
  # solr field to use to render format-specific partials
58
- :display_type_field => 'format',
88
+ display_type_field: 'format',
59
89
  # partials to render for each document(see #render_document_partials)
60
- :partials => [:index_header, :thumbnail, :index],
61
- :document_actions => NestedOpenStructWithHashAccess.new(ToolConfig),
62
- :collection_actions => NestedOpenStructWithHashAccess.new(ToolConfig),
90
+ partials: [:index_header, :thumbnail, :index],
91
+ document_actions: NestedOpenStructWithHashAccess.new(ToolConfig),
92
+ collection_actions: NestedOpenStructWithHashAccess.new(ToolConfig),
63
93
  # what field, if any, to use to render grouped results
64
- :group => false,
94
+ group: false,
65
95
  # additional response formats for search results
66
- :respond_to => OpenStructWithHashAccess.new()
96
+ respond_to: OpenStructWithHashAccess.new()
67
97
  ),
68
98
  # Additional configuration when displaying a single document
69
- :show => ViewConfig::Show.new(
99
+ show: ViewConfig::Show.new(
70
100
  # default route parameters for 'show' requests
71
101
  # set this to a hash with additional arguments to merge into
72
102
  # the route, or set `controller: :current` to route to the
@@ -76,9 +106,8 @@ module Blacklight
76
106
  partials: [:show_header, :show],
77
107
  document_actions: NestedOpenStructWithHashAccess.new(ToolConfig)
78
108
  ),
79
- :navbar => OpenStructWithHashAccess.new(partials: { }),
80
109
  # Configurations for specific types of index views
81
- :view => NestedOpenStructWithHashAccess.new(ViewConfig,
110
+ view: NestedOpenStructWithHashAccess.new(ViewConfig,
82
111
  'list',
83
112
  atom: {
84
113
  if: false, # by default, atom should not show up as an alternative view
@@ -88,24 +117,27 @@ module Blacklight
88
117
  if: false, # by default, rss should not show up as an alternative view
89
118
  partials: [:document]
90
119
  }),
120
+ #
121
+ # These fields are created and managed below by `defined_field_access`
122
+ # facet_fields
123
+ # index_fields
124
+ # show_fields
125
+ # sort_fields
126
+ # search_fields
127
+ ##
128
+ # === Blacklight behavior configuration
129
+ ##
91
130
  # Maxiumum number of spelling suggestions to offer
92
- :spell_max => 5,
131
+ spell_max: 5,
93
132
  # Maximum number of results to show per page
94
- :max_per_page => 100,
133
+ max_per_page: 100,
95
134
  # Options for the user for number of results to show per page
96
- :per_page => [10,20,50,100],
97
- :default_per_page => nil,
135
+ per_page: [10,20,50,100],
136
+ default_per_page: nil,
98
137
  # how many searches to save in session history
99
138
  # (TODO: move the value into the configuration?)
100
- :search_history_window => Blacklight::Catalog::SearchHistoryWindow,
101
- ## deprecated; use add_facet_field :include_in_request instead;
102
- # if this is configured true, all facets will be included in the solr request
103
- # unless explicitly disabled.
104
- :add_facet_fields_to_solr_request => false,
105
- ## deprecated; use add_index_field :include_in_request instead;
106
- # if this is configured true, all show and index will be included in the solr request
107
- # unless explicitly disabled.
108
- :add_field_configuration_to_solr_request => false
139
+ search_history_window: Blacklight::Catalog::SearchHistoryWindow,
140
+ default_facet_limit: 10
109
141
  }
110
142
  end
111
143
  end
@@ -148,13 +180,43 @@ module Blacklight
148
180
  end
149
181
  end
150
182
 
151
- def solr_document_model
183
+ def document_model
152
184
  super || SolrDocument
153
185
  end
186
+ alias_method :solr_document_model, :document_model
187
+ # only here to support alias_method
188
+ def document_model= *args
189
+ super
190
+ end
191
+ alias_method :solr_document_model=, :document_model=
192
+ deprecation_deprecate solr_document_model: :document_model, :solr_document_model= => :document_model=
193
+
194
+ def document_presenter_class
195
+ super || Blacklight::DocumentPresenter
196
+ end
154
197
 
155
- def solr_response_model
198
+ def response_model
156
199
  super || Blacklight::SolrResponse
157
200
  end
201
+ alias_method :solr_response_model, :response_model
202
+ # only here to support alias_method
203
+ def response_model= *args
204
+ super
205
+ end
206
+ alias_method :solr_response_model=, :response_model=
207
+ deprecation_deprecate solr_response_model: :response_model, :solr_response_model= => :response_model=
208
+
209
+ def repository_class
210
+ super || Blacklight::SolrRepository
211
+ end
212
+
213
+ def search_builder_class
214
+ super || Blacklight::Solr::SearchBuilder
215
+ end
216
+
217
+ def default_per_page
218
+ super || per_page.first
219
+ end
158
220
 
159
221
  ##
160
222
  # DSL helper
@@ -167,7 +229,7 @@ module Blacklight
167
229
  # Returns default search field, used for simpler display in history, etc.
168
230
  # if not set, defaults to first defined search field
169
231
  def default_search_field
170
- field = nil
232
+ field = super
171
233
  field ||= search_fields.values.select { |field| field.default == true }.first
172
234
  field ||= search_fields.values.first
173
235
 
@@ -178,7 +240,7 @@ module Blacklight
178
240
  # Returns default sort field, used for simpler display in history, etc.
179
241
  # if not set, defaults to first defined sort field
180
242
  def default_sort_field
181
- field = nil
243
+ field = super
182
244
  field ||= sort_fields.values.select { |field| field.default == true }.first
183
245
  field ||= sort_fields.values.first
184
246
 
@@ -186,7 +248,7 @@ module Blacklight
186
248
  end
187
249
 
188
250
  def default_title_field
189
- solr_document_model.unique_key || 'id'
251
+ document_model.unique_key || 'id'
190
252
  end
191
253
 
192
254
  ##
@@ -240,6 +302,7 @@ module Blacklight
240
302
  .reject { |k,v| v[:query] || v[:pivot] }
241
303
  .map { |k,v| v.field }
242
304
  end
305
+ deprecation_deprecate :facet_fields_to_add_to_solr
243
306
 
244
307
  ##
245
308
  # Provide a 'deep copy' of Blacklight::Configuration that can be modifyed without affecting
@@ -257,8 +320,11 @@ module Blacklight
257
320
  # too. These model names should not be `#dup`'ed or we might break ActiveModel::Naming.
258
321
  def deep_copy
259
322
  deep_dup.tap do |copy|
260
- copy.solr_response_model = self.solr_response_model
261
- copy.solr_document_model = self.solr_document_model
323
+ copy.repository_class = self.repository_class
324
+ copy.response_model = self.response_model
325
+ copy.document_model = self.document_model
326
+ copy.document_presenter_class = self.document_presenter_class
327
+ copy.search_builder_class = self.search_builder_class
262
328
  end
263
329
  end
264
330
  alias_method :inheritable_copy, :deep_copy
@@ -1,18 +1,20 @@
1
1
  module Blacklight
2
- class Configuration::FacetField < Blacklight::Configuration::SolrField
2
+ class Configuration::FacetField < Blacklight::Configuration::Field
3
3
  def normalize! blacklight_config = nil
4
4
  self.query.stringify_keys! if self.query
5
5
 
6
- if self.single and self.tag.blank? and self.ex.blank?
7
- self.tag = "#{self.field}_single"
8
- self.ex = "#{self.field}_single"
9
- end
10
-
11
6
  self.collapse = true if self.collapse.nil?
12
7
  self.show = true if self.show.nil?
13
- self.if = self.show if self.if.nil?
8
+ self.if ||= self.show
14
9
 
15
10
  super
11
+
12
+ if self.single and self.tag.blank? and self.ex.blank?
13
+ self.tag = "#{self.key}_single"
14
+ self.ex = "#{self.key}_single"
15
+ end
16
+
17
+ self
16
18
  end
17
19
  end
18
20
  end
@@ -0,0 +1,27 @@
1
+ module Blacklight
2
+ class Configuration::Field < OpenStructWithHashAccess
3
+ def normalize! blacklight_config = nil
4
+ self.field ||= self.key
5
+ self.key ||= self.field
6
+
7
+ self.label ||= default_label
8
+
9
+ self.if = true if self.if.nil?
10
+ self.unless = false if self.unless.nil?
11
+
12
+ self
13
+ end
14
+
15
+ def validate!
16
+ raise ArgumentError.new("Must supply a field name") if self.field.nil?
17
+ end
18
+
19
+ def default_label
20
+ if self.key.respond_to?(:titleize)
21
+ self.key.try(:titleize)
22
+ else
23
+ self.key.to_s.titleize
24
+ end
25
+ end
26
+ end
27
+ end
@@ -4,6 +4,8 @@ module Blacklight
4
4
  # solr fields configuration
5
5
  module Fields
6
6
  extend ActiveSupport::Concern
7
+ extend Deprecation
8
+ self.deprecation_horizon = "blacklight 6.0"
7
9
 
8
10
  module ClassMethods
9
11
 
@@ -13,7 +15,7 @@ module Blacklight
13
15
 
14
16
  self.default_values[key.pluralize.to_sym] = ActiveSupport::OrderedHash.new
15
17
 
16
- base_class_name = options.fetch(:class, SolrField)
18
+ base_class_name = options.fetch(:class, Field)
17
19
 
18
20
  unless self.const_defined? key.camelcase
19
21
  class_eval <<-END_EVAL, __FILE__, __LINE__ + 1
@@ -23,7 +25,7 @@ module Blacklight
23
25
 
24
26
  class_eval <<-END_EVAL, __FILE__, __LINE__ + 1
25
27
  def add_#{key}(*args, &block)
26
- add_solr_field("#{key}", *args, &block)
28
+ add_blacklight_field("#{key}", *args, &block)
27
29
  end
28
30
  END_EVAL
29
31
  end
@@ -32,41 +34,41 @@ module Blacklight
32
34
  # Add a solr field configuration to the given configuration key
33
35
  #
34
36
  # The recommended and strongly encouraged format is a field name, configuration pair, e.g.:
35
- # add_solr_field :index_field, 'format', :label => 'Format'
37
+ # add_blacklight_field :index_field, 'format', :label => 'Format'
36
38
  #
37
39
  # Alternative formats include:
38
40
  #
39
41
  # * a field name and block format:
40
42
  #
41
- # add_solr_field :index_field, 'format' do |field|
43
+ # add_blacklight_field :index_field, 'format' do |field|
42
44
  # field.label = 'Format'
43
45
  # end
44
46
  #
45
47
  # * a plain block:
46
48
  #
47
- # add_solr_field :index_field do |field|
49
+ # add_blacklight_field :index_field do |field|
48
50
  # field.field = 'format'
49
51
  # field.label = 'Format'
50
52
  # end
51
53
  #
52
54
  # * a configuration hash:
53
55
  #
54
- # add_solr_field :index_field, :field => 'format', :label => 'Format'
56
+ # add_blacklight_field :index_field, :field => 'format', :label => 'Format'
55
57
  #
56
58
  # * a Field instance:
57
59
  #
58
- # add_solr_field :index_field, IndexField.new(:field => 'format', :label => 'Format')
60
+ # add_blacklight_field :index_field, IndexField.new(:field => 'format', :label => 'Format')
59
61
  #
60
62
  # * an array of hashes:
61
63
  #
62
- # add_solr_field :index_field, [{:field => 'format', :label => 'Format'}, IndexField.new(:field => 'date', :label => 'Date')]
64
+ # add_blacklight_field :index_field, [{:field => 'format', :label => 'Format'}, IndexField.new(:field => 'date', :label => 'Date')]
63
65
  #
64
66
  #
65
67
  # @param String config_key
66
68
  # @param Array *args
67
69
  # @para
68
70
  #
69
- def add_solr_field config_key, *args, &block
71
+ def add_blacklight_field config_key, *args, &block
70
72
  field_config = case args.first
71
73
  when String
72
74
  field_config_from_key_and_hash(config_key, *args)
@@ -81,18 +83,20 @@ module Blacklight
81
83
  end
82
84
 
83
85
  # look up any dynamic fields
84
- if field_config.field.to_s =~ /\*/ and luke_fields
86
+ if (field_config.field || field_config.key).to_s =~ /\*/ and luke_fields
87
+ wildcard_field = (field_config.field || field_config.key).to_s
85
88
  salient_fields = luke_fields.select do |k,v|
86
- k =~ Regexp.new("^" + field_config.field.to_s.gsub('*', '.+') + "$")
89
+ k =~ Regexp.new("^" + wildcard_field.gsub('*', '.+') + "$")
87
90
  end
88
91
 
89
92
  salient_fields.each do |field, luke_config|
90
93
  config = field_config.dup
91
94
  config.field = field
92
- if self[config_key.pluralize][ config.field ]
93
- self[config_key.pluralize][ config.field ] = config.merge(self[config_key.pluralize][ config.field ])
95
+ config.key = field
96
+ if self[config_key.pluralize][ config.key ]
97
+ self[config_key.pluralize][ config.key ] = config.merge(self[config_key.pluralize][ config.key ])
94
98
  else
95
- add_solr_field(config_key, config, &block)
99
+ add_blacklight_field(config_key, config, &block)
96
100
  end
97
101
  end
98
102
 
@@ -106,10 +110,12 @@ module Blacklight
106
110
  field_config.normalize!(self)
107
111
  field_config.validate!
108
112
 
109
- raise "A #{config_key} with the key #{field_config.field} already exists." if self[config_key.pluralize][field_config.field].present?
113
+ raise "A #{config_key} with the key #{field_config.key} already exists." if self[config_key.pluralize][field_config.key].present?
110
114
 
111
- self[config_key.pluralize][ field_config.field ] = field_config
115
+ self[config_key.pluralize][ field_config.key ] = field_config
112
116
  end
117
+ alias_method :add_solr_field, :add_blacklight_field
118
+ deprecation_deprecate add_solr_field: :add_blacklight_field
113
119
 
114
120
  protected
115
121
  def luke_fields
@@ -129,17 +135,16 @@ module Blacklight
129
135
  end
130
136
 
131
137
  # Add a solr field by a solr field name and hash
132
- def field_config_from_key_and_hash config_key, solr_field, field_or_hash = {}
138
+ def field_config_from_key_and_hash config_key, field_name, field_or_hash = {}
133
139
  field_config = field_config_from_field_or_hash(config_key, field_or_hash)
134
- field_config.field = solr_field
135
-
140
+ field_config.key = field_name
136
141
  field_config
137
142
  end
138
143
 
139
144
  # Add multiple solr fields using a hash or Field instance
140
145
  def field_config_from_array config_key, array_of_fields_or_hashes, &block
141
146
  array_of_fields_or_hashes.map do |field_or_hash|
142
- add_solr_field(config_key, field_or_hash, &block)
147
+ add_blacklight_field(config_key, field_or_hash, &block)
143
148
  end
144
149
  end
145
150