Bug 21405: Fix authorities pagination for Zebra and ES
Bug 20261 introduced an error because search_auth_compat responded differently for ES and Zebra, now bug 19365 fixed the underlying difference. This patch restores previous code to fix pagination. Additionally we add a fix for 10000+ results in ES and remove a double import of C4::Auth To test: 1 - Perform an authorities search with 1+ pages using Zebra 2 - Page through results, note you are only offseeting by 1 each time 3 - Perform an authorities search with 10,000+ results in ES 4 - Click on the last page and get an error 5 - Apply patch 6 - Retry Zebra search 7 - Results should paginate correctly 8 - Clicking on last page should return last results 9 - Retry ES results 10 - Results should paginate correct 11 - Clicking on last page should return last results Signed-off-by: Ere Maijala <ere.maijala@helsinki.fi> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
parent
842a4befd3
commit
06e6378899
1 changed files with 12 additions and 7 deletions
|
@ -22,7 +22,7 @@ use warnings;
|
|||
|
||||
use CGI qw ( -utf8 );
|
||||
use URI::Escape;
|
||||
use C4::Auth;
|
||||
use POSIX qw( ceil );
|
||||
|
||||
use C4::Context;
|
||||
use C4::Auth;
|
||||
|
@ -86,6 +86,7 @@ if ( $op eq "do_search" ) {
|
|||
|
||||
my $startfrom = $query->param('startfrom') || 1;
|
||||
my $resultsperpage = $query->param('resultsperpage') || 20;
|
||||
my $offset = ( $startfrom - 1 ) * $resultsperpage + 1;
|
||||
|
||||
my $builder = Koha::SearchEngine::QueryBuilder->new(
|
||||
{ index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
|
||||
|
@ -96,7 +97,7 @@ if ( $op eq "do_search" ) {
|
|||
[$value], $authtypecode, $orderby
|
||||
);
|
||||
my ( $results, $total ) = $searcher->search_auth_compat(
|
||||
$search_query, $startfrom, $resultsperpage
|
||||
$search_query, $offset, $resultsperpage
|
||||
);
|
||||
|
||||
( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
||||
|
@ -180,15 +181,19 @@ if ( $op eq "do_search" ) {
|
|||
|
||||
$template->param( result => $results ) if $results;
|
||||
|
||||
my $max_result_window = $searcher->max_result_window;
|
||||
my $hits_to_paginate = ($max_result_window && $max_result_window < $total) ? $max_result_window : $total;
|
||||
|
||||
$template->param(
|
||||
pagination_bar => pagination_bar(
|
||||
$base_url, int( $total / $resultsperpage ) + 1,
|
||||
$base_url, ceil( $hits_to_paginate / $resultsperpage ),
|
||||
$startfrom, 'startfrom'
|
||||
),
|
||||
total => $total,
|
||||
from => $from,
|
||||
to => $to,
|
||||
isEDITORS => $authtypecode eq 'EDITORS',
|
||||
total => $total,
|
||||
hits_to_paginate => $hits_to_paginate,
|
||||
from => $from,
|
||||
to => $to,
|
||||
isEDITORS => $authtypecode eq 'EDITORS',
|
||||
);
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue