6
6
# Includes methods for rendering contraints graphically on the
7
7
# search results page (render_constraints(_*))
8
8
module Blacklight ::RenderConstraintsHelperBehavior
9
+ extend Deprecation
10
+ self . deprecation_horizon = 'blacklight 8.0'
11
+
9
12
##
10
13
# Check if the query has any constraints defined (a query, facet, etc)
11
14
#
12
15
# @param [Hash] localized_params query parameters
13
16
# @return [Boolean]
14
- def query_has_constraints? ( localized_params = params )
15
- !( localized_params [ :q ] . blank? && localized_params [ :f ] . blank? )
17
+ def query_has_constraints? ( params_or_search_state = search_state )
18
+ search_state = convert_to_search_state ( params_or_search_state )
19
+ search_state . has_constraints?
16
20
end
21
+ deprecation_deprecate :query_has_constraints?
17
22
18
23
##
19
24
# Render the actual constraints, not including header or footer
20
25
# info.
21
26
#
22
27
# @param [Hash] localized_params query parameters
23
28
# @return [String]
24
- def render_constraints ( localized_params = params )
25
- render_constraints_query ( localized_params ) + render_constraints_filters ( localized_params )
29
+ def render_constraints ( localized_params = params , local_search_state = search_state )
30
+ params_or_search_state = if localized_params != params
31
+ localized_params
32
+ else
33
+ local_search_state
34
+ end
35
+
36
+ Deprecation . silence ( Blacklight ::RenderConstraintsHelperBehavior ) do
37
+ render_constraints_query ( params_or_search_state ) + render_constraints_filters ( params_or_search_state )
38
+ end
26
39
end
27
40
28
41
##
29
42
# Render the query constraints
30
43
#
31
44
# @param [ActionController::Parameters] localized_params query parameters
32
45
# @return [String]
33
- def render_constraints_query ( localized_params = params )
46
+ def render_constraints_query ( params_or_search_state = search_state )
47
+ search_state = convert_to_search_state ( params_or_search_state )
48
+
34
49
# So simple don't need a view template, we can just do it here.
35
- return "" . html_safe if localized_params [ :q ] . blank?
50
+ return "" . html_safe if search_state . query_param . blank?
36
51
37
- render_constraint_element ( constraint_query_label ( localized_params ) ,
38
- localized_params [ :q ] ,
39
- classes : [ "query" ] ,
40
- remove : remove_constraint_url ( localized_params ) )
52
+ Deprecation . silence ( Blacklight ::RenderConstraintsHelperBehavior ) do
53
+ render_constraint_element ( constraint_query_label ( search_state ) ,
54
+ search_state . query_param ,
55
+ classes : [ "query" ] ,
56
+ remove : remove_constraint_url ( search_state ) )
57
+ end
41
58
end
59
+ deprecation_deprecate :render_constraints_query
42
60
43
61
##
44
62
# Provide a url for removing a particular constraint. This can be overriden
@@ -47,54 +65,53 @@ def render_constraints_query(localized_params = params)
47
65
#
48
66
# @param [ActionController::Parameters] localized_params query parameters
49
67
# @return [String]
50
- def remove_constraint_url ( localized_params )
51
- scope = localized_params . delete ( :route_set ) || self
52
-
53
- unless localized_params . is_a? ActionController ::Parameters
54
- localized_params = ActionController ::Parameters . new ( localized_params )
55
- end
68
+ def remove_constraint_url ( params_or_search_state = search_state )
69
+ search_state = convert_to_search_state ( params_or_search_state )
56
70
57
- options = localized_params . merge ( q : nil , action : 'index' )
58
- options . permit!
59
- scope . url_for ( options )
71
+ search_action_path ( search_state . remove_query_params )
60
72
end
73
+ deprecation_deprecate :remove_constraint_url
61
74
62
75
##
63
76
# Render the facet constraints
64
77
# @param [Hash] localized_params query parameters
65
78
# @return [String]
66
- def render_constraints_filters ( localized_params = params )
67
- return "" . html_safe unless localized_params [ :f ]
79
+ def render_constraints_filters ( params_or_search_state = search_state )
80
+ search_state = convert_to_search_state ( params_or_search_state )
68
81
69
- path = controller . search_state_class . new ( localized_params , blacklight_config , controller )
70
- content = [ ]
71
- localized_params [ :f ] . each_pair do |facet , values |
72
- content << render_filter_element ( facet , values , path )
73
- end
82
+ return "" . html_safe if search_state . filter_params . blank?
74
83
75
- safe_join ( content . flatten , "\n " )
84
+ Deprecation . silence ( Blacklight ::RenderConstraintsHelperBehavior ) do
85
+ safe_join ( search_state . filter_params . each_pair . map do |facet , values |
86
+ render_filter_element ( facet , values , search_state )
87
+ end , "\n " )
88
+ end
76
89
end
90
+ deprecation_deprecate :render_constraints_filters
77
91
78
92
##
79
93
# Render a single facet's constraint
80
94
# @param [String] facet field
81
95
# @param [Array<String>] values selected facet values
82
96
# @param [Blacklight::SearchState] path query parameters (unused)
83
97
# @return [String]
84
- def render_filter_element ( facet , values , path )
98
+ def render_filter_element ( facet , values , search_state )
85
99
facet_config = facet_configuration_for_field ( facet )
86
100
87
101
safe_join ( Array ( values ) . map do |val |
88
102
next if val . blank? # skip empty string
89
103
90
104
presenter = facet_item_presenter ( facet_config , val , facet )
91
105
92
- render_constraint_element ( facet_field_label ( facet_config . key ) ,
93
- presenter . label ,
94
- remove : presenter . remove_href ( path ) ,
95
- classes : [ "filter" , "filter-" + facet . parameterize ] )
106
+ Deprecation . silence ( Blacklight ::RenderConstraintsHelperBehavior ) do
107
+ render_constraint_element ( facet_field_label ( facet_config . key ) ,
108
+ presenter . label ,
109
+ remove : presenter . remove_href ( search_state ) ,
110
+ classes : [ "filter" , "filter-" + facet . parameterize ] )
111
+ end
96
112
end , "\n " )
97
113
end
114
+ deprecation_deprecate :render_filter_element
98
115
99
116
# Render a label/value constraint on the screen. Can be called
100
117
# by plugins and such to get application-defined rendering.
@@ -113,4 +130,16 @@ def render_filter_element(facet, values, path)
113
130
def render_constraint_element ( label , value , options = { } )
114
131
render ( partial : "catalog/constraints_element" , locals : { label : label , value : value , options : options } )
115
132
end
133
+ deprecation_deprecate :render_constraint_element
134
+
135
+ private
136
+
137
+ def convert_to_search_state ( params_or_search_state )
138
+ if params_or_search_state . is_a? Blacklight ::SearchState
139
+ params_or_search_state
140
+ else
141
+ # deprecated
142
+ controller . search_state_class . new ( params_or_search_state , blacklight_config , controller )
143
+ end
144
+ end
116
145
end
0 commit comments