@@ -, +, @@ --- C4/Context.pm | 32 +++++++++++++++++++ catalogue/search.pl | 18 +++-------- .../prog/en/modules/catalogue/results.tt | 2 +- opac/opac-detail.pl | 2 +- opac/opac-search.pl | 16 ++-------- t/Context.t | 32 ++++++++++++++++++- 6 files changed, 72 insertions(+), 30 deletions(-) --- a/C4/Context.pm +++ a/C4/Context.pm @@ -499,6 +499,38 @@ sub csv_delimiter { return $delimiter; } +=head2 default_catalog_sort_by + + $delimiter = C4::Context->default_catalog_sort_by; + + Returns default sort by for catalog search. + For relevance no sort order is used. + + For staff interface, depends on system preferences 'defaultSortField' and 'defaultSortOrder'. + For OPAC interface, depends on system preferences 'OPACdefaultSortField' and 'OPACdefaultSortOrder'. + +=cut + +sub default_catalog_sort_by { + my $self = shift; + my ( $sort_by, $sort_field, $sort_order ); + if ( C4::Context->interface eq 'opac' ) { + $sort_field = C4::Context->preference('OPACdefaultSortField'); + $sort_order = C4::Context->preference('OPACdefaultSortOrder'); + } else { + $sort_field = C4::Context->preference('defaultSortField'); + $sort_order = C4::Context->preference('defaultSortOrder'); + } + if ( $sort_field && $sort_order ) { + if ( $sort_field eq 'relevance' ) { + $sort_by = $sort_field; + } else { + $sort_by = $sort_field . '_' . $sort_order; + } + } + return $sort_by; +} + =head2 Zconn $Zconn = C4::Context->Zconn --- a/catalogue/search.pl +++ a/catalogue/search.pl @@ -259,6 +259,8 @@ $template->param(advancedsearchesloop => $advancedsearchesloop); $template->param( searchid => scalar $cgi->param('searchid'), ); +my $default_sort_by = C4::Context->default_catalog_sort_by; + # The following should only be loaded if we're bringing up the advanced search template if ( $template_type eq 'advsearch' ) { @@ -322,12 +324,8 @@ if ( $template_type eq 'advsearch' ) { $template->param(outer_sup_servers_loop => $secondary_servers_loop,); # set the default sorting - if ( C4::Context->preference('defaultSortField') - && C4::Context->preference('defaultSortOrder') ) { - my $default_sort_by = - C4::Context->preference('defaultSortField') . '_' - . C4::Context->preference('defaultSortOrder'); - $template->param( sort_by => $default_sort_by ); + if ($default_sort_by) { + $template->param( sort_by => $default_sort_by ); } $template->param(uc(C4::Context->preference("marcflavour")) =>1 ); @@ -361,14 +359,6 @@ my $params = $cgi->Vars; # sort by is used to sort the query # in theory can have more than one but generally there's just one my @sort_by; -my $default_sort_by; -if ( C4::Context->preference('defaultSortField') - && C4::Context->preference('defaultSortOrder') ) { - $default_sort_by = - C4::Context->preference('defaultSortField') . '_' - . C4::Context->preference('defaultSortOrder'); -} - @sort_by = $cgi->multi_param('sort_by'); $sort_by[0] = $default_sort_by unless $sort_by[0]; foreach my $sort (@sort_by) { --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt @@ -221,7 +221,7 @@ Sort