diff --git a/C4/Context.pm b/C4/Context.pm index 3819529dc2..35c5025745 100644 --- a/C4/Context.pm +++ b/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 diff --git a/catalogue/search.pl b/catalogue/search.pl index bf225911ef..f3b5d7bdbc 100755 --- a/catalogue/search.pl +++ b/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) { diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt index adf0168650..1d7fae8377 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt @@ -224,7 +224,7 @@ Sort