Bugzilla – Attachment 52200 Details for
Bug 2735
Authority search in OPAC stops at 15 pages
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 2735: Fix authority search pagination at the OPAC
Bug-2735-Fix-authority-search-pagination-at-the-OP.patch (text/plain), 10.54 KB, created by
Jonathan Druart
on 2016-06-09 15:42:58 UTC
(
hide
)
Description:
Bug 2735: Fix authority search pagination at the OPAC
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2016-06-09 15:42:58 UTC
Size:
10.54 KB
patch
obsolete
>From 48dac621174be0fe76e9fcf30d1deddfeb58c053 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Thu, 9 Jun 2016 16:39:56 +0100 >Subject: [PATCH] Bug 2735: Fix authority search pagination at the OPAC > >The authority search pagination displays only 15 pages, even when there >are more. >To fix that, this patch mimic the authorities-home.pl intranet script to >manage the pagination. > >Test plan: >Without this patch, do some authority search and click on different >pages. >Apply this patch, redo the same search and make sure the same records >are displayed (i.e. confirm that the pagination still works as before). >--- > .../en/modules/opac-authoritiessearchresultlist.tt | 36 ++------- > koha-tmpl/opac-tmpl/bootstrap/less/opac.less | 4 +- > opac/opac-authorities-home.pl | 93 +++++++++------------- > 3 files changed, 45 insertions(+), 88 deletions(-) > >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-authoritiessearchresultlist.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-authoritiessearchresultlist.tt >index 4ebaac6..b5f37f5 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-authoritiessearchresultlist.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-authoritiessearchresultlist.tt >@@ -1,31 +1,6 @@ > [% USE Koha %] > [% PROCESS 'opac-authorities.inc' %] > [% PROCESS 'authorities-search-results.inc' %] >-[% pagination = BLOCK %] >- <div class="pagination"> >- <ul> >- [% IF ( displayprev ) %] >- <li> >- <a href="opac-authorities-home.pl?startfrom=[% startfromprev %]&[% FOREACH searchdat IN searchdata %][% searchdat.term %]=[% searchdat.val |url %]&[% END %]resultsperpage=[% resultsperpage |html %]&type=opac&op=do_search&authtypecode=[% authtypecode %]&orderby=[% orderby|html %]"> >- « >- </a> >- </li> >- [% END %] >- [% FOREACH number IN numbers %] >- [% IF ( number.highlight ) %] >- <li class="active"><a href="#">[% number.number %]</a></li> >- [% ELSE %] >- <li><a href="opac-authorities-home.pl?startfrom=[% number.startfrom %]&[% FOREACH searchdat IN number.searchdata %][% searchdat.term %]=[% searchdat.val |url %]&[% END %]resultsperpage=[% resultsperpage |html %]&type=opac&op=do_search&authtypecode=[% authtypecode %]&orderby=[% orderby|html %]">[% number.number %]</a></li> >- [% END %] >- [% END %] >- [% IF ( displaynext ) %] >- <li> >- <a href="opac-authorities-home.pl?startfrom=[% startfromnext %]&[% FOREACH searchdat IN searchdata %][% searchdat.term %]=[% searchdat.val |url %]&[% END %]&resultsperpage=[% resultsperpage |html %]&type=opac&op=do_search&authtypecode=[% authtypecode %]&orderby=[% orderby|html %]">»</a> >- </li> >- [% END %] >- </ul> >- </div> <!-- / #pages --> >-[% END %] > [% INCLUDE 'doc-head-open.inc' %] > <title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog › [% IF ( total ) %]Authority search result[% ELSE %]No results found[% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] >@@ -56,14 +31,15 @@ > <div id="userauthsearchresults" class="maincontent"> > <h1>Authority search results</h1> > >- [% pagination %] >- >+ [% IF total %] >+ <div class="pages">[% pagination_bar %]</div> >+ [% END %] > <div id="results"> > [% IF ( total ) %] > [% IF ( countfuzzy ) %] >- <b>Showing [% resultcount %] of about [% total %] results</b> >+ <p><b>Showing [% resultcount %] of about [% total %] results</b></p> > [% ELSE %] >- <b>Results [% from %] to [% to %] of [% total %]</b> >+ <p><b>Results [% from %] to [% to %] of [% total %]</b></p> > [% END %] > [% ELSE %] > No results found. >@@ -102,7 +78,7 @@ > </table> > </div> <!-- / .searchresults --> > >- [% pagination %] >+ <div class="pages">[% pagination_bar %]</div> > > [% END # / IF total %] > </div> <!-- / #userauthsearchresults --> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/less/opac.less b/koha-tmpl/opac-tmpl/bootstrap/less/opac.less >index 6d20cd0..c8d9f9c 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/less/opac.less >+++ b/koha-tmpl/opac-tmpl/bootstrap/less/opac.less >@@ -1957,7 +1957,9 @@ span.sep { > } > > /* style for PM-generated pagination bar */ >- >+.pages { >+ margin: 20px 0; >+} > .pages span:first-child, > .pages a:first-child { > border-width: 1px 1px 1px 1px; >diff --git a/opac/opac-authorities-home.pl b/opac/opac-authorities-home.pl >index 619d137..5b1a42b 100755 >--- a/opac/opac-authorities-home.pl >+++ b/opac/opac-authorities-home.pl >@@ -22,6 +22,7 @@ use strict; > use warnings; > > use CGI qw ( -utf8 ); >+use URI::Escape; > use C4::Auth; > > use C4::Context; >@@ -40,11 +41,10 @@ my $op = $query->param('op') || ''; > my $authtypecode = $query->param('authtypecode') || ''; > my $dbh = C4::Context->dbh; > >-my $startfrom = $query->param('startfrom'); >+my $startfrom = $query->param('startfrom') || 1; >+my $resultsperpage = $query->param('resultsperpage') || 20; > my $authid = $query->param('authid'); >-$startfrom = 0 if ( !defined $startfrom ); > my ( $template, $loggedinuser, $cookie ); >-my $resultsperpage; > > my $authority_types = Koha::Authority::Types->search({}, { order_by => ['authtypetext']}); > >@@ -57,8 +57,6 @@ if ( $op eq "do_search" ) { > my @value = $query->multi_param('value'); > $value[0] ||= q||; > >- $resultsperpage = $query->param('resultsperpage'); >- $resultsperpage = 20 if ( !defined $resultsperpage ); > my @tags; > my $builder = Koha::SearchEngine::QueryBuilder->new( > { index => $Koha::SearchEngine::AUTHORITIES_INDEX } ); >@@ -66,13 +64,8 @@ if ( $op eq "do_search" ) { > { index => $Koha::SearchEngine::AUTHORITIES_INDEX } ); > my $search_query = $builder->build_authorities_query_compat( \@marclist, \@and_or, > \@excluding, \@operator, \@value, $authtypecode, $orderby ); >-# use Data::Dumper; >-# die Dumper(\@marclist, \@and_or, >-# \@excluding, \@operator, \@value, $authtypecode, $orderby, $query); >- # The searchengine API expects pages to start at page 1 >- $startfrom = $startfrom // 0; > my ( $results, $total ) = >- $searcher->search_auth_compat( $search_query, $startfrom+1, $resultsperpage ); >+ $searcher->search_auth_compat( $search_query, $startfrom, $resultsperpage ); > ( $template, $loggedinuser, $cookie ) = get_template_and_user( > { > template_name => "opac-authoritiessearchresultlist.tt", >@@ -84,48 +77,44 @@ if ( $op eq "do_search" ) { > ); > > # multi page display gestion >- my $displaynext = 0; >- my $displayprev = $startfrom; >- $total ||= 0; >- if ( ( $total - ( ( $startfrom + 1 ) * ($resultsperpage) ) ) > 0 ) { >- $displaynext = 1; >- } >- >- my @field_data = ( >- { term => "marclist", val => $marclist[0] }, >- { term => "and_or", val => $and_or[0] }, >- { term => "excluding", val => $excluding[0] }, >- { term => "operator", val => $operator[0] }, >- { term => "value", val => $value[0] }, >- ); >- >- my @numbers = (); >- >- if ( $total > $resultsperpage ) { >- for ( my $i = 1 ; $i < $total / $resultsperpage + 1 ; $i++ ) { >- if ( $i < 16 ) { >- my $highlight = 0; >- ( $startfrom == ( $i - 1 ) ) && ( $highlight = 1 ); >- push @numbers, >- { >- number => $i, >- highlight => $highlight, >- searchdata => \@field_data, >- startfrom => ( $i - 1 ) >- }; >- } >- } >- } >- >- my $from = $startfrom * $resultsperpage + 1; >+ my $value_url = uri_escape_utf8($value[0]); >+ my $base_url = "opac-authorities-home.pl?" >+ ."marclist=$marclist[0]" >+ ."&and_or=$and_or[0]" >+ ."&excluding=$excluding[0]" >+ ."&operator=$operator[0]" >+ ."&value=$value_url" >+ ."&resultsperpage=$resultsperpage" >+ ."&type=opac" >+ ."&op=do_search" >+ ."&authtypecode=$authtypecode" >+ ."&orderby=$orderby"; >+ >+ my $from = ( $startfrom - 1 ) * $resultsperpage + 1; > my $to; >+ if ( !defined $total ) { >+ $total = 0; >+ } > >- if ( $total < ( ( $startfrom + 1 ) * $resultsperpage ) ) { >+ if ( $total < $startfrom * $resultsperpage ) { > $to = $total; > } > else { >- $to = ( ( $startfrom + 1 ) * $resultsperpage ); >+ $to = $startfrom * $resultsperpage; > } >+ >+ $template->param( result => $results ) if $results; >+ >+ $template->param( >+ pagination_bar => pagination_bar( >+ $base_url, int( $total / $resultsperpage ) + 1, >+ $startfrom, 'startfrom' >+ ), >+ total => $total, >+ from => $from, >+ to => $to, >+ ); >+ > unless (C4::Context->preference('OPACShowUnusedAuthorities')) { > # TODO implement usage counts > # my @usedauths = grep { $_->{used} > 0 } @$results; >@@ -162,22 +151,12 @@ if ( $op eq "do_search" ) { > } > } > >- $template->param( result => $results ) if $results; > $template->param( orderby => $orderby ); > $template->param( > startfrom => $startfrom, >- displaynext => $displaynext, >- displayprev => $displayprev, > resultsperpage => $resultsperpage, >- startfromnext => $startfrom + 1, >- startfromprev => $startfrom - 1, >- searchdata => \@field_data, > countfuzzy => !(C4::Context->preference('OPACShowUnusedAuthorities')), >- total => $total, >- from => $from, >- to => $to, > resultcount => scalar @$results, >- numbers => \@numbers, > authtypecode => $authtypecode, > authtypetext => $authority_types->find($authtypecode)->authtypetext, > isEDITORS => $authtypecode eq 'EDITORS', >-- >2.8.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 2735
:
8790
|
52200
|
52201
|
53197
|
53198
|
53289
|
53290