Bug #2162: Step 2, add pagination. Splits results into blocks of 250 results and adds Previous and Next buttons. Achieved using forms, hidden search variables and submit buttons.
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz> Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This commit is contained in:
parent
7de9a2128a
commit
7fc8025978
2 changed files with 83 additions and 7 deletions
|
@ -37,6 +37,7 @@ my $order = $input->param('order');
|
|||
my $startdate=$input->param('from');
|
||||
my $enddate=$input->param('to');
|
||||
my $run_report=$input->param('run_report');
|
||||
my $report_page=$input->param('report_page');
|
||||
|
||||
my $theme = $input->param('theme'); # only used if allowthemeoverride is set
|
||||
|
||||
|
@ -86,9 +87,10 @@ if (!defined($enddate) or $enddate eq "") {
|
|||
|
||||
|
||||
my @reservedata;
|
||||
my ($prev_results, $next_results, $next_or_previous) = (0,0,0);
|
||||
if ( $run_report ) {
|
||||
my $dbh = C4::Context->dbh;
|
||||
my ($sqlorderby, $sqldatewhere) = ("","");
|
||||
my ($sqlorderby, $sqldatewhere, $sqllimitoffset) = ("","","");
|
||||
$debug and warn format_date_in_iso($startdate) . "\n" . format_date_in_iso($enddate);
|
||||
my @query_params = ();
|
||||
if ($startdate) {
|
||||
|
@ -100,6 +102,12 @@ if ( $run_report ) {
|
|||
push @query_params, format_date_in_iso($enddate);
|
||||
}
|
||||
|
||||
$sqllimitoffset = " LIMIT 251";
|
||||
if ($report_page) {
|
||||
$sqllimitoffset .= " OFFSET=?";
|
||||
push @query_params, ($report_page * 250);
|
||||
}
|
||||
|
||||
if ($order eq "biblio") {
|
||||
$sqlorderby = " ORDER BY biblio.title ";
|
||||
} elsif ($order eq "itype") {
|
||||
|
@ -206,6 +214,18 @@ if ( $run_report ) {
|
|||
|
||||
$sth->finish;
|
||||
|
||||
# Next Page?
|
||||
if ($report_page > 0) {
|
||||
$prev_results = $report_page - 1;
|
||||
}
|
||||
if ( scalar(@reservedata) > 250 ) {
|
||||
$next_results = $report_page + 1;
|
||||
pop(@reservedata); # .. we retrieved 251 results
|
||||
}
|
||||
if ($prev_results || $next_results) {
|
||||
$next_or_previous = 1;
|
||||
}
|
||||
|
||||
# *** I doubt any of this is needed now with the above fixes *** -d.u.
|
||||
|
||||
#$strsth=~ s/AND reserves.itemnumber is NULL/AND reserves.itemnumber is NOT NULL/;
|
||||
|
@ -260,6 +280,10 @@ $template->param(
|
|||
from => $startdate,
|
||||
to => $enddate,
|
||||
run_report => $run_report,
|
||||
report_page => $report_page,
|
||||
prev_results => $prev_results,
|
||||
next_results => $next_results,
|
||||
next_or_previous => $next_or_previous,
|
||||
reserveloop => \@reservedata,
|
||||
"BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
|
||||
DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
|
||||
|
|
|
@ -49,7 +49,8 @@ $.tablesorter.addParser({
|
|||
<div class="searchresults">
|
||||
<!-- TMPL_IF NAME="reserveloop" -->
|
||||
<table id="holdst">
|
||||
<thead><tr>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
Pull This Many Items
|
||||
</th>
|
||||
|
@ -81,10 +82,35 @@ $.tablesorter.addParser({
|
|||
<th >Earliest Hold Date
|
||||
<a href="/cgi-bin/koha/circ/pendingreserves.pl?order=date&from=<!-- TMPL_VAR NAME="from" -->&to=<!-- TMPL_VAR NAME="to" -->">Sort</a>
|
||||
</th>
|
||||
|
||||
</tr></thead>
|
||||
|
||||
<tbody> <!-- TMPL_LOOP NAME="reserveloop" -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- TMPL_IF NAME="next_or_previous" -->
|
||||
<tr>
|
||||
<td colspan="3" align="left">
|
||||
<!-- TMPL_IF NAME="prev_results" -->
|
||||
<form action="/cgi-bin/koha/circ/pendingreserves.pl" method="POST">
|
||||
<input type="hidden" name="from" value="<!-- TMPL_VAR NAME="from" -->">
|
||||
<input type="hidden" name="to" value="<!-- TMPL_VAR NAME="to" -->">
|
||||
<input type="hidden" name="report_page" value="<!-- TMPL_VAR NAME="prev_results" -->">
|
||||
<input type="submit" name="run_report" value="< Prev">
|
||||
</form>
|
||||
<!-- /TMPL_IF -->
|
||||
</td>
|
||||
<td colspan="3"></td>
|
||||
<td colspan="3" align="right">
|
||||
<!-- TMPL_IF NAME="next_results" -->
|
||||
<form action="/cgi-bin/koha/circ/pendingreserves.pl" method="POST">
|
||||
<input type="hidden" name="from" value="<!-- TMPL_VAR NAME="from" -->">
|
||||
<input type="hidden" name="to" value="<!-- TMPL_VAR NAME="to" -->">
|
||||
<input type="hidden" name="report_page" value="<!-- TMPL_VAR NAME="next_results" -->">
|
||||
<input type="submit" name="run_report" value="Next >">
|
||||
</form>
|
||||
<!-- /TMPL_IF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- /TMPL_IF -->
|
||||
<!-- TMPL_LOOP NAME="reserveloop" -->
|
||||
<tr>
|
||||
<!-- TMPL_IF name="borrowernumber" -->
|
||||
<td><p><b><!-- TMPL_VAR NAME="pullcount" --></b></p></td>
|
||||
|
@ -125,7 +151,33 @@ $.tablesorter.addParser({
|
|||
<!-- TMPL_IF NAME="statusw" --><p>Waiting</p><!-- /TMPL_IF --><!-- TMPL_IF NAME="statusf" --><p>Fullfilled</p><!-- /TMPL_IF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- /TMPL_LOOP --></tbody>
|
||||
<!-- /TMPL_LOOP -->
|
||||
<!-- TMPL_IF NAME="next_or_previous" -->
|
||||
<tr>
|
||||
<td colspan="3" align="left">
|
||||
<!-- TMPL_IF NAME="prev_results" -->
|
||||
<form action="/cgi-bin/koha/circ/pendingreserves.pl" method="POST">
|
||||
<input type="hidden" name="from" value="<!-- TMPL_VAR NAME="from" -->">
|
||||
<input type="hidden" name="to" value="<!-- TMPL_VAR NAME="to" -->">
|
||||
<input type="hidden" name="report_page" value="<!-- TMPL_VAR NAME="prev_results" -->">
|
||||
<input type="submit" name="run_report" value="< Prev">
|
||||
</form>
|
||||
<!-- /TMPL_IF -->
|
||||
</td>
|
||||
<td colspan="3"></td>
|
||||
<td colspan="3" align="right">
|
||||
<!-- TMPL_IF NAME="next_results" -->
|
||||
<form action="/cgi-bin/koha/circ/pendingreserves.pl" method="POST">
|
||||
<input type="hidden" name="from" value="<!-- TMPL_VAR NAME="from" -->">
|
||||
<input type="hidden" name="to" value="<!-- TMPL_VAR NAME="to" -->">
|
||||
<input type="hidden" name="report_page" value="<!-- TMPL_VAR NAME="next_results" -->">
|
||||
<input type="submit" name="run_report" value="Next >">
|
||||
</form>
|
||||
<!-- /TMPL_IF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- /TMPL_IF -->
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- TMPL_ELSE -->
|
||||
<b>No items found.</b>
|
||||
|
|
Loading…
Reference in a new issue