blacklight 6.2.0 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|