blacklight 7.15.1 → 7.17.2
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 +4 -0
- data/VERSION +1 -1
- data/app/components/blacklight/advanced_search_form_component.html.erb +9 -3
- data/app/components/blacklight/advanced_search_form_component.rb +48 -35
- data/app/components/blacklight/constraints_component.html.erb +19 -3
- data/app/components/blacklight/constraints_component.rb +5 -1
- data/app/components/blacklight/content_areas_shim.rb +12 -0
- data/app/components/blacklight/document/action_component.html.erb +1 -1
- data/app/components/blacklight/document/action_component.rb +6 -1
- data/app/components/blacklight/document/actions_component.html.erb +3 -5
- data/app/components/blacklight/document/actions_component.rb +16 -2
- data/app/components/blacklight/document_component.html.erb +4 -7
- data/app/components/blacklight/document_component.rb +73 -73
- data/app/components/blacklight/document_metadata_component.html.erb +2 -2
- data/app/components/blacklight/document_metadata_component.rb +13 -2
- data/app/components/blacklight/document_title_component.html.erb +17 -0
- data/app/components/blacklight/document_title_component.rb +59 -0
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +2 -2
- data/app/components/blacklight/facet_field_component.rb +4 -1
- data/app/components/blacklight/facet_field_list_component.html.erb +2 -2
- data/app/components/blacklight/facet_field_no_layout_component.rb +4 -1
- data/app/components/blacklight/metadata_field_component.html.erb +2 -2
- data/app/components/blacklight/metadata_field_layout_component.html.erb +3 -1
- data/app/components/blacklight/metadata_field_layout_component.rb +26 -1
- data/app/components/blacklight/response/view_type_button_component.html.erb +4 -0
- data/app/components/blacklight/response/view_type_button_component.rb +38 -0
- data/app/components/blacklight/response/view_type_component.html.erb +2 -5
- data/app/components/blacklight/response/view_type_component.rb +9 -13
- data/app/components/blacklight/search_bar_component.rb +9 -2
- data/app/components/blacklight/system/dropdown_component.html.erb +4 -7
- data/app/components/blacklight/system/dropdown_component.rb +24 -0
- data/app/components/blacklight/system/flash_message_component.html.erb +1 -1
- data/app/components/blacklight/system/flash_message_component.rb +7 -1
- data/app/components/blacklight/system/modal_component.rb +7 -1
- data/app/controllers/concerns/blacklight/catalog.rb +1 -1
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +3 -4
- data/app/helpers/blacklight/catalog_helper_behavior.rb +2 -0
- data/app/helpers/blacklight/component_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -2
- data/app/presenters/blacklight/document_presenter.rb +8 -4
- data/app/services/blacklight/search_service.rb +1 -1
- data/app/views/bookmarks/_tools.html.erb +1 -1
- data/app/views/catalog/_citation.html.erb +1 -1
- data/app/views/catalog/_document.html.erb +2 -2
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_show_main_content.html.erb +3 -3
- data/app/views/catalog/email.html.erb +2 -2
- data/app/views/catalog/email_success.html.erb +1 -1
- data/app/views/catalog/facet.html.erb +3 -3
- data/app/views/catalog/sms.html.erb +2 -2
- data/app/views/catalog/sms_success.html.erb +1 -1
- data/blacklight.gemspec +1 -1
- data/config/locales/blacklight.de.yml +2 -2
- data/lib/blacklight/configuration.rb +50 -5
- data/lib/blacklight/configuration/view_config.rb +18 -5
- data/lib/blacklight/engine.rb +3 -1
- data/lib/blacklight/open_struct_with_hash_access.rb +22 -1
- data/lib/blacklight/search_state.rb +2 -2
- data/lib/blacklight/solr/facet_paginator.rb +2 -0
- data/lib/blacklight/solr/request.rb +31 -0
- data/lib/blacklight/solr/response.rb +2 -16
- data/lib/blacklight/solr/response/facets.rb +76 -22
- data/lib/blacklight/solr/response/params.rb +104 -0
- data/lib/blacklight/solr/search_builder_behavior.rb +57 -27
- data/lib/generators/blacklight/assets_generator.rb +6 -2
- data/lib/generators/blacklight/user_generator.rb +1 -1
- data/spec/components/blacklight/document_component_spec.rb +3 -3
- data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +20 -0
- data/spec/models/blacklight/configuration_spec.rb +64 -0
- data/spec/models/blacklight/solr/facet_paginator_spec.rb +4 -0
- data/spec/models/blacklight/solr/request_spec.rb +62 -29
- data/spec/models/blacklight/solr/response/facets_spec.rb +109 -0
- data/spec/models/blacklight/solr/response_spec.rb +10 -0
- data/spec/models/blacklight/solr/search_builder_spec.rb +49 -0
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +8 -9
- data/spec/views/catalog/index.atom.builder_spec.rb +1 -1
- metadata +10 -4
@@ -3,7 +3,13 @@
|
|
3
3
|
module Blacklight
|
4
4
|
module System
|
5
5
|
class ModalComponent < ViewComponent::Base
|
6
|
-
|
6
|
+
include Blacklight::ContentAreasShim
|
7
|
+
|
8
|
+
renders_one :prefix
|
9
|
+
renders_one :header
|
10
|
+
renders_one :title
|
11
|
+
renders_one :body
|
12
|
+
renders_one :footer
|
7
13
|
end
|
8
14
|
end
|
9
15
|
end
|
@@ -198,7 +198,7 @@ module Blacklight::Catalog
|
|
198
198
|
# @example
|
199
199
|
# config.index.respond_to.txt = Proc.new { render plain: "A list of docs." }
|
200
200
|
def additional_response_formats(format)
|
201
|
-
blacklight_config.index.respond_to.each do |key, config|
|
201
|
+
blacklight_config.view_config(action_name: :index).respond_to.each do |key, config|
|
202
202
|
format.send key do
|
203
203
|
case config
|
204
204
|
when false
|
@@ -380,7 +380,7 @@ module Blacklight::BlacklightHelperBehavior
|
|
380
380
|
def show_presenter_class(_document)
|
381
381
|
Deprecation.warn(Blacklight::BlacklightHelperBehavior, '#show_presenter_class is deprecated; use #document_presenter_class instead')
|
382
382
|
|
383
|
-
blacklight_config.show.document_presenter_class
|
383
|
+
blacklight_config.view_config(:show, action_name: action_name).document_presenter_class
|
384
384
|
end
|
385
385
|
|
386
386
|
# @deprecated
|
@@ -388,13 +388,12 @@ module Blacklight::BlacklightHelperBehavior
|
|
388
388
|
def index_presenter_class(_document)
|
389
389
|
Deprecation.warn(Blacklight::BlacklightHelperBehavior, '#index_presenter_class is deprecated; use #document_presenter_class instead')
|
390
390
|
|
391
|
-
|
392
|
-
blacklight_config.index.document_presenter_class
|
391
|
+
blacklight_config.view_config(document_index_view_type, action_name: action_name).document_presenter_class
|
393
392
|
end
|
394
393
|
|
395
394
|
# @return [Class]
|
396
395
|
def search_bar_presenter_class
|
397
|
-
blacklight_config.index.search_bar_presenter_class
|
396
|
+
blacklight_config.view_config(action_name: :index).search_bar_presenter_class
|
398
397
|
end
|
399
398
|
|
400
399
|
# @!group Layout helpers
|
@@ -253,11 +253,13 @@ module Blacklight::CatalogHelperBehavior
|
|
253
253
|
##
|
254
254
|
# Render the view type icon for the results view picker
|
255
255
|
#
|
256
|
+
# @deprecated
|
256
257
|
# @param [String] view
|
257
258
|
# @return [String]
|
258
259
|
def render_view_type_group_icon view
|
259
260
|
blacklight_icon(view)
|
260
261
|
end
|
262
|
+
deprecation_deprecate render_view_type_group_icon: 'call blacklight_icon instead'
|
261
263
|
|
262
264
|
##
|
263
265
|
# Get the default view type classes for a view in the results view picker
|
@@ -94,11 +94,11 @@ module Blacklight
|
|
94
94
|
end
|
95
95
|
|
96
96
|
def show_doc_actions?(document = @document, options = {})
|
97
|
-
filter_partials(blacklight_config.show.document_actions, { document: document }.merge(options)).any?
|
97
|
+
filter_partials(blacklight_config.view_config(:show).document_actions, { document: document }.merge(options)).any?
|
98
98
|
end
|
99
99
|
|
100
100
|
def document_actions(document, options: {})
|
101
|
-
filter_partials(blacklight_config.show.document_actions, { document: document }.merge(options)).map { |_k, v| v }
|
101
|
+
filter_partials(blacklight_config.view_config(:show).document_actions, { document: document }.merge(options)).map { |_k, v| v }
|
102
102
|
end
|
103
103
|
|
104
104
|
private
|
@@ -101,9 +101,9 @@ module Blacklight::ConfigurationHelperBehavior
|
|
101
101
|
|
102
102
|
# Return the label for a search view
|
103
103
|
# @return [String]
|
104
|
-
def view_label
|
104
|
+
def view_label(view)
|
105
105
|
view_config = blacklight_config.view[view]
|
106
|
-
view_config.display_label
|
106
|
+
view_config.display_label
|
107
107
|
end
|
108
108
|
deprecation_deprecate view_label: 'Moving to ViewConfig#display_label and Blacklight::Response::ViewTypeComponent'
|
109
109
|
|
@@ -72,9 +72,9 @@ module Blacklight
|
|
72
72
|
fields += Array.wrap(view_config[:"#{base_name}_display_type_field"]) if base_name && view_config.key?(:"#{base_name}_display_type_field")
|
73
73
|
fields += Array.wrap(view_config.display_type_field)
|
74
74
|
|
75
|
-
if fields.empty?
|
76
|
-
fields += Array.wrap(
|
77
|
-
fields += Array.wrap(
|
75
|
+
if fields.empty? && show_view_config != view_config
|
76
|
+
fields += Array.wrap(show_view_config[:"#{base_name}_display_type_field"]) if base_name && show_view_config.key?(:"#{base_name}_display_type_field")
|
77
|
+
fields += Array.wrap(show_view_config.display_type_field)
|
78
78
|
end
|
79
79
|
|
80
80
|
fields += ['format'] if fields.empty? # backwards compatibility with the old default value for display_type_field
|
@@ -118,7 +118,11 @@ module Blacklight
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def view_config
|
121
|
-
@view_config ||=
|
121
|
+
@view_config ||= show_view_config
|
122
|
+
end
|
123
|
+
|
124
|
+
def show_view_config
|
125
|
+
configuration.view_config(:show)
|
122
126
|
end
|
123
127
|
|
124
128
|
private
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% if render_show_doc_actions_method_from_blacklight? %>
|
2
|
-
<%= render(Blacklight::Document::ActionsComponent.new(document: nil, tag: '
|
2
|
+
<%= render(Blacklight::Document::ActionsComponent.new(document: nil, tag: 'div', classes: "#{controller_name}Tools", wrapping_tag: 'span', wrapping_classes: 'btn btn-outline-primary', link_classes: '', actions: document_actions(document_list, options: { document: nil }), options: { document_list: @response.documents }, url_opts: Blacklight::Parameters.sanitize(params.to_unsafe_h))) %>
|
3
3
|
<% else %>
|
4
4
|
<% Deprecation.warn(self, '#render_show_doc_actions is deprecated; use ActionComponents instead') %>
|
5
5
|
<ul class="<%= controller_name %>Tools nav nav-pills">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%= render Blacklight::System::ModalComponent.new do |component| %>
|
2
|
-
<% component.
|
2
|
+
<% component.title { t('blacklight.tools.citation') } %>
|
3
3
|
|
4
4
|
<%= render Blacklight::Document::CitationComponent.with_collection(@documents) if @documents.present? %>
|
5
5
|
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% # container for a single doc -%>
|
2
|
-
<%= render (blacklight_config.view_config(document_index_view_type).document_component || Blacklight::DocumentComponent).new(
|
3
|
-
<% component.
|
2
|
+
<%= render (blacklight_config.view_config(document_index_view_type).document_component || Blacklight::DocumentComponent).new(presenter: document_presenter(document), counter: document_counter_with_offset(document_counter)) do |component| %>
|
3
|
+
<% component.public_send(blacklight_config.view_config(document_index_view_type).document_component.blank? && blacklight_config.view_config(document_index_view_type).partials.any? ? :body : :partial) do %>
|
4
4
|
<%= render_document_partials document, blacklight_config.view_config(document_index_view_type).partials, component: component, document_counter: document_counter %>
|
5
5
|
<% end %>
|
6
6
|
<% end %>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<%= render(Blacklight::FacetFieldComponent.new(facet_field: facet_field_presenter(facet_field, nil))) do |component| %>
|
2
|
-
<% component.
|
2
|
+
<% component.label do %>
|
3
3
|
<%= facet_field_label(facet_field.key) %>
|
4
4
|
<% end %>
|
5
|
-
<% component.
|
5
|
+
<% component.body do %>
|
6
6
|
<%= yield %>
|
7
7
|
<% end %>
|
8
8
|
<% end %>
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<% @page_title = t('blacklight.search.show.title', document_title: Deprecation.silence(Blacklight::BlacklightHelperBehavior) { document_show_html_title }, application_name: application_name).html_safe %>
|
4
4
|
<% content_for(:head) { render_link_rel_alternates } %>
|
5
5
|
|
6
|
-
<%= render (blacklight_config.show.document_component || Blacklight::DocumentComponent).new(
|
7
|
-
<% component.
|
6
|
+
<%= render (blacklight_config.view_config(:show).document_component || Blacklight::DocumentComponent).new(presenter: document_presenter(@document), component: :div, title_component: :h1, show: true) do |component| %>
|
7
|
+
<% component.footer do %>
|
8
8
|
<% if @document.respond_to?(:export_as_openurl_ctx_kev) %>
|
9
9
|
<!--
|
10
10
|
// COinS, for Zotero among others.
|
@@ -17,7 +17,7 @@
|
|
17
17
|
|
18
18
|
<%# Use :body for complete backwards compatibility (overriding the component body markup),
|
19
19
|
but if the app explicitly opted-in to components, make the partials data available as :partials to ease migrations pain %>
|
20
|
-
<% component.
|
20
|
+
<% component.public_send(blacklight_config.view_config(:show).document_component.blank? && blacklight_config.view_config(:show).partials.any? ? :body : :partial) do %>
|
21
21
|
<div id="doc_<%= @document.id.to_s.parameterize %>">
|
22
22
|
<%= render_document_partials @document, blacklight_config.view_config(:show).partials, component: component %>
|
23
23
|
</div>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%= render Blacklight::System::ModalComponent.new do |component| %>
|
2
|
-
<% component.
|
2
|
+
<% component.title { t('blacklight.email.form.title') } %>
|
3
3
|
|
4
|
-
<% component.
|
4
|
+
<% component.body do %>
|
5
5
|
<%= render 'email_form' %>
|
6
6
|
<% end %>
|
7
7
|
<% end %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%= render Blacklight::System::ModalComponent.new do |component| %>
|
2
|
-
<% component.
|
2
|
+
<% component.title { t('blacklight.email.form.title') } %>
|
3
3
|
|
4
4
|
<%= render partial: '/shared/flash_msg' %>
|
5
5
|
<span data-blacklight-modal="close"></span>
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<%= render Blacklight::System::ModalComponent.new do |component| %>
|
2
|
-
<% component.
|
2
|
+
<% component.prefix do %>
|
3
3
|
<div class="facet-pagination top row justify-content-between">
|
4
4
|
<%= render :partial=>'facet_pagination' %>
|
5
5
|
</div>
|
6
6
|
<% end %>
|
7
7
|
|
8
|
-
<% component.
|
8
|
+
<% component.title { facet_field_label(@facet.key) } %>
|
9
9
|
|
10
10
|
<%= render partial: 'facet_index_navigation' if @facet.index_range && @display_facet.index? %>
|
11
11
|
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<%= render_facet_limit(@display_facet, layout: false) %>
|
14
14
|
</div>
|
15
15
|
|
16
|
-
<% component.
|
16
|
+
<% component.footer do %>
|
17
17
|
<div class="facet-pagination bottom row justify-content-between">
|
18
18
|
<%= render :partial=>'facet_pagination' %>
|
19
19
|
</div>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%= render Blacklight::System::ModalComponent.new do |component| %>
|
2
|
-
<% component.
|
2
|
+
<% component.title { t('blacklight.sms.form.title') } %>
|
3
3
|
|
4
|
-
<% component.
|
4
|
+
<% component.body do %>
|
5
5
|
<%= render 'sms_form' %>
|
6
6
|
<% end %>
|
7
7
|
<% end %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%= render Blacklight::System::ModalComponent.new do |component| %>
|
2
|
-
<% component.
|
2
|
+
<% component.title { t('blacklight.sms.form.title') } %>
|
3
3
|
|
4
4
|
<%= render partial: '/shared/flash_msg' %>
|
5
5
|
<span data-blacklight-modal="close"></span>
|
data/blacklight.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.add_dependency "deprecation"
|
33
33
|
s.add_dependency "i18n", '>= 1.7.0' # added named parameters
|
34
34
|
s.add_dependency "ostruct", '>= 0.3.2'
|
35
|
-
s.add_dependency "view_component", '>= 2.
|
35
|
+
s.add_dependency "view_component", '>= 2.28.0'
|
36
36
|
|
37
37
|
s.add_development_dependency "rsolr", ">= 1.0.6", "< 3" # Library for interacting with rSolr.
|
38
38
|
s.add_development_dependency "rspec-rails", "~> 4.0.0.beta2"
|
@@ -3,7 +3,7 @@ de:
|
|
3
3
|
pagination:
|
4
4
|
first: '« Erste'
|
5
5
|
last: 'Letzte »'
|
6
|
-
previous: '«
|
6
|
+
previous: '« Vorherige'
|
7
7
|
next: 'Nächste »'
|
8
8
|
truncate: '…'
|
9
9
|
aria:
|
@@ -16,7 +16,7 @@ de:
|
|
16
16
|
go_to_previous_page: Zurück zur letzten Seite
|
17
17
|
|
18
18
|
pagination_compact:
|
19
|
-
previous: '«
|
19
|
+
previous: '« Vorherige'
|
20
20
|
next: 'Nächste »'
|
21
21
|
|
22
22
|
blacklight:
|
@@ -95,6 +95,12 @@ module Blacklight
|
|
95
95
|
partials: [:show_header, :show],
|
96
96
|
document_actions: NestedOpenStructWithHashAccess.new(ToolConfig)
|
97
97
|
),
|
98
|
+
action_mapping: NestedOpenStructWithHashAccess.new(
|
99
|
+
ViewConfig,
|
100
|
+
default: { top_level_config: :index },
|
101
|
+
show: { top_level_config: :show },
|
102
|
+
citation: { parent_config: :show }
|
103
|
+
),
|
98
104
|
# Configurations for specific types of index views
|
99
105
|
view: NestedOpenStructWithHashAccess.new(ViewConfig,
|
100
106
|
list: {},
|
@@ -307,13 +313,35 @@ module Blacklight
|
|
307
313
|
end
|
308
314
|
alias_method :inheritable_copy, :build
|
309
315
|
|
310
|
-
# Get a view configuration for the given view type
|
311
|
-
#
|
316
|
+
# Get a view configuration for the given view type + action. The effective
|
317
|
+
# view configuration is inherited from:
|
318
|
+
# - the configuration from blacklight_config.view with the key `view_type`
|
319
|
+
# - the configuration from blacklight_config.action_mapping with the key `action_name`
|
320
|
+
# - any parent config for the action map result above
|
321
|
+
# - the action_mapping default configuration
|
322
|
+
# - the top-level index/show view configuration
|
323
|
+
#
|
312
324
|
# @param [Symbol,#to_sym] view_type
|
313
325
|
# @return [Blacklight::Configuration::ViewConfig]
|
314
|
-
def view_config(view_type)
|
315
|
-
view_type
|
316
|
-
|
326
|
+
def view_config(view_type = nil, action_name: :index)
|
327
|
+
view_type &&= view_type.to_sym
|
328
|
+
action_name &&= action_name.to_sym
|
329
|
+
action_name ||= :index
|
330
|
+
|
331
|
+
if view_type == :show
|
332
|
+
action_name = view_type
|
333
|
+
view_type = nil
|
334
|
+
end
|
335
|
+
|
336
|
+
@view_config ||= {}
|
337
|
+
@view_config[[view_type, action_name]] ||= begin
|
338
|
+
if view_type.nil?
|
339
|
+
action_config(action_name)
|
340
|
+
else
|
341
|
+
base_config = action_config(action_name)
|
342
|
+
base_config.merge(view.fetch(view_type, {}))
|
343
|
+
end
|
344
|
+
end
|
317
345
|
end
|
318
346
|
|
319
347
|
# YARD will include inline disabling as docs, cannot do multiline inside @!macro. AND this must be separate from doc block.
|
@@ -441,5 +469,22 @@ module Blacklight
|
|
441
469
|
yield(object)
|
442
470
|
end
|
443
471
|
end
|
472
|
+
|
473
|
+
def action_config(action, default: :index)
|
474
|
+
action_config = action_mapping[action]
|
475
|
+
action_config ||= action_mapping[:default]
|
476
|
+
|
477
|
+
if action_config.parent_config && action_config.parent_config != :default
|
478
|
+
parent_config = action_mapping[action_config.parent_config]
|
479
|
+
raise "View configuration error: the parent configuration of #{action_config.key}, #{parent_config.key}, must not specific its own parent configuration" if parent_config.parent_config
|
480
|
+
|
481
|
+
action_config = action_config.reverse_merge(parent_config)
|
482
|
+
end
|
483
|
+
action_config = action_config.reverse_merge(action_mapping[:default]) if action_config != action_mapping[:default]
|
484
|
+
|
485
|
+
action_config = action_config.reverse_merge(self[action_config.top_level_config]) if action_config.top_level_config
|
486
|
+
action_config = action_config.reverse_merge(show) if default == :show && action_config.top_level_config != :show
|
487
|
+
action_config.reverse_merge(index)
|
488
|
+
end
|
444
489
|
end
|
445
490
|
end
|
@@ -11,21 +11,26 @@ class Blacklight::Configuration
|
|
11
11
|
# @return [String, Symbol] solr field to use to render a document title
|
12
12
|
# @!attribute display_type_field
|
13
13
|
# @return [String, Symbol] solr field to use to render format-specific partials
|
14
|
+
# @!attribute icon
|
15
|
+
# @return [String, Symbol] icon file to use in the view picker
|
14
16
|
# @!attribute document_actions
|
15
17
|
# @return [NestedOpenStructWithHashAccess{Symbol => Blacklight::Configuration::ToolConfig}] 'tools' to render for each document
|
16
18
|
def search_bar_presenter_class
|
17
19
|
super || Blacklight::SearchBarPresenter
|
18
20
|
end
|
19
21
|
|
20
|
-
def display_label(
|
22
|
+
def display_label(deprecated_key = nil, **options)
|
23
|
+
Deprecation.warn('Passing the key argument to ViewConfig#display_label is deprecated') if deprecated_key.present?
|
24
|
+
|
21
25
|
I18n.t(
|
22
|
-
:"blacklight.search.view_title.#{key}",
|
26
|
+
:"blacklight.search.view_title.#{deprecated_key || key}",
|
23
27
|
default: [
|
24
|
-
:"blacklight.search.view.#{key}",
|
28
|
+
:"blacklight.search.view.#{deprecated_key || key}",
|
25
29
|
label,
|
26
30
|
title,
|
27
|
-
key.to_s.humanize
|
28
|
-
]
|
31
|
+
(deprecated_key || key).to_s.humanize
|
32
|
+
],
|
33
|
+
**options
|
29
34
|
)
|
30
35
|
end
|
31
36
|
|
@@ -38,6 +43,10 @@ class Blacklight::Configuration
|
|
38
43
|
def document_presenter_class
|
39
44
|
super || Blacklight::ShowPresenter
|
40
45
|
end
|
46
|
+
|
47
|
+
def to_h
|
48
|
+
super.merge(document_presenter_class: document_presenter_class)
|
49
|
+
end
|
41
50
|
end
|
42
51
|
|
43
52
|
class Index < ViewConfig
|
@@ -52,6 +61,10 @@ class Blacklight::Configuration
|
|
52
61
|
def document_presenter_class
|
53
62
|
super || Blacklight::IndexPresenter
|
54
63
|
end
|
64
|
+
|
65
|
+
def to_h
|
66
|
+
super.merge(document_presenter_class: document_presenter_class)
|
67
|
+
end
|
55
68
|
end
|
56
69
|
end
|
57
70
|
end
|
data/lib/blacklight/engine.rb
CHANGED
@@ -8,7 +8,9 @@ module Blacklight
|
|
8
8
|
# BlacklightHelper is needed by all helpers, so we inject it
|
9
9
|
# into action view base here.
|
10
10
|
initializer 'blacklight.helpers' do
|
11
|
-
|
11
|
+
config.after_initialize do
|
12
|
+
ActionView::Base.include BlacklightHelper
|
13
|
+
end
|
12
14
|
end
|
13
15
|
|
14
16
|
# This makes our rake tasks visible.
|
@@ -4,7 +4,9 @@ module Blacklight
|
|
4
4
|
##
|
5
5
|
# An OpenStruct that responds to common Hash methods
|
6
6
|
class OpenStructWithHashAccess < OpenStruct
|
7
|
-
delegate :keys, :each, :map, :has_key?, :key?, :include?, :empty?,
|
7
|
+
delegate :keys, :each, :map, :has_key?, :key?, :include?, :empty?,
|
8
|
+
:length, :delete, :delete_if, :keep_if, :clear, :reject!, :select!,
|
9
|
+
:replace, :fetch, :to_json, :as_json, :any?, to: :to_h
|
8
10
|
|
9
11
|
##
|
10
12
|
# Expose the internal hash
|
@@ -42,8 +44,27 @@ module Blacklight
|
|
42
44
|
@table.merge!((other_hash if other_hash.is_a? Hash) || other_hash.to_h)
|
43
45
|
end
|
44
46
|
|
47
|
+
def reverse_merge(other_hash)
|
48
|
+
self.class.new to_h.reverse_merge((other_hash if other_hash.is_a? Hash) || other_hash.to_h)
|
49
|
+
end
|
50
|
+
|
45
51
|
def deep_dup
|
46
52
|
self.class.new @table.deep_dup
|
47
53
|
end
|
54
|
+
|
55
|
+
if Rails.version < '6'
|
56
|
+
# Ported from Rails 6 to fix an incompatibility with ostruct
|
57
|
+
def try(method_name = nil, *args, &block)
|
58
|
+
if method_name.nil? && block_given?
|
59
|
+
if b.arity.zero?
|
60
|
+
instance_eval(&block)
|
61
|
+
else
|
62
|
+
yield self
|
63
|
+
end
|
64
|
+
elsif respond_to?(method_name)
|
65
|
+
public_send(method_name, *args, &b)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
48
69
|
end
|
49
70
|
end
|