X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=cataloguing%2Fvalue_builder%2Fmarc21_field_007.pl;h=a64f407e5980e332c3a32134e5919d4f6b4343a6;hb=5e4e10c4ca558180137bf5a4ff5a68495efa0ec7;hp=e780dd156867d52defb384600a95803b5d9ba2b9;hpb=f8e9fb6445dadbdef91e13a253c9c6bcb75e0eec;p=koha.git diff --git a/cataloguing/value_builder/marc21_field_007.pl b/cataloguing/value_builder/marc21_field_007.pl index e780dd1568..a64f407e59 100755 --- a/cataloguing/value_builder/marc21_field_007.pl +++ b/cataloguing/value_builder/marc21_field_007.pl @@ -1,96 +1,100 @@ - #!/usr/bin/perl -# $Id$ +# Converted to new plugin style (Bug 13437) # 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 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 3 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. +# 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., 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, see . + +use Modern::Perl; -use strict; use C4::Auth; -use CGI; +use CGI qw ( -utf8 ); use C4::Context; use C4::Search; use C4::Output; -=head1 - -plugin_parameters : other parameters added when the plugin is called by the dopop function - -=cut -sub plugin_parameters { -my ($dbh,$record,$tagslib,$i,$tabloop) = @_; -return ""; -} - -sub plugin_javascript { -my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; -my $function_name= "100".(int(rand(100000))+1); -my $res=" - "; -return ($function_name,$res); -} -sub plugin { -my ($input) = @_; - my %env; - -# my $input = new CGI; - my $index= $input->param('index'); - my $result= $input->param('result'); - - - my $dbh = C4::Context->dbh; - -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "value_builder/marc21_field_007.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {editcatalogue => 1}, - debug => 1, - }); - $result = "ta" unless $result; - my $f0 = substr($result,0,1); - my $f1 = substr($result,1,4); - - $template->param( index => $index, - f0 => $f0, - "f0$f0" => $f0, - f1 => $f1, - "f1$f1" => $f1, - ); - print $input->header(-cookie => $cookie),$template->output; -} - -1; + return $res; +}; + +my $launcher = sub { + my ( $params ) = @_; + my $input = $params->{cgi}; + my $index = $input->param('index'); + my $result = $input->param('result'); + + my $dbh = C4::Context->dbh; + + my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { template_name => "cataloguing/value_builder/marc21_field_007.tt", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { editcatalogue => '*' }, + debug => 1, + } + ); + + $result = "ta" unless $result; + my $pad_length = 23 - length $result; + my @fvalues = split //, $result; + if ($pad_length>0) { + push @fvalues, (undef)x($pad_length); + } + my @fnames = map { "f$_" } (0..22); + + #FIXME: Two of the material types treat position 06, 07, and 08 as a single + #three-char field. This script works fine for creating values and sending them + #back to the MARC, but if there is already a value in the 007, it won't send + #it properly to the value builder for those two instances. Not sure how to solve. + $template->param( index => $index ); + foreach my $count ( 0..22 ) { + if (defined $fvalues[$count]) { + # template uses f##pipe variables. + my $key2; + if ($fvalues[$count] eq q{|}) { + $key2 = $fnames[$count] . 'pipe'; + } + else { + $key2 = $fnames[$count] . $fvalues[$count]; + } + $template->param( + $fnames[$count] => $fvalues[$count], + $key2 => $fvalues[$count] + ); + } + } + output_html_with_http_headers $input, $cookie, $template->output; +}; + +return { builder => $builder, launcher => $launcher };