(sitka) [rt16564] Removed pref_ou(shortname) from query term input user/lwhalen/rt16564
authorLiam Whalen <liam.whalen@bc.libraries.coop>
Thu, 18 Jul 2013 01:04:46 +0000 (18:04 -0700)
committerLiam Whalen <liam.whalen@bc.libraries.coop>
Wed, 23 Oct 2013 05:43:33 +0000 (22:43 -0700)
After conducting an Advanced Search the pref_ou(shortname) variable,
which gets passed as part of the query URL parameter, was being included
in the search terms input box of Basic Search box at the top of the
results list.

In WWW/EGCatLoader/Search.pm a list named naive_query_re is defined and
elements from the query string are pushed onto this list.  If an element
is included in this list, then it is stripped from the search term when
templates/opac/parts/searchbar.tt2 or searchbar_staff.tt2 is called.
These terms are removed with the ctx.naive_query_scrub function.

This fix pushes pref_ou(shortname) onto the naive_query_re in Search.pm
so that it is removed from the search string.

This commit also removes the advanced search filter strings from the
search box.

Signed-off-by: Liam Whalen <liam.whalen@bc.libraries.coop>
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm

index 468e4b7..18e5077 100644 (file)
@@ -63,6 +63,8 @@ sub _prepare_biblio_search {
 
     my $query = _prepare_biblio_search_basics($cgi) || '';
 
+    my (@naive_query_re, $site);
+
     $query .= ' ' . $ctx->{global_search_filter} if $ctx->{global_search_filter};
 
     foreach ($cgi->param('modifier')) {
@@ -74,7 +76,11 @@ sub _prepare_biblio_search {
     foreach (grep /^fi:/, $cgi->param) {
         /:(-?\w+)$/ or next;
         my $term = join(",", $cgi->param($_));
-        $query .= " $1($term)" if length $term;
+        if (length $term) {
+            my $thing = " $1($term)";
+            $query .= $thing;
+            push @naive_query_re, $thing;
+        }
     }
 
     # filter group entries.  Entries from like filters are grouped into a single 
@@ -83,7 +89,11 @@ sub _prepare_biblio_search {
     foreach (grep /^fg:/, $cgi->param) {
         /:(-?\w+)$/ or next;
         my $term = join(",", $cgi->param($_));
-        $query .= " filter_group_entry($term)" if length $term;
+        if (length $term) {
+            my $thing = " filter_group_entry($term)";
+            $query .= $thing;
+            push @naive_query_re, $thing;
+        }
     }
 
     if ($cgi->param("bookbag")) {
@@ -126,8 +136,6 @@ sub _prepare_biblio_search {
         }
     }
 
-    my (@naive_query_re, $site);
-
     my $org = $ctx->{search_ou};
     if (defined($org) and $org ne '' and ($org ne $ctx->{aou_tree}->()->id) and not $query =~ /site\(\S+\)/) {
         my $thing = " site(" . $ctx->{get_aou}->($org)->shortname . ")";
@@ -138,8 +146,9 @@ sub _prepare_biblio_search {
 
     my $pref_ou = $ctx->{pref_ou};
     if (defined($pref_ou) and $pref_ou ne '' and $pref_ou != $org and ($pref_ou ne $ctx->{aou_tree}->()->id)) {
-        my $plib = $ctx->{get_aou}->($pref_ou)->shortname;
-        $query .= " pref_ou($plib)";
+        my $thing = " pref_ou(" . $ctx->{get_aou}->($pref_ou)->shortname . ")";
+        $query .= $thing;
+        push @naive_query_re, $thing;
     }
 
     if (my $grp = $ctx->{copy_location_group}) {