[Koha-patches] [PATCH] bug 1980: changes to label-item-search.pl to allow pagination over large result sets
Andrew Moore
andrew.moore at liblime.com
Wed Apr 9 17:35:09 CEST 2008
---
.../prog/en/modules/labels/result.tmpl | 2 +-
labels/label-item-search.pl | 29 +++++++++----------
2 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/result.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/result.tmpl
index 3362b4d..5b14d7d 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/result.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/result.tmpl
@@ -63,7 +63,7 @@ function add_item3(itemnumber){
</p><!-- /TMPL_IF -->
<p>
<!-- TMPL_IF name="result" -->
- <strong>Results <!-- TMPL_VAR name="from" --> to <!-- TMPL_VAR name="to" --> of <!-- TMPL_VAR name="total" --></strong>
+ <strong>Results <!-- TMPL_VAR name="from" --> through <!-- TMPL_VAR name="to" --> <!-- TMPL_IF NAME="total" --> of <!-- TMPL_VAR name="total" --><!-- /TMPL_IF --></strong>
<!-- TMPL_ELSE -->
No results found
<!-- /TMPL_IF -->
diff --git a/labels/label-item-search.pl b/labels/label-item-search.pl
index a928e70..810cd21 100755
--- a/labels/label-item-search.pl
+++ b/labels/label-item-search.pl
@@ -33,6 +33,7 @@ use C4::Search;
use C4::Dates qw( DHTMLcalendar );
use C4::Koha; # XXX subfield_is_koha_internal_p
+use List::Util qw( max min );
#use Smart::Comments;
use Data::Dumper;
@@ -51,6 +52,7 @@ my $dbh = C4::Context->dbh;
my $startfrom = $query->param('startfrom') || 0;
my ( $template, $loggedinuser, $cookie );
my (@marclist, at and_or, at excluding, at operator, at value,$orderby, at tags,$results,$total,$error,$marcresults);
+# XXX should this be maxItemsInSearchResults or numSearchResults preference instead of 19?
my $resultsperpage = $query->param('resultsperpage') || 19;
my $show_results = 0;
@@ -65,7 +67,7 @@ if ( $op eq "do_search" ) {
#catalogsearch( $dbh, \@tags, \@and_or, \@excluding, \@operator, \@value,
# $startfrom * $resultsperpage,
# $resultsperpage, $orderby );
- ($error, $marcresults) = SimpleSearch($marclist[0]);
+ ( $error, $marcresults ) = SimpleSearch( $marclist[0], $startfrom, $resultsperpage );
if ($marcresults) {
$show_results = scalar @$marcresults;
} else {
@@ -124,13 +126,6 @@ if ( $show_results ) {
}
);
- # multi page display gestion
- my $displaynext = 0;
- my $displayprev = $startfrom;
- if ( ( $total - ( ( $startfrom + 1 ) * ($resultsperpage) ) ) > 0 ) {
- $displaynext = 1;
- }
-
my @field_data = ();
# FIXME: this relies on symmetric order of CGI params that IS NOT GUARANTEED by spec.
@@ -160,9 +155,13 @@ if ( $show_results ) {
}
}
- my $from = $startfrom * $resultsperpage + 1;
- my $temp = ( $startfrom + 1 ) * $resultsperpage;
- my $to = ($total < $temp) ? $total : $temp;
+ # multi page display gestion
+ my $displaynext = 0;
+ my $displayprev = $startfrom;
+ # XXX Kludge. We show the "next" link if we retrieved the max number of results. There could be 0 more.
+ if ( scalar @results2 == $resultsperpage ) {
+ $displaynext = 1;
+ }
$template->param(
result => \@results2,
@@ -170,12 +169,12 @@ if ( $show_results ) {
displaynext => $displaynext,
displayprev => $displayprev,
resultsperpage => $resultsperpage,
- startfromnext => $startfrom + 1,
- startfromprev => $startfrom - 1,
+ startfromnext => $startfrom + min( $resultsperpage, scalar @results2 ),
+ startfromprev => max( $startfrom - $resultsperpage, 0 ),
searchdata => \@field_data,
total => $total,
- from => $from,
- to => $to,
+ from => $startfrom + 1,
+ to => $startfrom + min( $resultsperpage, scalar @results2 ),
numbers => \@numbers,
batch_id => $batch_id,
type => $type,
--
1.5.2.1
More information about the Koha-patches
mailing list