From 844bfdbebff97e5f76b259d0369a400e0e9250d0 Mon Sep 17 00:00:00 2001 From: Martin Stenberg Date: Mon, 21 Sep 2015 18:45:52 +0200 Subject: [PATCH] Bug 14715: syspref for results per page options Remove the "all" option. Add syspref [OPAC]numSearchResultsPerPage for specifying options for numbers of results per page including [OPAC]numSearchResults. --- catalogue/search.pl | 10 ++++++++++ .../prog/en/modules/admin/preferences/searching.pref | 10 ++++++++++ .../intranet-tmpl/prog/en/modules/catalogue/results.tt | 15 +++++++++------ .../opac-tmpl/bootstrap/en/modules/opac-results.tt | 17 +++++++++-------- opac/opac-search.pl | 8 ++++++++ 5 files changed, 46 insertions(+), 14 deletions(-) diff --git a/catalogue/search.pl b/catalogue/search.pl index 11703a6..6fd8f00 100755 --- a/catalogue/search.pl +++ b/catalogue/search.pl @@ -150,6 +150,7 @@ use C4::Members qw(GetMember); use C4::VirtualShelves; use URI::Escape; use POSIX qw(ceil floor); +use String::Random; use C4::Branch; # GetBranches use C4::Search::History; @@ -473,6 +474,14 @@ for (my $ii = 0; $ii < @operands; ++$ii) # Params that can only have one value my $scan = $params->{'scan'}; my $count = C4::Context->preference('numSearchResults') || 20; +my @results_per_page_options = grep /^\d+$/, + map {s/\s+//g;$_;} + split /,/, C4::Context->preference('numSearchResultsPerPage'); +push(@results_per_page_options, $count); + +@results_per_page_options = do { my %seen; grep { !$seen{$_}++ } @results_per_page_options }; +@results_per_page_options = sort {$a <=> $b} @results_per_page_options; + my $results_per_page = $params->{'results_per_page'} || $cgi->cookie("results_per_page") || $count; my $page = $cgi->param('page') || 1; my $offset = $results_per_page != 'all' ? ($page-1)*$results_per_page : 0; @@ -616,6 +625,7 @@ for (my $i=0;$i<@servers;$i++) { } $template->param(stopwords_removed => "@$stopwords_removed") if $stopwords_removed; $template->param(results_per_page => $results_per_page == $hits ? 'all' : $results_per_page); + $template->param(results_per_page_options => \@results_per_page_options); # must define a value for size if not present in DB # in order to avoid problems generated by the default size value in TT foreach my $line (@newresults) { diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref index 8b04d39..0afc333 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref @@ -148,6 +148,11 @@ Searching: - pref: numSearchResults class: integer - results per page in the staff client. + - 'Include options for showing' + - pref: numSearchResultsPerPage + class: text + default: "10,20,40,60,80,100" + - results per page. - - By default, sort search results in the OPAC by - pref: OPACdefaultSortField @@ -190,6 +195,11 @@ Searching: - pref: OPACnumSearchResults class: integer - results per page in the OPAC. + - 'Include options for showing' + - pref: numSearchResultsPerPage + class: text + default: "10,20,40,60,80,100" + - results per page. - - "Show facets for" - pref: DisplayLibraryFacets 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 735e41a..3d14956 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt @@ -306,15 +306,18 @@ var holdForPatron = function () { + [% IF results_per_page_options %] + [% END %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt index 0d0a7e1..bb0461e 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt @@ -145,17 +145,18 @@ [% UNLESS tag %]
- + [% IF results_per_page_options %] - + [% END %]
[% END %] diff --git a/opac/opac-search.pl b/opac/opac-search.pl index daa1df2..0f07517 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -481,6 +481,13 @@ if ($params->{'limit-yr'}) { my $scan = $params->{'scan'}; my $count = C4::Context->preference('OPACnumSearchResults') || 20; my $countRSS = C4::Context->preference('numSearchRSSResults') || 50; +my @results_per_page_options = grep /^\d+$/, + map {s/\s+//g;$_;} + split /,/, C4::Context->preference('OPACnumSearchResultsPerPage'); +push(@results_per_page_options, $count); + +@results_per_page_options = do { my %seen; grep { !$seen{$_}++ } @results_per_page_options }; +@results_per_page_options = sort {$a <=> $b} @results_per_page_options; my $results_per_page = $params->{'results_per_page'} || $cgi->cookie("results_per_page") || $count; my $page = $cgi->param('page') || 1; my $offset = $results_per_page != 'all' ? ($page-1)*$results_per_page : 0; @@ -757,6 +764,7 @@ for (my $i=0;$i<@servers;$i++) { } $template->param(stopwords_removed => "@$stopwords_removed") if $stopwords_removed; $template->param(results_per_page => $results_per_page == $hits ? 'all' : $results_per_page); + $template->param(results_per_page_options => \@results_per_page_options); my $hide = C4::Context->preference('OpacHiddenItems'); $hide = ($hide =~ m/\S/) if $hide; # Just in case it has some spaces/new lines my $branch = ''; -- 2.5.0