From 69b7d8ef8f1335b762331dfbdd4514363866b1db Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Wed, 27 Jul 2022 14:10:19 -0400 Subject: [PATCH 1/3] Restores keyword params on results page from advanced search We need to be careful about which parts of blacklight_advanced_search we override. While working on TD-1219, we also discovered that constraints would be doubled after using "edit search" and this attempts to address that by omitting those parameters when JS (and thus the `chosen` library) is enabled, since these fields are also added by that method. --- .../advanced_search_form_component.html.erb | 5 +++ .../render_constraints_override.rb | 38 ++++++++++++++++++- .../render_constraints_helper_behavior.rb | 4 +- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/app/components/trln_argon/advanced_search_form_component.html.erb b/app/components/trln_argon/advanced_search_form_component.html.erb index b0cf9b95..4360f63a 100644 --- a/app/components/trln_argon/advanced_search_form_component.html.erb +++ b/app/components/trln_argon/advanced_search_form_component.html.erb @@ -1,5 +1,10 @@ <%= form_tag @url, method: @method, class: @classes.join(' '), role: 'search', 'aria-label' => t('blacklight.search.form.submit') do %> + +
diff --git a/lib/blacklight_advanced_search/render_constraints_override.rb b/lib/blacklight_advanced_search/render_constraints_override.rb index a0110f89..1fe9f8ce 100644 --- a/lib/blacklight_advanced_search/render_constraints_override.rb +++ b/lib/blacklight_advanced_search/render_constraints_override.rb @@ -2,6 +2,42 @@ module BlacklightAdvancedSearch module RenderConstraintsOverride # the default implementation from blacklight_advanced_search # plugin will effectively duplicate constraints in search header - # -- leaving this blank prevents that. + # so we need to override only some methods + + # copied directly from upstream, deals with TD-1219 + # the other `render_constraints_` methods will be handled + # by the base implementation in BL rather than by the + # implementation in the adv_search plugin + def render_constraints_query(my_params = params) + if (advanced_query.nil? || advanced_query.keyword_queries.empty?) + return super(my_params) + else + content = [] + advanced_query.keyword_queries.each_pair do |field, query| + label = blacklight_config.search_fields[field][:label] + content << render_constraint_element( + label, query, + :remove => + search_action_path(remove_advanced_keyword_query(field, my_params).except(:controller, :action)) + ) + end + if (advanced_query.keyword_op == "OR" && + advanced_query.keyword_queries.length > 1) + content.unshift content_tag(:span, "Any of:", class: 'operator') + content_tag :span, class: "inclusive_or appliedFilter well" do + safe_join(content.flatten, "\n") + end + else + safe_join(content.flatten, "\n") + end + end + end + + def remove_advanced_keyword_query(field, my_params = params) + my_params = Blacklight::SearchState.new(my_params, blacklight_config).to_h + my_params.delete(field) + my_params + end + end end diff --git a/lib/trln_argon/view_helpers/render_constraints_helper_behavior.rb b/lib/trln_argon/view_helpers/render_constraints_helper_behavior.rb index c7e4ff12..92a4353b 100755 --- a/lib/trln_argon/view_helpers/render_constraints_helper_behavior.rb +++ b/lib/trln_argon/view_helpers/render_constraints_helper_behavior.rb @@ -1,8 +1,10 @@ module TrlnArgon module ViewHelpers module RenderConstraintsHelperBehavior - include Blacklight::RenderConstraintsHelperBehavior + + include BlacklightAdvancedSearch::RenderConstraintsOverride + # handles a special case only in TRLN def render_constraints_query(my_params = params) if my_params[:doc_ids].nil? super(my_params) From 71e3077ce71059d0a552e03d33d353e1ddcf1970 Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Wed, 27 Jul 2022 16:12:21 -0400 Subject: [PATCH 2/3] bump version 2.1.2 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 3e3c2f1e..eca07e4c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.1 +2.1.2 From d2b9c24c28af809a6233ef93105ff209528e8ff1 Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Wed, 27 Jul 2022 16:45:09 -0400 Subject: [PATCH 3/3] oh no, rubocop --- .../render_constraints_override.rb | 24 ++++++++++--------- .../render_constraints_helper_behavior.rb | 1 - 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/blacklight_advanced_search/render_constraints_override.rb b/lib/blacklight_advanced_search/render_constraints_override.rb index 1fe9f8ce..931772c3 100644 --- a/lib/blacklight_advanced_search/render_constraints_override.rb +++ b/lib/blacklight_advanced_search/render_constraints_override.rb @@ -6,25 +6,26 @@ module RenderConstraintsOverride # copied directly from upstream, deals with TD-1219 # the other `render_constraints_` methods will be handled - # by the base implementation in BL rather than by the - # implementation in the adv_search plugin + # by the base implementation in BL rather than by the + # implementation in the adv_search plugin + # rubocop:disable Metrics/AbcSize + # rubocop:disable Metrics/MethodLength def render_constraints_query(my_params = params) - if (advanced_query.nil? || advanced_query.keyword_queries.empty?) - return super(my_params) + if advanced_query.nil? || advanced_query.keyword_queries.empty? + super(my_params) else content = [] advanced_query.keyword_queries.each_pair do |field, query| label = blacklight_config.search_fields[field][:label] content << render_constraint_element( label, query, - :remove => - search_action_path(remove_advanced_keyword_query(field, my_params).except(:controller, :action)) + remove: search_action_path(remove_advanced_keyword_query(field, my_params).except(:controller, :action)) ) end - if (advanced_query.keyword_op == "OR" && - advanced_query.keyword_queries.length > 1) - content.unshift content_tag(:span, "Any of:", class: 'operator') - content_tag :span, class: "inclusive_or appliedFilter well" do + if advanced_query.keyword_op == 'OR' && + advanced_query.keyword_queries.length > 1 + content.unshift content_tag(:span, 'Any of:', class: 'operator') + content_tag :span, class: 'inclusive_or appliedFilter well' do safe_join(content.flatten, "\n") end else @@ -32,12 +33,13 @@ def render_constraints_query(my_params = params) end end end + # rubocop:enable Metrics/AbcSize + # rubocop:enable Metrics/MethodLength def remove_advanced_keyword_query(field, my_params = params) my_params = Blacklight::SearchState.new(my_params, blacklight_config).to_h my_params.delete(field) my_params end - end end diff --git a/lib/trln_argon/view_helpers/render_constraints_helper_behavior.rb b/lib/trln_argon/view_helpers/render_constraints_helper_behavior.rb index 92a4353b..1d113bc7 100755 --- a/lib/trln_argon/view_helpers/render_constraints_helper_behavior.rb +++ b/lib/trln_argon/view_helpers/render_constraints_helper_behavior.rb @@ -1,7 +1,6 @@ module TrlnArgon module ViewHelpers module RenderConstraintsHelperBehavior - include BlacklightAdvancedSearch::RenderConstraintsOverride # handles a special case only in TRLN