31f41e2c1d
Adds a dropdown to allow the user to choose to search the 'mainentry,' and 'match-heading'indexes, in addition to the 'any' index which is the default. To test (you will need authority records with see-from and see-also headings): 1. Go to the browse subjects and authors section in the OPAC 2. Do a search for a fairly generic term that is used as a see-also term in a lot of records. Note that your search results include both the record that you wanted and all the other records that refer to it. 3. Apply the patch. 4. Repeat the search from step 2. Notice there is no change to the results. 5. Repeat the search from step 2, but choose "in main entry" and observe that you are now only seeing authority records with the search entered in their main entry. 6. Repeat the search from step 2, but choose "in any heading" and observe that the results are the same as in step 2. This is intentional, so that in the future notes in authorities can be made searchable. 7. Search for an obsolete form of heading with the "in keyword" option selected. Notice what results you get. Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> Works nicely. Hiding the new options can be done with CSS: Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
169 lines
5.3 KiB
Perl
Executable file
169 lines
5.3 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
# WARNING: 4-character tab stops here
|
|
|
|
# Copyright 2000-2002 Katipo Communications
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it under the
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# 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.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use CGI;
|
|
use C4::Auth;
|
|
|
|
use C4::Context;
|
|
use C4::Auth;
|
|
use C4::Output;
|
|
use C4::AuthoritiesMarc;
|
|
use C4::Koha; # XXX subfield_is_koha_internal_p
|
|
|
|
my $query = new CGI;
|
|
my $op = $query->param('op') || '';
|
|
my $authtypecode = $query->param('authtypecode') || '';
|
|
my $dbh = C4::Context->dbh;
|
|
|
|
my $startfrom = $query->param('startfrom');
|
|
my $authid = $query->param('authid');
|
|
$startfrom = 0 if ( !defined $startfrom );
|
|
my ( $template, $loggedinuser, $cookie );
|
|
my $resultsperpage;
|
|
|
|
my $authtypes = getauthtypes();
|
|
my @authtypesloop = ();
|
|
foreach my $thisauthtype (
|
|
sort {
|
|
$authtypes->{$a}->{'authtypetext'}
|
|
cmp $authtypes->{$b}->{'authtypetext'}
|
|
}
|
|
keys %{$authtypes}
|
|
) {
|
|
push @authtypesloop,
|
|
{ value => $thisauthtype,
|
|
selected => $thisauthtype eq $authtypecode,
|
|
authtypetext => $authtypes->{$thisauthtype}->{'authtypetext'},
|
|
};
|
|
}
|
|
|
|
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 $orderby = $query->param('orderby');
|
|
my @value = ($query->param('value') || "",);
|
|
|
|
$resultsperpage = $query->param('resultsperpage');
|
|
$resultsperpage = 20 if ( !defined $resultsperpage );
|
|
my @tags;
|
|
my ( $results, $total, @fields ) =
|
|
SearchAuthorities( \@marclist, \@and_or, \@excluding, \@operator,
|
|
\@value, $startfrom * $resultsperpage,
|
|
$resultsperpage, $authtypecode, $orderby );
|
|
( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "opac-authoritiessearchresultlist.tmpl",
|
|
query => $query,
|
|
type => 'opac',
|
|
authnotrequired => 1,
|
|
debug => 1,
|
|
}
|
|
);
|
|
|
|
# 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 => $query->param("marclist") || ''} );
|
|
|
|
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 $to;
|
|
|
|
if ( $total < ( ( $startfrom + 1 ) * $resultsperpage ) ) {
|
|
$to = $total;
|
|
}
|
|
else {
|
|
$to = ( ( $startfrom + 1 ) * $resultsperpage );
|
|
}
|
|
unless (C4::Context->preference('OPACShowUnusedAuthorities')) {
|
|
my @usedauths = grep { $_->{used} > 0 } @$results;
|
|
$results = \@usedauths;
|
|
}
|
|
$template->param( result => $results ) if $results;
|
|
$template->param( FIELDS => \@fields );
|
|
$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 => $authtypes->{$authtypecode}{'authtypetext'},
|
|
isEDITORS => $authtypecode eq 'EDITORS',
|
|
);
|
|
|
|
}
|
|
else {
|
|
( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "opac-authorities-home.tmpl",
|
|
query => $query,
|
|
type => 'opac',
|
|
authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
|
|
debug => 1,
|
|
}
|
|
);
|
|
|
|
}
|
|
|
|
$template->param( authtypesloop => \@authtypesloop );
|
|
|
|
# Print the page
|
|
output_html_with_http_headers $query, $cookie, $template->output;
|
|
|
|
# Local Variables:
|
|
# tab-width: 4
|
|
# End:
|