blacklight 7.12.1 → 7.13.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/VERSION +1 -1
- data/app/components/blacklight/constraints_component.rb +7 -5
- data/app/components/blacklight/document_component.html.erb +1 -0
- data/app/components/blacklight/document_component.rb +14 -1
- data/app/components/blacklight/facet_field_component.html.erb +1 -0
- data/app/controllers/concerns/blacklight/search_context.rb +1 -1
- data/app/controllers/concerns/blacklight/searchable.rb +1 -1
- data/app/helpers/blacklight/configuration_helper_behavior.rb +3 -9
- data/app/helpers/blacklight/facets_helper_behavior.rb +8 -2
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +7 -5
- data/app/presenters/blacklight/document_presenter.rb +4 -0
- data/app/presenters/blacklight/facet_item_presenter.rb +6 -2
- data/app/presenters/blacklight/index_presenter.rb +2 -2
- data/app/presenters/blacklight/rendering/link_to_facet.rb +3 -1
- data/app/presenters/blacklight/show_presenter.rb +0 -4
- data/app/services/blacklight/search_service.rb +13 -11
- data/app/views/catalog/_search_form.html.erb +1 -1
- data/app/views/catalog/index.json.jbuilder +3 -1
- data/lib/blacklight/configuration/facet_field.rb +7 -0
- data/lib/blacklight/configuration/search_field.rb +5 -0
- data/lib/blacklight/configuration/tool_config.rb +4 -0
- data/lib/blacklight/configuration/view_config.rb +12 -0
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +1 -1
- data/lib/blacklight/search_builder.rb +13 -23
- data/lib/blacklight/search_state.rb +82 -70
- data/lib/blacklight/search_state/filter_field.rb +122 -0
- data/lib/blacklight/solr/search_builder_behavior.rb +71 -51
- data/package.json +4 -0
- data/spec/components/blacklight/document_component_spec.rb +15 -0
- data/spec/features/search_spec.rb +0 -5
- data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +1 -2
- data/spec/lib/blacklight/configuration/view_config_spec.rb +15 -0
- data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +9 -0
- data/spec/lib/blacklight/search_state/filter_field_spec.rb +125 -0
- data/spec/lib/blacklight/search_state_spec.rb +132 -3
- data/spec/models/blacklight/configuration_spec.rb +8 -0
- data/spec/models/blacklight/solr/search_builder_spec.rb +32 -2
- metadata +7 -3
- data/.npmignore +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc85c2e67bf13d0e9c856d53d545896d372495fc242fc3b69d43fdd738681af2
|
4
|
+
data.tar.gz: 573ca993f0519fdb53560d8c14443dc5dd6f092753ba2bcee7a933595234b957
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d08af97a62b30095f7c66ac49f829d0085ca7e2faa1c7cd96d961834031e4fab8eaf3ffb785c8e2d30c970837a27d2fdb0c03e75258ff8ff3f8e43571697948f
|
7
|
+
data.tar.gz: a18de70871cd90a83341a55ebf039b3fb007bd2b49dd27f0786415dc68a21115ddfbcc06a72c57e6043ed7e0a62b18f7cc0913b9e9cbb7eaec7d1d54eaa89106
|
data/.rubocop.yml
CHANGED
@@ -37,6 +37,8 @@ Metrics/BlockLength:
|
|
37
37
|
Metrics/ClassLength:
|
38
38
|
Exclude:
|
39
39
|
- "lib/blacklight/configuration.rb"
|
40
|
+
- "lib/blacklight/search_builder.rb"
|
41
|
+
- "lib/blacklight/search_state.rb"
|
40
42
|
|
41
43
|
Layout/LineLength:
|
42
44
|
Max: 200
|
@@ -46,6 +48,7 @@ Layout/LineLength:
|
|
46
48
|
Metrics/ModuleLength:
|
47
49
|
Exclude:
|
48
50
|
- 'app/controllers/concerns/blacklight/catalog.rb'
|
51
|
+
- 'lib/blacklight/solr/search_builder_behavior.rb'
|
49
52
|
|
50
53
|
Naming/HeredocDelimiterNaming:
|
51
54
|
Enabled: false
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
7.
|
1
|
+
7.13.0
|
@@ -47,13 +47,15 @@ module Blacklight
|
|
47
47
|
private
|
48
48
|
|
49
49
|
def facet_item_presenters
|
50
|
-
|
51
|
-
|
50
|
+
Deprecation.silence(Blacklight::SearchState) do
|
51
|
+
@search_state.filter_params.each_pair.flat_map do |facet, values|
|
52
|
+
facet_config = @view_context.facet_configuration_for_field(facet)
|
52
53
|
|
53
|
-
|
54
|
-
|
54
|
+
Array(values).map do |val|
|
55
|
+
next if val.blank? # skip empty string
|
55
56
|
|
56
|
-
|
57
|
+
facet_item_presenter(facet_config, val, facet)
|
58
|
+
end
|
57
59
|
end
|
58
60
|
end
|
59
61
|
end
|
@@ -6,7 +6,7 @@ module Blacklight
|
|
6
6
|
# the accessors below.
|
7
7
|
with_content_areas :header, :body, :footer,
|
8
8
|
:before_title, :title, :after_title,
|
9
|
-
:actions, :metadata, :thumbnail,
|
9
|
+
:actions, :embed, :metadata, :thumbnail,
|
10
10
|
:partials
|
11
11
|
with_collection_parameter :document
|
12
12
|
|
@@ -25,6 +25,7 @@ module Blacklight
|
|
25
25
|
def initialize(document: nil, presenter: nil,
|
26
26
|
id: nil, classes: [], component: :article, title_component: :h4,
|
27
27
|
metadata_component: Blacklight::DocumentMetadataComponent,
|
28
|
+
embed_component: nil,
|
28
29
|
counter: nil, document_counter: nil, counter_offset: 0,
|
29
30
|
show: false)
|
30
31
|
if presenter.nil? && document.nil?
|
@@ -39,8 +40,10 @@ module Blacklight
|
|
39
40
|
@id = id || ('document' if show)
|
40
41
|
@classes = classes
|
41
42
|
|
43
|
+
@embed_component = embed_component
|
42
44
|
@metadata_component = metadata_component
|
43
45
|
|
46
|
+
@document_counter = document_counter
|
44
47
|
@counter = counter
|
45
48
|
@counter ||= document_counter + 1 + counter_offset if document_counter.present?
|
46
49
|
|
@@ -101,6 +104,16 @@ module Blacklight
|
|
101
104
|
@before_title || counter
|
102
105
|
end
|
103
106
|
|
107
|
+
def embed
|
108
|
+
return @embed if @embed
|
109
|
+
|
110
|
+
component = @embed_component || presenter.view_config.embed_component
|
111
|
+
|
112
|
+
return unless component
|
113
|
+
|
114
|
+
@view_context.render(component.new(document: @document, presenter: presenter, document_counter: @document_counter))
|
115
|
+
end
|
116
|
+
|
104
117
|
private
|
105
118
|
|
106
119
|
def counter
|
@@ -1,6 +1,7 @@
|
|
1
1
|
<div class="card facet-limit blacklight-<%= @facet_field.key %> <%= 'facet-limit-active' if @facet_field.active? %>">
|
2
2
|
<h3 class="card-header p-0 facet-field-heading" id="<%= @facet_field.html_id %>-header">
|
3
3
|
<button
|
4
|
+
type="button"
|
4
5
|
class="btn btn-block p-2 text-left collapse-toggle <%= "collapsed" if @facet_field.collapsed? %>"
|
5
6
|
data-toggle="collapse"
|
6
7
|
data-target="#<%= @facet_field.html_id %>"
|
@@ -111,7 +111,7 @@ module Blacklight::SearchContext
|
|
111
111
|
def setup_next_and_previous_documents
|
112
112
|
if search_session['counter'] && current_search_session
|
113
113
|
index = search_session['counter'].to_i - 1
|
114
|
-
response, documents = search_service.previous_and_next_documents_for_search index, search_state.reset(current_search_session.query_params)
|
114
|
+
response, documents = search_service.previous_and_next_documents_for_search index, search_state.reset(current_search_session.query_params)
|
115
115
|
|
116
116
|
search_session['total'] = response.total
|
117
117
|
{ prev: documents.first, next: documents.last }
|
@@ -13,7 +13,7 @@
|
|
13
13
|
module Blacklight::Searchable
|
14
14
|
# @return [Blacklight::SearchService]
|
15
15
|
def search_service
|
16
|
-
search_service_class.new(config: blacklight_config, user_params: search_state.to_h, **search_service_context)
|
16
|
+
search_service_class.new(config: blacklight_config, search_state: search_state, user_params: search_state.to_h, **search_service_context)
|
17
17
|
end
|
18
18
|
|
19
19
|
# @return [Hash] a hash of context information to pass through to the search service
|
@@ -103,15 +103,9 @@ module Blacklight::ConfigurationHelperBehavior
|
|
103
103
|
# @return [String]
|
104
104
|
def view_label view
|
105
105
|
view_config = blacklight_config.view[view]
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
view_config.label,
|
110
|
-
view_config.title,
|
111
|
-
view.to_s.humanize
|
112
|
-
)
|
113
|
-
end
|
114
|
-
deprecation_deprecate view_label: 'Moving to Blacklight::Response::ViewTypeComponent'
|
106
|
+
view_config.display_label(view)
|
107
|
+
end
|
108
|
+
deprecation_deprecate view_label: 'Moving to ViewConfig#display_label and Blacklight::Response::ViewTypeComponent'
|
115
109
|
|
116
110
|
# Shortcut for commonly needed operation, look up display
|
117
111
|
# label for the key specified.
|
@@ -254,7 +254,10 @@ module Blacklight::FacetsHelperBehavior
|
|
254
254
|
# @return [Boolean]
|
255
255
|
def facet_field_in_params? field
|
256
256
|
config = facet_configuration_for_field(field)
|
257
|
-
|
257
|
+
|
258
|
+
Deprecation.silence(Blacklight::SearchState) do
|
259
|
+
search_state.has_facet? config
|
260
|
+
end
|
258
261
|
end
|
259
262
|
# Left undeprecated for the sake of temporary backwards compatibility
|
260
263
|
# deprecation_deprecate :facet_field_in_params?
|
@@ -269,7 +272,10 @@ module Blacklight::FacetsHelperBehavior
|
|
269
272
|
# @return [Boolean]
|
270
273
|
def facet_in_params?(field, item)
|
271
274
|
config = facet_configuration_for_field(field)
|
272
|
-
|
275
|
+
|
276
|
+
Deprecation.silence(Blacklight::SearchState) do
|
277
|
+
search_state.has_facet? config, value: facet_value_for_facet_item(item)
|
278
|
+
end
|
273
279
|
end
|
274
280
|
deprecation_deprecate :facet_in_params?
|
275
281
|
|
@@ -84,12 +84,14 @@ module Blacklight::RenderConstraintsHelperBehavior
|
|
84
84
|
Deprecation.warn(Blacklight::RenderConstraintsHelperBehavior, 'render_constraints_filters is deprecated')
|
85
85
|
search_state = convert_to_search_state(params_or_search_state)
|
86
86
|
|
87
|
-
|
87
|
+
Deprecation.silence(Blacklight::SearchState) do
|
88
|
+
return "".html_safe if search_state.filter_params.blank?
|
88
89
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
90
|
+
Deprecation.silence(Blacklight::RenderConstraintsHelperBehavior) do
|
91
|
+
safe_join(search_state.filter_params.each_pair.map do |facet, values|
|
92
|
+
render_filter_element(facet, values, search_state)
|
93
|
+
end, "\n")
|
94
|
+
end
|
93
95
|
end
|
94
96
|
end
|
95
97
|
|
@@ -18,7 +18,9 @@ module Blacklight
|
|
18
18
|
# Check if the query parameters have the given facet field with the
|
19
19
|
# given value.
|
20
20
|
def selected?
|
21
|
-
|
21
|
+
Deprecation.silence(Blacklight::SearchState) do
|
22
|
+
search_state.has_facet? facet_config, value: facet_value
|
23
|
+
end
|
22
24
|
end
|
23
25
|
|
24
26
|
def field_label
|
@@ -60,7 +62,9 @@ module Blacklight
|
|
60
62
|
|
61
63
|
# @private
|
62
64
|
def remove_href(path = search_state)
|
63
|
-
|
65
|
+
Deprecation.silence(Blacklight::SearchState) do
|
66
|
+
view_context.search_action_path(path.remove_facet_params(facet_config.key, facet_item))
|
67
|
+
end
|
64
68
|
end
|
65
69
|
|
66
70
|
# @private
|
@@ -29,12 +29,12 @@ module Blacklight
|
|
29
29
|
|
30
30
|
deprecation_deprecate label: 'Use #heading'
|
31
31
|
|
32
|
-
private
|
33
|
-
|
34
32
|
def view_config
|
35
33
|
@view_config ||= configuration.view_config(view_context.document_index_view_type)
|
36
34
|
end
|
37
35
|
|
36
|
+
private
|
37
|
+
|
38
38
|
# @return [Hash<String,Configuration::Field>] all the fields for this index view
|
39
39
|
def fields
|
40
40
|
configuration.index_fields_for(display_type)
|
@@ -2,9 +2,10 @@
|
|
2
2
|
# SearchService returns search results from the repository
|
3
3
|
module Blacklight
|
4
4
|
class SearchService
|
5
|
-
def initialize(config:, user_params:
|
5
|
+
def initialize(config:, search_state: nil, user_params: nil, search_builder_class: config.search_builder_class, **context)
|
6
6
|
@blacklight_config = config
|
7
|
-
@
|
7
|
+
@search_state = search_state || Blacklight::SearchState.new(user_params || {}, config)
|
8
|
+
@user_params = @search_state.params
|
8
9
|
@search_builder_class = search_builder_class
|
9
10
|
@context = context
|
10
11
|
end
|
@@ -20,9 +21,9 @@ module Blacklight
|
|
20
21
|
# @yield [search_builder] optional block yields configured SearchBuilder, caller can modify or create new SearchBuilder to be used. Block should return SearchBuilder to be used.
|
21
22
|
# @return [Blacklight::Solr::Response] the solr response object
|
22
23
|
def search_results
|
23
|
-
builder = search_builder.with(
|
24
|
-
builder.page =
|
25
|
-
builder.rows =
|
24
|
+
builder = search_builder.with(search_state)
|
25
|
+
builder.page = search_state.page
|
26
|
+
builder.rows = search_state.per_page
|
26
27
|
|
27
28
|
builder = yield(builder) if block_given?
|
28
29
|
response = repository.search(builder)
|
@@ -51,7 +52,7 @@ module Blacklight
|
|
51
52
|
# Get the solr response when retrieving only a single facet field
|
52
53
|
# @return [Blacklight::Solr::Response] the solr response
|
53
54
|
def facet_field_response(facet_field, extra_controller_params = {})
|
54
|
-
query = search_builder.with(
|
55
|
+
query = search_builder.with(search_state).facet(facet_field)
|
55
56
|
repository.search(query.merge(extra_controller_params))
|
56
57
|
end
|
57
58
|
|
@@ -59,7 +60,8 @@ module Blacklight
|
|
59
60
|
# @return [Blacklight::Solr::Response, Array<Blacklight::SolrDocument>] the solr response and a list of the first and last document
|
60
61
|
def previous_and_next_documents_for_search(index, request_params, extra_controller_params = {})
|
61
62
|
p = previous_and_next_document_params(index)
|
62
|
-
|
63
|
+
new_state = request_params.is_a?(Blacklight::SearchState) ? request_params : Blacklight::SearchState.new(request_params, blacklight_config)
|
64
|
+
query = search_builder.with(new_state).start(p.delete(:start)).rows(p.delete(:rows)).merge(extra_controller_params).merge(p)
|
63
65
|
response = repository.search(query)
|
64
66
|
document_list = response.documents
|
65
67
|
|
@@ -78,15 +80,15 @@ module Blacklight
|
|
78
80
|
def opensearch_response(field = nil, extra_controller_params = {})
|
79
81
|
field ||= blacklight_config.view_config(:opensearch).title_field
|
80
82
|
|
81
|
-
query = search_builder.with(
|
83
|
+
query = search_builder.with(search_state).merge(solr_opensearch_params(field)).merge(extra_controller_params)
|
82
84
|
response = repository.search(query)
|
83
85
|
|
84
|
-
[
|
86
|
+
[search_state.query_param, response.documents.flat_map { |doc| doc[field] }.uniq]
|
85
87
|
end
|
86
88
|
|
87
89
|
private
|
88
90
|
|
89
|
-
attr_reader :search_builder_class, :user_params
|
91
|
+
attr_reader :search_builder_class, :user_params, :search_state
|
90
92
|
|
91
93
|
delegate :repository, to: :blacklight_config
|
92
94
|
|
@@ -135,7 +137,7 @@ module Blacklight
|
|
135
137
|
extra_controller_params ||= {}
|
136
138
|
|
137
139
|
query = search_builder
|
138
|
-
.with(
|
140
|
+
.with(search_state)
|
139
141
|
.where(blacklight_config.document_model.unique_key => ids)
|
140
142
|
.merge(blacklight_config.fetch_many_document_params)
|
141
143
|
.merge(extra_controller_params)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= render(Blacklight::SearchBarComponent.new(
|
2
2
|
url: search_action_url,
|
3
3
|
params: search_state.params_for_search.except(:qt),
|
4
|
-
search_fields: search_fields,
|
4
|
+
search_fields: Deprecation.silence(Blacklight::ConfigurationHelperBehavior) { search_fields },
|
5
5
|
presenter: presenter,
|
6
6
|
autocomplete_path: search_action_path(action: :suggest))) %>
|
@@ -51,7 +51,9 @@ json.included do
|
|
51
51
|
json.links do
|
52
52
|
Deprecation.silence(Blacklight::FacetsHelperBehavior) do
|
53
53
|
if facet_in_params?(facet.name, item.value)
|
54
|
-
|
54
|
+
Deprecation.silence(Blacklight::SearchState) do
|
55
|
+
json.remove search_action_path(search_state.remove_facet_params(facet.name, item.value))
|
56
|
+
end
|
55
57
|
else
|
56
58
|
json.self path_for_facet(facet.name, item.value, only_path: false)
|
57
59
|
end
|
@@ -46,6 +46,13 @@ module Blacklight
|
|
46
46
|
# are a hash containing: label (a label to show the user in the facet interface), fq (a string passed into solr as an fq (when selected) or a facet.query)
|
47
47
|
# @!attribute pivot
|
48
48
|
# @return []
|
49
|
+
# @!attribute filter_query_builder
|
50
|
+
# @return [nil, #call] a Proc (or other object responding to #call) that receives as parameters: 1) the search builder, 2) this facet config
|
51
|
+
# and 3) the solr parameters hash. The Proc returns a string suitable for e.g. Solr's fq parameter, or a 2-element array of the string and a hash of additional
|
52
|
+
# parameters to include with the query (i.e. for referenced subqueries); note that implementations are responsible for ensuring
|
53
|
+
# the additional parameter keys are unique.
|
54
|
+
# @!attribute filter_class
|
55
|
+
# @ return [nil, Blacklight::SearchState::FilterField] a class that implements the `FilterField`'s' API to manage URL parameters for a facet
|
49
56
|
|
50
57
|
##
|
51
58
|
# Rendering:
|
@@ -3,6 +3,11 @@ module Blacklight
|
|
3
3
|
class Configuration::SearchField < Blacklight::Configuration::Field
|
4
4
|
# @!attribute include_in_simple_select
|
5
5
|
# @!attribute qt
|
6
|
+
# @!attribute query_builder
|
7
|
+
# @return [nil, #call] a Proc (or other object responding to #call) that receives as parameters: 1) the search builder, 2) this search field,
|
8
|
+
# and 3) the solr_parameters hash. The Proc returns a string suitable for e.g. Solr's q parameter, or a 2-element array of the
|
9
|
+
# string and a hash of additional parameters to include with the query (i.e. for referenced subqueries); note that
|
10
|
+
# implementations are responsible for ensuring the additional parameter keys are unique.
|
6
11
|
|
7
12
|
def normalize! blacklight_config = nil
|
8
13
|
self.if = include_in_simple_select if self.if.nil?
|
@@ -17,6 +17,18 @@ class Blacklight::Configuration
|
|
17
17
|
super || Blacklight::SearchBarPresenter
|
18
18
|
end
|
19
19
|
|
20
|
+
def display_label(key)
|
21
|
+
I18n.t(
|
22
|
+
:"blacklight.search.view_title.#{key}",
|
23
|
+
default: [
|
24
|
+
:"blacklight.search.view.#{key}",
|
25
|
+
label,
|
26
|
+
title,
|
27
|
+
key.to_s.humanize
|
28
|
+
]
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
20
32
|
class Show < ViewConfig
|
21
33
|
# @!attribute route
|
22
34
|
# @return [Hash] Default route parameters for 'show' requests.
|
@@ -8,7 +8,7 @@ module Blacklight
|
|
8
8
|
class_attribute :default_processor_chain
|
9
9
|
self.default_processor_chain = []
|
10
10
|
|
11
|
-
attr_reader :processor_chain, :blacklight_params
|
11
|
+
attr_reader :processor_chain, :search_state, :blacklight_params
|
12
12
|
|
13
13
|
# @overload initialize(scope)
|
14
14
|
# @param [Object] scope scope the scope where the filter methods reside in.
|
@@ -27,15 +27,17 @@ module Blacklight
|
|
27
27
|
end
|
28
28
|
|
29
29
|
@blacklight_params = {}
|
30
|
+
@search_state = Blacklight::SearchState.new(@blacklight_params, @scope&.blacklight_config, @scope)
|
30
31
|
@merged_params = {}
|
31
32
|
@reverse_merged_params = {}
|
32
33
|
end
|
33
34
|
|
34
35
|
##
|
35
36
|
# Set the parameters to pass through the processor chain
|
36
|
-
def with(
|
37
|
+
def with(blacklight_params_or_search_state = {})
|
37
38
|
params_will_change!
|
38
|
-
@
|
39
|
+
@search_state = blacklight_params_or_search_state.is_a?(Blacklight::SearchState) ? blacklight_params_or_search_state : @search_state.reset(blacklight_params_or_search_state)
|
40
|
+
@blacklight_params = @search_state.params.dup
|
39
41
|
self
|
40
42
|
end
|
41
43
|
|
@@ -43,7 +45,8 @@ module Blacklight
|
|
43
45
|
# Update the :q (query) parameter
|
44
46
|
def where(conditions)
|
45
47
|
params_will_change!
|
46
|
-
@
|
48
|
+
@search_state = @search_state.reset(@search_state.params.merge(q: conditions))
|
49
|
+
@blacklight_params = @search_state.params.dup
|
47
50
|
self
|
48
51
|
end
|
49
52
|
|
@@ -52,7 +55,7 @@ module Blacklight
|
|
52
55
|
def append(*addl_processor_chain)
|
53
56
|
params_will_change!
|
54
57
|
builder = self.class.new(processor_chain + addl_processor_chain, scope)
|
55
|
-
.with(
|
58
|
+
.with(search_state)
|
56
59
|
.merge(@merged_params)
|
57
60
|
.reverse_merge(@reverse_merged_params)
|
58
61
|
|
@@ -72,7 +75,7 @@ module Blacklight
|
|
72
75
|
# chain are ignored as no-ops, rather than raising.
|
73
76
|
def except(*except_processor_chain)
|
74
77
|
builder = self.class.new(processor_chain - except_processor_chain, scope)
|
75
|
-
.with(
|
78
|
+
.with(search_state)
|
76
79
|
.merge(@merged_params)
|
77
80
|
.reverse_merge(@reverse_merged_params)
|
78
81
|
|
@@ -175,7 +178,7 @@ module Blacklight
|
|
175
178
|
self.page = value
|
176
179
|
return self
|
177
180
|
end
|
178
|
-
@page ||=
|
181
|
+
@page ||= search_state.page
|
179
182
|
end
|
180
183
|
|
181
184
|
def rows=(value)
|
@@ -191,8 +194,7 @@ module Blacklight
|
|
191
194
|
end
|
192
195
|
@rows ||= begin
|
193
196
|
# user-provided parameters should override any default row
|
194
|
-
r =
|
195
|
-
r ||= blacklight_config.default_per_page
|
197
|
+
r = search_state.per_page
|
196
198
|
# ensure we don't excede the max page size
|
197
199
|
r.nil? ? nil : [r, blacklight_config.max_per_page].map(&:to_i).min
|
198
200
|
end
|
@@ -220,22 +222,10 @@ module Blacklight
|
|
220
222
|
# configured search values are passed through to the search.
|
221
223
|
# @return [String] the field/fields to sort by
|
222
224
|
def sort
|
223
|
-
sort_field
|
224
|
-
# no sort param provided, use default
|
225
|
-
blacklight_config.default_sort_field
|
226
|
-
else
|
227
|
-
# check for sort field key
|
228
|
-
blacklight_config.sort_fields[blacklight_params[:sort]]
|
229
|
-
end
|
230
|
-
return sort_field.sort if sort_field.present?
|
231
|
-
|
232
|
-
Blacklight.logger.warn "Invalid sort field: '#{blacklight_params[:sort]}' was provided."
|
233
|
-
nil
|
225
|
+
search_state.sort_field&.sort
|
234
226
|
end
|
235
227
|
|
236
|
-
|
237
|
-
blacklight_config.search_fields[blacklight_params[:search_field]]
|
238
|
-
end
|
228
|
+
delegate :search_field, to: :search_state
|
239
229
|
|
240
230
|
private
|
241
231
|
|