blacklight 6.2.0 → 6.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/.solr_wrapper +5 -0
- data/.travis.yml +3 -5
- data/Gemfile +3 -3
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/core.js +19 -5
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +48 -20
- data/app/helpers/blacklight/configuration_helper_behavior.rb +1 -1
- data/app/helpers/blacklight/url_helper_behavior.rb +2 -1
- data/app/presenters/blacklight/document_presenter.rb +58 -150
- data/app/presenters/blacklight/field_presenter.rb +31 -0
- data/app/presenters/blacklight/index_presenter.rb +69 -0
- data/app/presenters/blacklight/link_alternate_presenter.rb +29 -0
- data/app/presenters/blacklight/rendering/abstract_step.rb +24 -0
- data/app/presenters/blacklight/rendering/helper_method.rb +23 -0
- data/app/presenters/blacklight/rendering/join.rb +16 -0
- data/app/presenters/blacklight/rendering/link_to_facet.rb +35 -0
- data/app/presenters/blacklight/rendering/microdata.rb +17 -0
- data/app/presenters/blacklight/rendering/pipeline.rb +32 -0
- data/app/presenters/blacklight/rendering/terminator.rb +9 -0
- data/app/presenters/blacklight/show_presenter.rb +93 -0
- data/app/services/blacklight/field_retriever.rb +58 -0
- data/app/views/catalog/_document_default.atom.builder +2 -3
- data/app/views/catalog/_document_default.rss.builder +2 -2
- data/app/views/kaminari/blacklight/_next_page.html.erb +9 -3
- data/app/views/kaminari/blacklight/_prev_page.html.erb +10 -3
- data/lib/blacklight/configuration.rb +15 -3
- data/lib/blacklight/configuration/null_field.rb +13 -0
- data/lib/blacklight/configuration/view_config.rb +6 -0
- data/lib/generators/blacklight/templates/catalog_controller.rb +1 -1
- data/lib/generators/blacklight/templates/config/blacklight.yml +1 -1
- data/lib/generators/blacklight/templates/config/jetty.yml +1 -1
- data/spec/controllers/alternate_controller_spec.rb +2 -2
- data/spec/controllers/application_controller_spec.rb +1 -1
- data/spec/controllers/blacklight/facet_spec.rb +3 -3
- data/spec/controllers/blacklight/search_fields_spec.rb +7 -7
- data/spec/controllers/blacklight/search_helper_spec.rb +44 -44
- data/spec/controllers/blacklight/suggest_search_spec.rb +1 -1
- data/spec/controllers/bookmarks_controller_spec.rb +6 -6
- data/spec/controllers/catalog_controller_spec.rb +125 -125
- data/spec/controllers/saved_searches_controller_spec.rb +4 -9
- data/spec/controllers/search_history_controller_spec.rb +3 -6
- data/spec/controllers/suggest_controller_spec.rb +2 -2
- data/spec/features/alternate_controller_spec.rb +3 -3
- data/spec/features/bookmarks_spec.rb +6 -6
- data/spec/features/did_you_mean_spec.rb +10 -10
- data/spec/features/facets_spec.rb +4 -4
- data/spec/features/record_view_spec.rb +4 -4
- data/spec/features/saved_searches_spec.rb +4 -4
- data/spec/features/search_context_spec.rb +4 -4
- data/spec/features/search_filters_spec.rb +10 -10
- data/spec/features/search_formats_spec.rb +2 -2
- data/spec/features/search_history_spec.rb +5 -5
- data/spec/features/search_pagination_spec.rb +4 -4
- data/spec/features/search_results_spec.rb +7 -7
- data/spec/features/search_sort_spec.rb +2 -2
- data/spec/features/search_spec.rb +6 -6
- data/spec/helpers/blacklight_helper_spec.rb +105 -65
- data/spec/helpers/catalog_helper_spec.rb +36 -36
- data/spec/helpers/configuration_helper_spec.rb +28 -28
- data/spec/helpers/facets_helper_spec.rb +39 -39
- data/spec/helpers/hash_as_hidden_fields_spec.rb +1 -1
- data/spec/helpers/render_constraints_helper_spec.rb +1 -1
- data/spec/helpers/search_history_constraints_helper_spec.rb +7 -7
- data/spec/helpers/url_helper_spec.rb +20 -17
- data/spec/lib/blacklight/search_state_spec.rb +2 -2
- data/spec/lib/blacklight/utils_spec.rb +15 -15
- data/spec/lib/blacklight_spec.rb +1 -1
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
- data/spec/models/blacklight/configurable_spec.rb +3 -3
- data/spec/models/blacklight/configuration_spec.rb +52 -52
- data/spec/models/blacklight/document_spec.rb +10 -10
- data/spec/models/blacklight/facet_paginator_spec.rb +5 -5
- data/spec/models/blacklight/search_builder_spec.rb +34 -34
- data/spec/models/blacklight/user_spec.rb +4 -4
- data/spec/models/bookmark_spec.rb +5 -5
- data/spec/models/record_mailer_spec.rb +11 -11
- data/spec/models/search_spec.rb +1 -1
- data/spec/models/solr_document_spec.rb +4 -4
- data/spec/presenters/document_presenter_spec.rb +94 -50
- data/spec/presenters/index_presenter_spec.rb +147 -0
- data/spec/presenters/pipeline_spec.rb +28 -0
- data/spec/presenters/show_presenter_spec.rb +287 -0
- data/spec/routing/catalog_routing_spec.rb +11 -11
- data/spec/spec_helper.rb +10 -1
- data/spec/support/backport_test.rb +38 -0
- data/spec/test_app_templates/Gemfile.extra +2 -10
- data/spec/views/_user_util_links.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_constraints.html.erb_spec.rb +3 -3
- data/spec/views/catalog/_constraints_element.html.erb_spec.rb +5 -5
- data/spec/views/catalog/_document.html.erb_spec.rb +2 -2
- data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +4 -4
- data/spec/views/catalog/_facets.html.erb_spec.rb +4 -4
- data/spec/views/catalog/_index_default.erb_spec.rb +5 -4
- data/spec/views/catalog/_index_header_default.html.erb_spec.rb +4 -3
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +3 -3
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -1
- data/spec/views/catalog/_show_default.erb_spec.rb +6 -5
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +2 -1
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +8 -8
- data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +2 -2
- data/spec/views/catalog/_thumbnail_default.erb_spec.rb +3 -2
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +3 -3
- data/spec/views/catalog/facet.html.erb_spec.rb +3 -3
- data/spec/views/catalog/index.atom.builder_spec.rb +15 -14
- data/spec/views/catalog/index.html.erb_spec.rb +3 -3
- data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
- data/spec/views/catalog/show.html.erb_spec.rb +5 -4
- data/tasks/blacklight.rake +1 -1
- metadata +25 -4
- data/config/jetty.yml +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38e64adb886cc4afffadc21d807dd85b7f919bef
|
4
|
+
data.tar.gz: 6d422b5862b493b3f5b4db3d163c3dbed749bae3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b9ff4de640f01ff5ee90d2a10b6b8d2d36b7c746890ab7f19403c85a6cc92a1afe058d5ea79a616aaefe4c8f4f777210c5452e112b26c066e2743cfb99f154c
|
7
|
+
data.tar.gz: 6ff37f57181bd54aa43531ef7beae404c787b2c94bab6a2fbe3d0652420ab3f3c1f03b1efb3e7a934ae09ba1c82c7bb381b87d992796742e899b81fc203cccb1
|
data/.rubocop.yml
CHANGED
data/.solr_wrapper
ADDED
data/.travis.yml
CHANGED
@@ -9,12 +9,10 @@ rvm:
|
|
9
9
|
|
10
10
|
matrix:
|
11
11
|
include:
|
12
|
-
- rvm: 2.1
|
12
|
+
- rvm: 2.3.1
|
13
13
|
env: "RAILS_VERSION=4.2.6"
|
14
14
|
- rvm: 2.2.5
|
15
|
-
env: "RAILS_VERSION=
|
16
|
-
- rvm: 2.3.1
|
17
|
-
env: "RAILS_VERSION=5.0.0.rc1"
|
15
|
+
env: "RAILS_VERSION=5.0.0"
|
18
16
|
- rvm: jruby-9.0.5.0
|
19
17
|
env: "RAILS_VERSION=4.2.6 JRUBY_OPTS=\"-J-Xms512m -J-Xmx1024m\""
|
20
18
|
allow_failures:
|
@@ -25,7 +23,7 @@ before_install:
|
|
25
23
|
- gem install bundler
|
26
24
|
|
27
25
|
env:
|
28
|
-
- "RAILS_VERSION=
|
26
|
+
- "RAILS_VERSION=5.0.0"
|
29
27
|
|
30
28
|
notifications:
|
31
29
|
irc: "irc.freenode.org#blacklight"
|
data/Gemfile
CHANGED
@@ -34,11 +34,11 @@ else
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
if ENV['RAILS_VERSION'].nil? || ENV['RAILS_VERSION'] =~ /^
|
37
|
+
if ENV['RAILS_VERSION'].nil? || ENV['RAILS_VERSION'] =~ /^5\.0/ || ENV['RAILS_VERSION'] == 'edge'
|
38
|
+
gem 'rspec-rails', '>= 3.5.0.beta4', '~> 3.5'
|
39
|
+
elsif ENV['RAILS_VERSION'] =~ /^4\.2/
|
38
40
|
gem 'responders', "~> 2.0"
|
39
41
|
gem 'sass-rails', ">= 5.0"
|
40
|
-
elsif ENV['RAILS_VERSION'] =~ /^5\.0/ || ENV['RAILS_VERSION'] == 'edge'
|
41
|
-
# nop
|
42
42
|
else
|
43
43
|
gem 'bootstrap-sass', '< 3.3.5' # 3.3.5 requires sass 3.3, incompatible with sass-rails 4.x
|
44
44
|
gem 'sass-rails', "< 5.0"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
6.
|
1
|
+
6.3.0
|
@@ -9,17 +9,31 @@ Blacklight = function() {
|
|
9
9
|
for(var i = 0; i < buffer.length; i++) {
|
10
10
|
buffer[i].call();
|
11
11
|
}
|
12
|
+
},
|
13
|
+
|
14
|
+
listeners: function () {
|
15
|
+
var listeners = [];
|
16
|
+
if (Turbolinks && Turbolinks.supported) {
|
17
|
+
// Turbolinks 5
|
18
|
+
if (Turbolinks.BrowserAdapter) {
|
19
|
+
listeners.push('turbolinks:load');
|
20
|
+
} else {
|
21
|
+
// Turbolinks < 5
|
22
|
+
listeners.push('page:load', 'ready');
|
23
|
+
}
|
24
|
+
} else {
|
25
|
+
listeners.push('ready');
|
26
|
+
}
|
27
|
+
|
28
|
+
return listeners.join(' ');
|
12
29
|
}
|
13
|
-
}
|
30
|
+
};
|
14
31
|
}();
|
15
32
|
|
16
33
|
// turbolinks triggers page:load events on page transition
|
17
34
|
// If app isn't using turbolinks, this event will never be triggered, no prob.
|
18
|
-
$(document).on(
|
35
|
+
$(document).on(Blacklight.listeners(), function() {
|
19
36
|
Blacklight.activate();
|
20
37
|
});
|
21
38
|
|
22
|
-
$(document).ready(function() {
|
23
|
-
Blacklight.activate();
|
24
|
-
});
|
25
39
|
|
@@ -7,6 +7,8 @@ module Blacklight::BlacklightHelperBehavior
|
|
7
7
|
include RenderConstraintsHelper
|
8
8
|
include RenderPartialsHelper
|
9
9
|
include FacetsHelper
|
10
|
+
extend Deprecation
|
11
|
+
self.deprecation_horizon = 'Blacklight version 7.0.0'
|
10
12
|
|
11
13
|
##
|
12
14
|
# Get the name of this application, from either:
|
@@ -77,7 +79,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
77
79
|
# Determine whether to render a given field in the index view.
|
78
80
|
#
|
79
81
|
# @param [SolrDocument] document
|
80
|
-
# @param [Blacklight::
|
82
|
+
# @param [Blacklight::Configuration::Field] field_config
|
81
83
|
# @return [Boolean]
|
82
84
|
def should_render_index_field? document, field_config
|
83
85
|
should_render_field?(field_config, document) && document_has_value?(document, field_config)
|
@@ -87,7 +89,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
87
89
|
# Determine whether to render a given field in the show view
|
88
90
|
#
|
89
91
|
# @param [SolrDocument] document
|
90
|
-
# @param [Blacklight::
|
92
|
+
# @param [Blacklight::Configuration::Field] field_config
|
91
93
|
# @return [Boolean]
|
92
94
|
def should_render_show_field? document, field_config
|
93
95
|
should_render_field?(field_config, document) && document_has_value?(document, field_config)
|
@@ -97,7 +99,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
97
99
|
# Check if a document has (or, might have, in the case of accessor methods) a value for
|
98
100
|
# the given solr field
|
99
101
|
# @param [SolrDocument] document
|
100
|
-
# @param [Blacklight::
|
102
|
+
# @param [Blacklight::Configuration::Field] field_config
|
101
103
|
# @return [Boolean]
|
102
104
|
def document_has_value? document, field_config
|
103
105
|
document.has?(field_config.field) ||
|
@@ -158,12 +160,17 @@ module Blacklight::BlacklightHelperBehavior
|
|
158
160
|
# @param [String] field
|
159
161
|
# @param [Hash] opts
|
160
162
|
# @options opts [String] :value
|
163
|
+
# TODO: deprecate and use render_field_value
|
161
164
|
def render_index_field_value *args
|
165
|
+
render_field_value(*args)
|
166
|
+
end
|
167
|
+
|
168
|
+
def render_field_value(*args)
|
162
169
|
options = args.extract_options!
|
163
170
|
document = args.shift || options[:document]
|
164
171
|
|
165
172
|
field = args.shift || options[:field]
|
166
|
-
presenter(document).
|
173
|
+
presenter(document).field_value field, options.except(:document, :field)
|
167
174
|
end
|
168
175
|
|
169
176
|
##
|
@@ -211,12 +218,9 @@ module Blacklight::BlacklightHelperBehavior
|
|
211
218
|
# @param [String] field
|
212
219
|
# @param [Hash] opts
|
213
220
|
# @options opts [String] :value
|
221
|
+
# TODO: deprecate and use render_field_value
|
214
222
|
def render_document_show_field_value *args
|
215
|
-
|
216
|
-
document = args.shift || options[:document]
|
217
|
-
|
218
|
-
field = args.shift || options[:field]
|
219
|
-
presenter(document).render_document_show_field_value field, options.except(:document, :field)
|
223
|
+
render_field_value(*args)
|
220
224
|
end
|
221
225
|
|
222
226
|
##
|
@@ -227,7 +231,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
227
231
|
# @return [String]
|
228
232
|
def document_heading document=nil
|
229
233
|
document ||= @document
|
230
|
-
presenter(document).
|
234
|
+
presenter(document).heading
|
231
235
|
end
|
232
236
|
|
233
237
|
##
|
@@ -240,7 +244,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
240
244
|
def document_show_html_title document=nil
|
241
245
|
document ||= @document
|
242
246
|
|
243
|
-
presenter(document).
|
247
|
+
presenter(document).html_title
|
244
248
|
end
|
245
249
|
|
246
250
|
##
|
@@ -258,7 +262,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
258
262
|
tag = options.fetch(:tag, :h4)
|
259
263
|
document ||= @document
|
260
264
|
|
261
|
-
content_tag(tag, presenter(document).
|
265
|
+
content_tag(tag, presenter(document).heading, itemprop: "name")
|
262
266
|
end
|
263
267
|
|
264
268
|
##
|
@@ -270,15 +274,14 @@ module Blacklight::BlacklightHelperBehavior
|
|
270
274
|
# Rendering:
|
271
275
|
# - helper_method
|
272
276
|
# - link_to_search
|
273
|
-
# TODO : maybe this should be merged with render_field_value, and the ugly signature
|
274
|
-
# simplified by pushing some of this logic into the "model"
|
275
277
|
# @param [SolrDocument] document
|
276
278
|
# @param [String] field name
|
277
|
-
# @param [Blacklight::
|
279
|
+
# @param [Blacklight::Configuration::Field] solr field configuration
|
278
280
|
# @param [Hash] options additional options to pass to the rendering helpers
|
279
|
-
def get_field_values document,
|
280
|
-
presenter(document).
|
281
|
+
def get_field_values document, _field, field_config, options = {}
|
282
|
+
presenter(document).field_values field_config, options
|
281
283
|
end
|
284
|
+
deprecation_deprecate :get_field_values
|
282
285
|
|
283
286
|
##
|
284
287
|
# Get the current "view type" (and ensure it is a valid type)
|
@@ -321,15 +324,40 @@ module Blacklight::BlacklightHelperBehavior
|
|
321
324
|
|
322
325
|
##
|
323
326
|
# Returns a document presenter for the given document
|
327
|
+
# TODO: Move this to the controller. It can just pass a presenter or set of presenters.
|
324
328
|
def presenter(document)
|
325
|
-
|
329
|
+
case action_name
|
330
|
+
when 'show', 'citation'
|
331
|
+
show_presenter(document)
|
332
|
+
when 'index'
|
333
|
+
index_presenter(document)
|
334
|
+
else
|
335
|
+
raise "Unable to determine presenter type for #{action_name} on #{controller_name}"
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
339
|
+
def show_presenter(document)
|
340
|
+
show_presenter_class(document).new(document, self)
|
341
|
+
end
|
342
|
+
|
343
|
+
def index_presenter(document)
|
344
|
+
index_presenter_class(document).new(document, self)
|
326
345
|
end
|
327
346
|
|
328
|
-
##
|
329
|
-
# Override this method if you want to use a different presenter class
|
330
347
|
def presenter_class
|
331
348
|
blacklight_config.document_presenter_class
|
332
349
|
end
|
350
|
+
deprecation_deprecate presenter_class: "replaced by show_presenter_class and index_presenter_class"
|
351
|
+
|
352
|
+
##
|
353
|
+
# Override this method if you want to use a different presenter class
|
354
|
+
def show_presenter_class(_document)
|
355
|
+
blacklight_config.show.document_presenter_class
|
356
|
+
end
|
357
|
+
|
358
|
+
def index_presenter_class(_document)
|
359
|
+
blacklight_config.index.document_presenter_class
|
360
|
+
end
|
333
361
|
|
334
362
|
##
|
335
363
|
# Open Search discovery tag for HTML <head> links
|
@@ -5,7 +5,7 @@ module Blacklight::ConfigurationHelperBehavior
|
|
5
5
|
# Index fields to display for a type of document
|
6
6
|
#
|
7
7
|
# @param [SolrDocument] document
|
8
|
-
# @return [Array<Blacklight::
|
8
|
+
# @return [Array<Blacklight::Configuration::Field>]
|
9
9
|
def index_fields document=nil
|
10
10
|
blacklight_config.index_fields
|
11
11
|
end
|
@@ -16,6 +16,7 @@ module Blacklight::UrlHelperBehavior
|
|
16
16
|
# Use the catalog_path RESTful route to create a link to the show page for a specific item.
|
17
17
|
# catalog_path accepts a hash. The solr query params are stored in the session,
|
18
18
|
# so we only need the +counter+ param here. We also need to know if we are viewing to document as part of search results.
|
19
|
+
# TODO: move this to the IndexPresenter
|
19
20
|
def link_to_document(doc, field_or_opts = nil, opts={:counter => nil})
|
20
21
|
if field_or_opts.is_a? Hash
|
21
22
|
opts = field_or_opts
|
@@ -24,7 +25,7 @@ module Blacklight::UrlHelperBehavior
|
|
24
25
|
end
|
25
26
|
|
26
27
|
field ||= document_show_link_field(doc)
|
27
|
-
label =
|
28
|
+
label = index_presenter(doc).label field, opts
|
28
29
|
link_to label, url_for_document(doc), document_link_params(doc, opts)
|
29
30
|
end
|
30
31
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module Blacklight
|
3
|
+
# @deprecated
|
3
4
|
class DocumentPresenter
|
4
|
-
include ActionView::Helpers::OutputSafetyHelper
|
5
|
-
include ActionView::Helpers::TagHelper
|
6
5
|
extend Deprecation
|
6
|
+
self.deprecation_horizon = 'Blacklight version 7.0.0'
|
7
7
|
|
8
8
|
# @param [SolrDocument] document
|
9
9
|
# @param [ActionController::Base] controller scope for linking and generating urls
|
@@ -20,39 +20,25 @@ module Blacklight
|
|
20
20
|
#
|
21
21
|
# @param [SolrDocument] document
|
22
22
|
# @return [String]
|
23
|
+
# @deprecated use ShowPresenter#heading instead
|
23
24
|
def document_heading
|
24
|
-
|
25
|
-
f = fields.find { |field| @document.has? field }
|
26
|
-
|
27
|
-
if f.nil?
|
28
|
-
render_field_value(@document.id)
|
29
|
-
else
|
30
|
-
render_field_value(@document[f])
|
31
|
-
end
|
25
|
+
show_presenter.heading
|
32
26
|
end
|
27
|
+
deprecation_deprecate document_heading: "use ShowPresenter#heading instead"
|
33
28
|
|
34
29
|
##
|
35
30
|
# Create <link rel="alternate"> links from a documents dynamically
|
36
31
|
# provided export formats. Returns empty string if no links available.
|
37
32
|
#
|
38
|
-
# @params [SolrDocument] document
|
39
33
|
# @params [Hash] options
|
40
34
|
# @option options [Boolean] :unique ensures only one link is output for every
|
41
35
|
# content type, e.g. as required by atom
|
42
36
|
# @option options [Array<String>] :exclude array of format shortnames to not include in the output
|
37
|
+
# @deprecated moved to ShowPresenter#link_rel_alternates
|
43
38
|
def link_rel_alternates(options = {})
|
44
|
-
|
45
|
-
|
46
|
-
seen = Set.new
|
47
|
-
|
48
|
-
safe_join(@document.export_formats.map do |format, spec|
|
49
|
-
next if options[:exclude].include?(format) || (options[:unique] && seen.include?(spec[:content_type]))
|
50
|
-
|
51
|
-
seen.add(spec[:content_type])
|
52
|
-
|
53
|
-
tag(:link, rel: "alternate", title: format, type: spec[:content_type], href: @controller.polymorphic_url(@document, format: format))
|
54
|
-
end.compact, "\n")
|
39
|
+
show_presenter.link_rel_alternates(options)
|
55
40
|
end
|
41
|
+
deprecation_deprecate link_rel_alternates: "use ShowPresenter#link_rel_alternates instead"
|
56
42
|
|
57
43
|
##
|
58
44
|
# Get the document's "title" to display in the <title> element.
|
@@ -60,80 +46,36 @@ module Blacklight
|
|
60
46
|
#
|
61
47
|
# @see #document_heading
|
62
48
|
# @return [String]
|
49
|
+
# @deprecated use ShowPresenter#html_title instead
|
63
50
|
def document_show_html_title
|
64
|
-
|
65
|
-
fields = Array(@configuration.view_config(:show).html_title_field)
|
66
|
-
f = fields.find { |field| @document.has? field }
|
67
|
-
|
68
|
-
if f.nil?
|
69
|
-
render_field_value(@document.id)
|
70
|
-
else
|
71
|
-
render_field_value(@document[f])
|
72
|
-
end
|
73
|
-
else
|
74
|
-
document_heading
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
##
|
79
|
-
# Render a value (or array of values) from a field
|
80
|
-
#
|
81
|
-
# @param [String] value or list of values to display
|
82
|
-
# @param [Blacklight::Solr::Configuration::Field] solr field configuration
|
83
|
-
# @return [String]
|
84
|
-
def render_field_value value=nil, field_config=nil
|
85
|
-
safe_values = recode_values(Array(value))
|
86
|
-
|
87
|
-
if field_config and field_config.itemprop
|
88
|
-
safe_values = safe_values.map { |x| content_tag :span, x, :itemprop => field_config.itemprop }
|
89
|
-
end
|
90
|
-
|
91
|
-
render_values(safe_values, field_config)
|
92
|
-
end
|
93
|
-
|
94
|
-
##
|
95
|
-
# Render a fields values as a string
|
96
|
-
# @param [Array] values to display
|
97
|
-
# @param [Blacklight::Solr::Configuration::Field] solr field configuration
|
98
|
-
# @return [String]
|
99
|
-
def render_values(values, field_config = nil)
|
100
|
-
options = {}
|
101
|
-
options = field_config.separator_options if field_config && field_config.separator_options
|
102
|
-
|
103
|
-
values.map { |x| html_escape(x) }.to_sentence(options).html_safe
|
51
|
+
show_presenter.html_title
|
104
52
|
end
|
53
|
+
deprecation_deprecate document_show_html_title: "use ShowPresenter#html_title instead"
|
105
54
|
|
106
55
|
##
|
107
56
|
# Render the document index heading
|
108
57
|
#
|
109
58
|
# @param [Symbol, Proc, String] field Render the given field or evaluate the proc or render the given string
|
110
59
|
# @param [Hash] opts
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
@document[field]
|
115
|
-
when Proc
|
116
|
-
field.call(@document, opts)
|
117
|
-
when String
|
118
|
-
field
|
119
|
-
end
|
120
|
-
render_field_value label || @document.id
|
60
|
+
# @deprecated use IndexPresenter#label instead
|
61
|
+
def render_document_index_label(*args)
|
62
|
+
index_presenter.label(*args)
|
121
63
|
end
|
64
|
+
deprecation_deprecate render_document_index_label: "use IndexPresenter#label instead"
|
122
65
|
|
123
66
|
##
|
124
67
|
# Render the index field label for a document
|
125
68
|
#
|
126
|
-
#
|
127
|
-
#
|
128
|
-
#
|
129
|
-
#
|
130
|
-
#
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
render_field_value value, field_config
|
69
|
+
# Allow an extention point where information in the document
|
70
|
+
# may drive the value of the field
|
71
|
+
# @param [String] field
|
72
|
+
# @param [Hash] opts
|
73
|
+
# @options opts [String] :value
|
74
|
+
# @deprecated use IndexPresenter#field_value instead
|
75
|
+
def render_index_field_value *args
|
76
|
+
index_presenter.field_value(*args)
|
136
77
|
end
|
78
|
+
deprecation_deprecate render_index_field_value: "use IndexPresenter#field_value instead"
|
137
79
|
|
138
80
|
##
|
139
81
|
# Render the show field value for a document
|
@@ -143,12 +85,11 @@ module Blacklight
|
|
143
85
|
# @param [String] field
|
144
86
|
# @param [Hash] options
|
145
87
|
# @options opts [String] :value
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
render_field_value value, field_config
|
88
|
+
# @deprecated use ShowPresenter#field_value
|
89
|
+
def render_document_show_field_value *args
|
90
|
+
show_presenter.field_value(*args)
|
151
91
|
end
|
92
|
+
deprecation_deprecate render_document_show_field_value: "use ShowPresenter#field_value instead"
|
152
93
|
|
153
94
|
##
|
154
95
|
# Get the value for a document's field, and prepare to render it.
|
@@ -159,78 +100,45 @@ module Blacklight
|
|
159
100
|
# Rendering:
|
160
101
|
# - helper_method
|
161
102
|
# - link_to_search
|
162
|
-
# TODO : maybe this should be merged with render_field_value, and the ugly signature
|
163
|
-
# simplified by pushing some of this logic into the "model"
|
164
|
-
# @param [SolrDocument] document
|
165
103
|
# @param [String] field name
|
166
|
-
# @param [Blacklight::
|
104
|
+
# @param [Blacklight::Configuration::Field] solr field configuration
|
167
105
|
# @param [Hash] options additional options to pass to the rendering helpers
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
@document.highlight_field(field_config.field).map(&:html_safe) if @document.has_highlight_field? field_config.field
|
174
|
-
when (field_config and field_config.accessor)
|
175
|
-
# implicit method call
|
176
|
-
if field_config.accessor === true
|
177
|
-
@document.send(field)
|
178
|
-
# arity-1 method call (include the field name in the call)
|
179
|
-
elsif !field_config.accessor.is_a?(Array) && @document.method(field_config.accessor).arity != 0
|
180
|
-
@document.send(field_config.accessor, field)
|
181
|
-
# chained method calls
|
182
|
-
else
|
183
|
-
Array(field_config.accessor).inject(@document) do |result, method|
|
184
|
-
result.send(method)
|
185
|
-
end
|
186
|
-
end
|
187
|
-
when field_config
|
188
|
-
# regular document field
|
189
|
-
if field_config.default and field_config.default.is_a? Proc
|
190
|
-
@document.fetch(field_config.field, &field_config.default)
|
191
|
-
else
|
192
|
-
@document.fetch(field_config.field, field_config.default)
|
193
|
-
end
|
194
|
-
when field
|
195
|
-
@document[field]
|
196
|
-
end
|
197
|
-
|
198
|
-
# rendering values
|
199
|
-
case
|
200
|
-
when (field_config and field_config.helper_method)
|
201
|
-
@controller.send(field_config.helper_method, options.merge(document: @document, field: field, config: field_config, value: value))
|
202
|
-
when (field_config and field_config.link_to_search)
|
203
|
-
link_field = if field_config.link_to_search === true
|
204
|
-
field_config.key
|
205
|
-
else
|
206
|
-
field_config.link_to_search
|
207
|
-
end
|
106
|
+
# @deprecated
|
107
|
+
def get_field_values _field, field_config, options = {}
|
108
|
+
field_values(field_config, options)
|
109
|
+
end
|
110
|
+
deprecation_deprecate get_field_values: 'Use field_values instead'
|
208
111
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
112
|
+
##
|
113
|
+
# Get the value for a document's field, and prepare to render it.
|
114
|
+
# - highlight_field
|
115
|
+
# - accessor
|
116
|
+
# - solr field
|
117
|
+
#
|
118
|
+
# Rendering:
|
119
|
+
# - helper_method
|
120
|
+
# - link_to_search
|
121
|
+
# @param [Blacklight::Configuration::Field] solr field configuration
|
122
|
+
# @param [Hash] options additional options to pass to the rendering helpers
|
123
|
+
def field_values(field_config, options={})
|
124
|
+
FieldPresenter.new(@controller, @document, field_config, options).render
|
215
125
|
end
|
126
|
+
deprecation_deprecate field_values: 'Use ShowPresenter or IndexPresenter field_values instead'
|
216
127
|
|
217
|
-
|
218
|
-
|
128
|
+
# @deprecated
|
129
|
+
def render_field_value(values, field_config = Configuration::NullField.new)
|
130
|
+
FieldPresenter.new(@controller, @document, field_config, value: values).render
|
219
131
|
end
|
132
|
+
deprecation_deprecate render_field_value: 'Use FieldPresenter instead'
|
220
133
|
|
221
134
|
private
|
222
135
|
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
value.dup.force_encoding('UTF-8')
|
230
|
-
else
|
231
|
-
value
|
232
|
-
end
|
233
|
-
end
|
136
|
+
def index_presenter
|
137
|
+
@controller.index_presenter(@document)
|
138
|
+
end
|
139
|
+
|
140
|
+
def show_presenter
|
141
|
+
@controller.show_presenter(@document)
|
234
142
|
end
|
235
143
|
end
|
236
144
|
end
|