From: Galen Charlton Date: Fri, 25 Mar 2016 20:46:24 +0000 (-0400) Subject: LP#1562153: fix case where changing sort order to relevance can fail X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=063ac67fad399b6993abca66ede7b9d498356785;p=evergreen%2Ftadl.git LP#1562153: fix case where changing sort order to relevance can fail This patch fixes a cause where sending a 'sort' CGI parameter with the empty string as value (which specifies relevance sorting) fails to override a previously-set sort order. To test: [1] Do a public catalog search starting from the advanced search form, e.g., keyword = "cats" [2] Change the sort order to (say) Title A-Z from the results page. [3] Note that the query string changes to "sort(titlesort) cats" and that the results are re-sorted [4] Attempt to change the sort order to relevance. [5] This time, the sort order does not change ... and it should have. [6] Apply the patch and repeat steps 1-5. This time, the sort order should be successfully changed. Signed-off-by: Galen Charlton Signed-off-by: Mike Rylander --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm index ecd1bad8ae..51bdf238e2 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm @@ -120,15 +120,18 @@ sub _prepare_biblio_search { return () unless $query; # sort is treated specially, even though it's actually a filter - if ($cgi->param('sort')) { + if (defined($cgi->param('sort'))) { $query =~ s/sort\([^\)]*\)//g; # override existing sort(). no stacking. my ($axis, $desc) = split /\./, $cgi->param('sort'); - $query = "sort($axis) $query"; + $query = "sort($axis) $query" if $axis; if ($desc and not $query =~ /\#descending/) { $query = "#descending $query"; } elsif (not $desc) { $query =~ s/\#descending//; } + # tidy up + $query =~ s/^\s+//; + $query =~ s/\s+$//; } my (@naive_query_re, $site);