Fix LP#1183226 by exposing the search sort via ctx and using that when no search... user/paxed/lp1183226
authorPasi Kallinen <pasi.kallinen@pttk.fi>
Mon, 15 Jul 2013 15:46:24 +0000 (18:46 +0300)
committerPasi Kallinen <pasi.kallinen@pttk.fi>
Mon, 15 Jul 2013 17:31:08 +0000 (20:31 +0300)
Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi>
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm
Open-ILS/src/templates/opac/results.tt2

index 5e36541..f92b427 100644 (file)
@@ -115,15 +115,18 @@ sub _prepare_biblio_search {
     return () unless $query;
 
     # sort is treated specially, even though it's actually a filter
-    if ($cgi->param('sort')) {
-        $query =~ s/sort\([^\)]*\)//g;  # override existing sort(). no stacking.
-        my ($axis, $desc) = split /\./, $cgi->param('sort');
+    if ($cgi->param('sort') || $query =~ / ?sort\(\S+\)/) {
+       my $sortq = $cgi->param('sort');
+       if (!$sortq) {
+           ($sortq) = $query =~ / ?sort\((\S+)\)/;
+           $sortq .= '.descending' if ($query =~ /\#descending/);
+       }
+        my ($axis, $desc) = split /\./, $sortq;
+        $query =~ s/ ?sort\([^\)]*\)//g;  # override existing sort(). no stacking.
+       $query =~ s/\#descending//g;
         $query .= " sort($axis)";
-        if ($desc and not $query =~ /\#descending/) {
-            $query .= '#descending';
-        } elsif (not $desc) {
-            $query =~ s/\#descending//;
-        }
+       $query .= '#descending' if ($desc);
+       $ctx->{search_sort} = $sortq;
     }
 
     my (@naive_query_re, $site);
index d199ce9..0a8523c 100644 (file)
                 [% END %]
                 <div class="results_header_div"></div>
                     <label class="results_header_lbl">[% l('Sort by') %]
-                    [% INCLUDE "opac/parts/filtersort.tt2" value=CGI.param('sort') submit_on_change=1 %]
+                   [% IF CGI.param('sort');
+                          sortvalue = CGI.param('sort');
+                      ELSE;
+                         sortvalue = ctx.search_sort;
+                      END;
+                       INCLUDE "opac/parts/filtersort.tt2" value=sortvalue submit_on_change=1 %]
                     </label>
                     <div class="results_header_div"></div>