X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;ds=sidebyside;f=opac%2Fopac-authorities-home.pl;h=eb795f4ed3c3792f30f8d8ba3aff6df53cf47340;hb=ccb4180339544d6700de80b2d9879fdf175b51b9;hp=d22a53d8c7b19f0defddb5818892102d726111b7;hpb=dfbe20e4dc64a200d4223b004b9220cdf582c606;p=koha-ffzg.git diff --git a/opac/opac-authorities-home.pl b/opac/opac-authorities-home.pl index d22a53d8c7..eb795f4ed3 100755 --- a/opac/opac-authorities-home.pl +++ b/opac/opac-authorities-home.pl @@ -18,16 +18,14 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -use warnings; +use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Auth; +use URI::Escape qw( uri_escape_utf8 ); +use C4::Auth qw( get_template_and_user ); use C4::Context; -use C4::Auth; -use C4::Output; -use C4::AuthoritiesMarc; +use C4::Output qw( pagination_bar output_html_with_http_headers ); use C4::Koha; use C4::Search::History; @@ -35,16 +33,15 @@ use Koha::Authority::Types; use Koha::SearchEngine::Search; use Koha::SearchEngine::QueryBuilder; -my $query = new CGI; +my $query = CGI->new; 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,71 +54,64 @@ 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(); - my $searcher = Koha::SearchEngine::Search->new({index => 'authorities'}); + my $builder = Koha::SearchEngine::QueryBuilder->new( + { index => $Koha::SearchEngine::AUTHORITIES_INDEX } ); + my $searcher = Koha::SearchEngine::Search->new( + { 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); + my $offset = ( $startfrom - 1 ) * $resultsperpage + 1; my ( $results, $total ) = - $searcher->search_auth_compat( $search_query, $startfrom, $resultsperpage ); + $searcher->search_auth_compat( $search_query, $offset, $resultsperpage ); ( $template, $loggedinuser, $cookie ) = get_template_and_user( { template_name => "opac-authoritiessearchresultlist.tt", query => $query, type => 'opac', authnotrequired => 1, - debug => 1, } ); + $template->param( search_query => $search_query ) if C4::Context->preference('DumpSearchQueryTemplate'); # 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; @@ -130,7 +120,7 @@ if ( $op eq "do_search" ) { # Opac search history if (C4::Context->preference('EnableOpacSearchHistory')) { - unless ( $startfrom ) { + if ( $startfrom == 1) { my $path_info = $query->url(-path_info=>1); my $query_cgi_history = $query->url(-query=>1); $query_cgi_history =~ s/^$path_info\?//; @@ -158,22 +148,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', @@ -187,7 +167,6 @@ else { query => $query, type => 'opac', authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ), - debug => 1, } );