X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=cataloguing%2Fvalue_builder%2Funimarc_field_225a.pl;h=acd02e1887707b5e6a3b95f9f40c7cd76e0388bb;hb=f394170ebc25e19eced78f37b550f93064e40646;hp=d8b449300f171dd90c6eb904613ecb0c42f4b34d;hpb=2e4a11773c0a4aa172b5debdee4db831a13adf26;p=srvgit diff --git a/cataloguing/value_builder/unimarc_field_225a.pl b/cataloguing/value_builder/unimarc_field_225a.pl index d8b449300f..acd02e1887 100755 --- a/cataloguing/value_builder/unimarc_field_225a.pl +++ b/cataloguing/value_builder/unimarc_field_225a.pl @@ -1,6 +1,5 @@ #!/usr/bin/perl -# $Id$ # Copyright 2000-2002 Katipo Communications # @@ -15,9 +14,9 @@ # 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. =head1 SYNOPSIS @@ -43,11 +42,12 @@ It need : =cut use strict; +#use warnings; FIXME - Bug 2505 use C4::Auth; use CGI; use C4::Context; -use C4::Search; +use C4::AuthoritiesMarc; use C4::Output; =head1 @@ -79,16 +79,13 @@ sub plugin_javascript { var isbn_found = 0; var editor_found = 0; - var re1 = /'tag_010_subfield_a_.*'/; - var re2 = /'tag_210_subfield_c_.*'/; - var inputs = document.getElementsByTagName('input'); for(var i=0 , len=inputs.length ; i \< len ; i++ ){ - if(inputs[i].id.match(re1)){ + if(inputs[i].id.match(/^tag_010_subfield_a_.*/)){ isbn_found = inputs[i].value; } - if(inputs[i].id.match(re2)){ + if(inputs[i].id.match(/^tag_210_subfield_c_.*/)){ editor_found = inputs[i].value; } if(editor_found && isbn_found){ @@ -97,7 +94,7 @@ sub plugin_javascript { } defaultvalue = document.getElementById(\"$field_number\").value; - window.open(\"plugin_launcher.pl?plugin_name=unimarc_field_225a.pl&index=\"+index+\"&result=\"+defaultvalue+\"&isbn_found=\"+isbn_found+\"&editor_found=\"+editor_found,\"unimarc 225a\",'width=500,height=200,toolbar=false,scrollbars=no'); + window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_225a.pl&index=\"+index+\"&result=\"+defaultvalue+\"&editor_found=\"+editor_found,\"unimarc225a\",'width=500,height=200,toolbar=false,scrollbars=no'); } @@ -111,9 +108,8 @@ sub plugin { my $index = $input->param('index'); my $result = $input->param('result'); my $editor_found = $input->param('editor_found'); - my $isbn_found = $input->param('isbn_found'); - my $dbh = C4::Context->dbh; my $authoritysep = C4::Context->preference("authoritysep"); + my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { template_name => @@ -121,7 +117,7 @@ sub plugin { query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => { editcatalogue => 1 }, + flagsrequired => { editcatalogue => '*' }, debug => 1, } ); @@ -129,64 +125,25 @@ sub plugin { # builds collection list : search isbn and editor, in parent, then load collections from bibliothesaurus table # if there is an isbn, complete search my @collections; - if ($isbn_found) { - my $sth = $dbh->prepare( - "SELECT auth_subfield_table.authid,subfieldvalue - FROM auth_subfield_table - LEFT JOIN auth_header ON auth_subfield_table.authid = auth_header.authid - WHERE authtypecode='EDITORS' - AND tag='200' - AND subfieldcode='a' - AND subfieldvalue=?" - ); - my $sth2 = - $dbh->prepare( - "SELECT subfieldvalue - FROM auth_subfield_table - WHERE tag='200' - AND subfieldcode='c' - AND authid=? - ORDER BY subfieldvalue" - ); - my @splited = split //, $isbn_found; - my $isbn_rebuild = ''; - foreach my $x (@splited) { - $isbn_rebuild .= $x; - $sth->execute($isbn_rebuild); - my ($authid) = $sth->fetchrow; - $sth2->execute($authid); - while ( my ($line) = $sth2->fetchrow ) { - push @collections, $line; - } - } - } - else { - my $sth = $dbh->prepare( - "SELECT auth_subfield_table.authid,subfieldvalue - FROM auth_subfield_table - LEFT JOIN auth_header ON auth_subfield_table.authid = auth_header.authid - WHERE authtypecode='EDITORS' - AND tag='200' - AND subfieldcode='b' - AND subfieldvalue=?" - ); - my $sth2 = - $dbh->prepare( - "SELECT subfieldvalue - FROM auth_subfield_table - WHERE tag='200' - AND subfieldcode='c' - AND authid=? - ORDER BY subfieldvalue" - ); - $sth->execute($editor_found); - my ($authid) = $sth->fetchrow; - $sth2->execute($authid); - while ( my ($line) = $sth2->fetchrow ) { - push @collections, $line; + + my @value = ($editor_found,"",""); + my @tags = ("mainentry","",""); + my @and_or = ('and','',''); + my @operator = ('is','',''); + my @excluding = ('','',''); + + + my ($results,$total) = SearchAuthorities( \@tags,\@and_or, + \@excluding, \@operator, \@value, + 0, 20,"EDITORS", "HeadingAsc"); + foreach my $editor (@$results){ + my $authority = GetAuthority($editor->{authid}); + foreach my $col ($authority->subfield('200','c')){ + push @collections, $col; } - } - + + } + @collections = sort @collections; # my @collections = ["test"]; my $collection = CGI::scrolling_list( -name => 'f1',