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);
[% 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>