X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=authorities%2Fauth_finder.pl;h=607c6524f8b4e270c37a1baa89c0e4e97cca71bf;hb=3c1c323de47b9265fd2ac925e68998043ce9afc2;hp=f68c18afe3b336f71fdba4e756892e011acb9fd9;hpb=ee1674c9bd58597d59a9e000b2a624f2178a1b11;p=koha_fer diff --git a/authorities/auth_finder.pl b/authorities/auth_finder.pl index f68c18afe3..607c6524f8 100755 --- a/authorities/auth_finder.pl +++ b/authorities/auth_finder.pl @@ -14,61 +14,75 @@ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; -require Exporter; +use warnings; + use CGI; use C4::Output; use C4::Auth; use C4::Context; use C4::AuthoritiesMarc; use C4::Acquisition; -use C4::Koha; # XXX subfield_is_koha_internal_p +use C4::Koha; my $query = new CGI; -my $op = $query->param('op'); -my $authtypecode = $query->param('authtypecode'); -my $index = $query->param('index'); -my $tagid = $query->param('tagid'); -my $resultstring = $query->param('result'); -my $dbh = C4::Context->dbh; - -my $startfrom = $query->param('startfrom'); -$startfrom = 0 if ( !defined $startfrom ); -my ( $template, $loggedinuser, $cookie ); -my $resultsperpage; - -my $authtypes = getauthtypes; +my $op = $query->param('op') || ''; +my $authtypecode = $query->param('authtypecode') || ''; +my $index = $query->param('index') || ''; +my $tagid = $query->param('tagid') || ''; +my $source = $query->param('source') || ''; +my $relationship = $query->param('relationship') || ''; + +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => ( $op eq 'do_search' ) + ? 'authorities/searchresultlist-auth.tt' + : 'authorities/auth_finder.tt', + query => $query, + type => 'intranet', + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + } +); + +# Authority types loop +my $authtypes = C4::Koha::getauthtypes(); my @authtypesloop; foreach my $thisauthtype ( keys %$authtypes ) { - my $selected = 1 if $thisauthtype eq $authtypecode; my %row = ( value => $thisauthtype, - selected => $selected, + selected => ( $thisauthtype eq $authtypecode ), authtypetext => $authtypes->{$thisauthtype}{'authtypetext'}, index => $index, ); push @authtypesloop, \%row; } +# If search form posted if ( $op eq "do_search" ) { my @marclist = $query->param('marclist'); my @and_or = $query->param('and_or'); my @excluding = $query->param('excluding'); my @operator = $query->param('operator'); - my @value = $query->param('value'); - my $orderby = $query->param('orderby'); - - $resultsperpage = $query->param('resultsperpage'); - $resultsperpage = 19 if ( !defined $resultsperpage ); + my @value = ( + $query->param('value_mainstr') || undef, + $query->param('value_main') || undef, + $query->param('value_any') || undef, + $query->param('value_match') || undef + ); + my $orderby = $query->param('orderby') || ''; + my $startfrom = $query->param('startfrom') || 0; + my $resultsperpage = $query->param('resultsperpage') || 20; my ( $results, $total ) = SearchAuthorities( \@marclist, \@and_or, \@excluding, \@operator, \@value, $startfrom * $resultsperpage, - $resultsperpage, $authtypecode, $orderby); + $resultsperpage, $authtypecode, $orderby ); + # multi page display gestion my $displaynext = 0; my $displayprev = $startfrom; @@ -78,19 +92,25 @@ if ( $op eq "do_search" ) { my @field_data = (); - my @marclist_ini = - $query->param('marclist') - ; # get marclist again, as the previous one has been modified by catalogsearch (mainentry replaced by field name +# get marclist again, as the previous one has been modified by catalogsearch (mainentry replaced by field name) + my @marclist_ini = $query->param('marclist'); for ( my $i = 0 ; $i <= $#marclist ; $i++ ) { push @field_data, { term => "marclist", val => $marclist_ini[$i] }; push @field_data, { term => "and_or", val => $and_or[$i] }; push @field_data, { term => "excluding", val => $excluding[$i] }; push @field_data, { term => "operator", val => $operator[$i] }; - push @field_data, { term => "value", val => $value[$i] }; } - my @numbers = (); + push @field_data, + { term => "value_mainstr", val => $query->param('value_mainstr') || "" }; + push @field_data, + { term => "value_main", val => $query->param('value_main') || "" }; + push @field_data, + { term => "value_any", val => $query->param('value_any') || "" }; + push @field_data, + { term => "value_match", val => $query->param('value_match') || "" }; + my @numbers = (); if ( $total > $resultsperpage ) { for ( my $i = 1 ; $i < $total / $resultsperpage + 1 ; $i++ ) { if ( $i < 16 ) { @@ -109,63 +129,54 @@ if ( $op eq "do_search" ) { my $from = $startfrom * $resultsperpage + 1; my $to; - if ( $total < ( ( $startfrom + 1 ) * $resultsperpage ) ) { $to = $total; } else { $to = ( ( $startfrom + 1 ) * $resultsperpage ); } - ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { - template_name => "authorities/searchresultlist-auth.tmpl", - query => $query, - type => 'intranet', - authnotrequired => 0, - flagsrequired => { catalogue => 1 }, - } - ); $template->param( result => $results ) if $results; $template->param( - orderby => $orderby, - startfrom => $startfrom, - displaynext => $displaynext, - displayprev => $displayprev, - resultsperpage => $resultsperpage, - startfromnext => $startfrom + 1, - startfromprev => $startfrom - 1, - searchdata => \@field_data, - total => $total, - from => $from, - to => $to, - numbers => \@numbers, - authtypecode => $authtypecode, - mainmainstring => $value[0], - mainstring => $value[1], - anystring => $value[2], - ); -} else { - ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { - template_name => "authorities/auth_finder.tmpl", - query => $query, - type => 'intranet', - authnotrequired => 0, - flagsrequired => { catalogue => 1 }, - } + orderby => $orderby, + startfrom => $startfrom, + displaynext => $displaynext, + displayprev => $displayprev, + resultsperpage => $resultsperpage, + startfromnext => $startfrom + 1, + startfromprev => $startfrom - 1, + searchdata => \@field_data, + total => $total, + from => $from, + to => $to, + numbers => \@numbers, + operator_mainstr => ( @operator > 0 && $operator[0] ) + ? $operator[0] + : '', + operator_main => ( @operator > 1 && $operator[1] ) ? $operator[1] : '', + operator_any => ( @operator > 2 && $operator[2] ) ? $operator[2] : '', + operator_match => ( @operator > 3 && $operator[3] ) ? $operator[3] : '', ); +} +else { - $template->param( - resultstring => $resultstring, - ); + # special case for UNIMARC field 210c builder + my $resultstring = $query->param('result') || ''; + $template->param( resultstring => $resultstring, ); } $template->param( + op => $op, + value_mainstr => $query->param('value_mainstr') || '', + value_main => $query->param('value_main') || '', + value_any => $query->param('value_any') || '', + value_match => $query->param('value_match') || '', tagid => $tagid, index => $index, authtypesloop => \@authtypesloop, authtypecode => $authtypecode, + source => $source, + relationship => $relationship, ); # Print the page