Add paginations to the Z39.50 search results.
http://bugs.koha-community.org/show_bug.cgi?id=8570
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
my $op = $input->param('op');
my $booksellerid = $input->param('booksellerid');
my $basketno = $input->param('basketno');
+
+my $page = $input->param('current_page') || 1;
+$page = $input->param('goto_page') if $input->param('changepage_goto');
+my $show_next = 0;
+my $total_pages = 0;
+
my $noconnection;
my $attr = '';
my $term;
);
+$template->param(
+ isbn => $isbn,
+ issn => $issn,
+ lccn => $lccn,
+ lccall => $lccall,
+ title => $title,
+ author => $author,
+ controlnumber=> $controlnumber,
+ biblionumber => $biblionumber,
+ dewey => $dewey,
+ subject => $subject,
+);
if ( $op ne "do_search" ) {
my $sth = $dbh->prepare("select id,host,name,checked from z3950servers order by host");
$sth->execute();
my $serverloop = $sth->fetchall_arrayref( {} );
$template->param(
- isbn => $isbn,
- issn => $issn,
- lccn => $lccn,
- lccall => $lccall,
- title => $title,
- author => $author,
- controlnumber=> $controlnumber,
serverloop => $serverloop,
opsearch => "search",
- biblionumber => $biblionumber,
);
output_html_with_http_headers $input, $cookie, $template->output;
exit;
warn "numresults = $numresults" if $DEBUG;
my $i;
my $result = '';
- if ( $numresults > 0 ) {
- for (
- $i = 0 ;
- $i < ( ( $numresults < 20 ) ? ($numresults) : (20) ) ;
- $i++
- )
- {
+ if ( $numresults > 0 and $numresults >= (($page-1)*20)) {
+ $show_next = 1 if $numresults >= ($page*20);
+ $total_pages = int($numresults/20)+1 if $total_pages < ($numresults/20);
+ for ($i = ($page-1)*20; $i < (($numresults < ($page*20)) ? $numresults : ($page*20)); $i++) {
my $rec = $oResult[$k]->record($i);
if ($rec) {
my $marcrecord;
} #$numresults
}
} # if $k !=0
- # print $template->output if $firstresult !=1;
+ my $numberpending = $nremaining - 1;
+
+ my @servers = ();
+ foreach my $id (@id) {
+ push(@servers,{id => $id});
+ }
+
+ $template->param(
+ breeding_loop => \@breeding_loop,
+ server => $servername[$k],
+ numberpending => $numberpending,
+ current_page => $page,
+ servers => \@servers,
+ total_pages => $total_pages,
+ );
+ $template->param(show_nextbutton=>1) if $show_next;
+ $template->param(show_prevbutton=>1) if $page != 1;
+
+ # print $template->output if $firstresult !=1;
$firstresult++;
} # while nremaining
my $srchany = $input->param('srchany');
my $random = $input->param('random') || rand(1000000000); # this var is not useful anymore just kept for rel2_2 compatibility
my $op = $input->param('op');
+
+my $page = $input->param('current_page') || 1;
+$page = $input->param('goto_page') if $input->param('changepage_goto');
+my $show_next = 0;
+my $total_pages = 0;
+
my $numberpending;
my $attr = '';
my $term;
});
$template->param( frameworkcode => $frameworkcode, );
+$template->param(
+ isbn => $isbn,
+ issn => $issn,
+ lccn => $lccn,
+ lccall => $lccall,
+ title => $title,
+ author => $author,
+ controlnumber=> $controlnumber,
+ stdid => $stdid,
+ srchany => $srchany,
+ biblionumber => $biblionumber,
+ dewey => $dewey,
+ subject => $subject,
+);
if ( $op ne "do_search" ) {
my $sth = $dbh->prepare("SELECT id,host,name,checked FROM z3950servers ORDER BY rank, name");
$sth->execute();
my $serverloop = $sth->fetchall_arrayref( {} );
$template->param(
- isbn => $isbn,
- issn => $issn,
- lccn => $lccn,
- lccall => $lccall,
- title => $title,
- author => $author,
- controlnumber=> $controlnumber,
- stdid => $stdid,
- srchany => $srchany,
serverloop => $serverloop,
opsearch => "search",
- biblionumber => $biblionumber,
);
output_html_with_http_headers $input, $cookie, $template->output;
}
my $numresults = $oResult[$k]->size();
my $i;
my $result = '';
- if ( $numresults > 0 ) {
- for ($i = 0; $i < (($numresults < 20) ? $numresults : 20); $i++) {
+ if ( $numresults > 0 and $numresults >= (($page-1)*20)) {
+ $show_next = 1 if $numresults >= ($page*20);
+ $total_pages = int($numresults/20)+1 if $total_pages < ($numresults/20);
+ for ($i = ($page-1)*20; $i < (($numresults < ($page*20)) ? $numresults : ($page*20)); $i++) {
my $rec = $oResult[$k]->record($i);
if ($rec) {
my $marcrecord;
}
} # if $k !=0
$numberpending = $nremaining - 1;
+
+ my @servers = ();
+ foreach my $id (@id) {
+ push(@servers,{id => $id});
+ }
+
$template->param(
breeding_loop => \@breeding_loop,
server => $servername[$k],
numberpending => $numberpending,
biblionumber => $biblionumber,
- errconn => \@errconn
+ errconn => \@errconn,
+ current_page => $page,
+ servers => \@servers,
+ total_pages => $total_pages,
);
+ $template->param(show_nextbutton=>1) if $show_next;
+ $template->param(show_prevbutton=>1) if $page != 1;
output_html_with_http_headers $input, $cookie, $template->output if $numberpending == 0;
"aoColumnDefs": [
{ "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
],
- "sPaginationType": "four_button"
+ "bPaginate": false
} ) );
$("#CheckAll").click(function(){
row.addClass("selected");
});
});
+
+[% IF ( total_pages ) %]
+function validate_goto_page(){
+ var page = $('#goto_page').val();
+ if(isNaN(page)) {
+ alert(_("The page entered is not a number."));
+ return false;
+ }
+ else if(page < 1 || page > [% total_pages %] ) {
+ alert(_("The page should be a number between 1 and ") + [% total_pages %] + ".");
+ return false;
+ }
+ else {
+ return true;
+ }
+}
+[% END %]
+
//]]>
</script>
<style type="text/css">
[% END %]
[% END %]</tbody>
</table>
+
+ <form method="post" action="z3950_search.pl" id="page_form" name="page_form" class="checkboxed">
+ <input type="hidden" name="op" id="op" value="do_search" />
+ <input type="hidden" name="current_page" id="current_page" value="[% current_page %]" />
+ <input type="hidden" id="searchtitle" name="title" value="[% title |html %]" />
+ <input type="hidden" id="isbn" name="isbn" value="[% isbn %]" />
+ <input type="hidden" id="lccall" name="lccall" value="[% lccall %]" />
+ <input type="hidden" id="author" name="author" value="[% author %]" />
+ <input type="hidden" id="subject" name="subject" value="[% subject %]" />
+ <input type="hidden" id="dewey" name="dewey" value="[% dewey %]" />
+ <input type="hidden" name="frameworkcode" value="[% frameworkcode %]" />
+ <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
+ <input type="hidden" name="controlnumber" value="[% controlnumber %]" />
+ <input type="hidden" name="basketno" value="[% basketno %]" />
+ <input type="hidden" name="booksellerid" value="[% booksellerid %]" />
+
+ [% FOREACH server IN servers %]
+ <input type="hidden" name="id" id="z3950_[% server.id %]" value="[% server.id %]" />
+ [% END %]
+
+ [% IF ( show_prevbutton ) %]
+ <input type="button" name="changepage_prev" value="Previous Page" onclick="$('#current_page').val([% current_page %]-1);$('#page_form').submit();" />
+ [% END %]
+ Page [% current_page %] / [% total_pages %]
+ [% IF ( show_nextbutton ) %]
+ <input type="button" name="changepage_next" value="Next Page" onclick="$('#current_page').val([% current_page %]+1);$('#page_form').submit();" />
+ [% END %]
+ <br />Go to page : <input id="goto_page" name="goto_page" value="[% current_page %]" size="4" /><input type="submit" name="changepage_goto" onclick="return validate_goto_page();" value="Go" />
+ </form>
+
[% ELSE %]
[% IF ( emptyserverlist ) %]
<div class="dialog alert">You didn't select any Z39.50 target.</div>
});
});
+[% IF ( total_pages ) %]
+function validate_goto_page(){
+ var page = $('#goto_page').val();
+ if(isNaN(page)) {
+ alert(_("The page entered is not a number."));
+ return false;
+ }
+ else if(page < 1 || page > [% total_pages %] ) {
+ alert(_("The page should be a number between 1 and ") + [% total_pages %] + ".");
+ return false;
+ }
+ else {
+ return true;
+ }
+}
+[% END %]
+
//]]>
</script>
<style type="text/css">
[% END %]
[% END %]</tbody>
</table>
+
+ <form method="post" action="z3950_search.pl" id="page_form" name="page_form" class="checkboxed">
+ <input type="hidden" name="op" id="op" value="do_search" />
+ <input type="hidden" name="current_page" id="current_page" value="[% current_page %]" />
+ <input type="hidden" id="title" name="title" value="[% title %]" />
+ <input type="hidden" id="isbn" name="isbn" value="[% isbn %]" />
+ <input type="hidden" id="lccall" name="lccall" value="[% lccall %]" />
+ <input type="hidden" id="controlnumber" name="controlnumber" value="[% controlnumber %]" />
+ <input type="hidden" id="srchany" name="srchany" value="[% srchany %]" />
+ <input type="hidden" id="author" name="author" value="[% author %]" />
+ <input type="hidden" id="subject" name="subject" value="[% subject %]" />
+ <input type="hidden" id="dewey" name="dewey" value="[% dewey %]" />
+ <input type="hidden" id="stdid" name="stdid" value="[% stdid %]" />
+ <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
+ <input type="hidden" name="frameworkcode" value="[% frameworkcode %]" />
+
+ [% FOREACH server IN servers %]
+ <input type="hidden" name="id" id="z3950_[% server.id %]" value="[% server.id %]" />
+ [% END %]
+
+ [% IF ( show_prevbutton ) %]
+ <input type="button" name="changepage_prev" value="Previous Page" onclick="$('#current_page').val([% current_page %]-1);$('#page_form').submit();" />
+ [% END %]
+ Page [% current_page %] / [% total_pages %]
+ [% IF ( show_nextbutton ) %]
+ <input type="button" name="changepage_next" value="Next Page" onclick="$('#current_page').val([% current_page %]+1);$('#page_form').submit();" />
+ [% END %]
+ <br />Go to page : <input id="goto_page" name="goto_page" value="[% current_page %]" size="4" /><input type="submit" name="changepage_goto" onclick="return validate_goto_page();" value="Go" />
+ </form>
+
<p><form method="get" action="/cgi-bin/koha/cataloguing/z3950_search.pl"><input type="hidden" name="biblionumber" value="[% biblionumber %]"/><input type="hidden" name="frameworkcode" value="[% frameworkcode %]"/><input type="submit" value="Try Another Search"/></form></p>
[% ELSE %]
[% IF ( errconn ) %]