From 7bd469fcbba6ce40ad105c08e6f59b47f45ec04e Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Sun, 3 Apr 2016 15:07:17 +0200 Subject: [PATCH] Bug 13438: Convert normarc framework plugins to new style Content-Type: text/plain; charset=utf-8 Converts NORMARC plugins to new style (with builder and launcher). See also bugs 10480 and 13437. Note: Search.pm is not needed in these plugins. Tabs have been removed in the same pass. Note 2: For the 008 plugin the tag editor already seems to have some problems (js errors on e.g. f18 for Velg materialtype, etc.) This makes that pressing OK does not always work. Outside the scope of this report. Test plan: [1] Run t/db_dependent/FrameworkPlugin.t -incl cataloguing/value_builder/normarc*.pl. (Ignore substr and uninitialized warnings; these are not in the scope of this patch.) [2] Connect the plugin. Test focus (leader,008) and click event. (See note 2.) [3] Look for warnings in the log related(!) to this change. --- cataloguing/value_builder/normarc_field_007.pl | 206 ++++++++++++------------ cataloguing/value_builder/normarc_field_008.pl | 70 ++++---- cataloguing/value_builder/normarc_leader.pl | 104 ++++++------ 3 files changed, 199 insertions(+), 181 deletions(-) diff --git a/cataloguing/value_builder/normarc_field_007.pl b/cataloguing/value_builder/normarc_field_007.pl index 8bf3ba7..89e2ae0 100755 --- a/cataloguing/value_builder/normarc_field_007.pl +++ b/cataloguing/value_builder/normarc_field_007.pl @@ -1,5 +1,7 @@ #!/usr/bin/perl +# Converted to new plugin style (Bug 13437) + # Copyright 2009 Magnus Enger Libriotech # # This file is part of Koha. @@ -17,125 +19,127 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -use C4::Auth; +use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Context; -use C4::Search; +use C4::Auth; +use C4::Context; use C4::Output; -sub plugin_javascript { -my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; -my $function_name= $field_number; -my $res=" +my $builder = sub { + my ( $params ) = @_; + my $function_name = $params->{id}; + my $res=" "; + return $res; +}; -return ($function_name,$res); -} -sub plugin { -my ($input) = @_; - my $index= $input->param('index'); - my $result= $input->param('result'); - +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 $dbh = C4::Context->dbh; -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "cataloguing/value_builder/normarc_field_007.tt", - 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); + my ($template, $loggedinuser, $cookie) = get_template_and_user({ + template_name => "cataloguing/value_builder/normarc_field_007.tt", + 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); #added new parameters to allow for all material types - my $f2 = substr($result,2,1); - my $f3 = substr($result,3,1); - my $f4 = substr($result,4,1); - my $f5 = substr($result,5,1); - my $f6 = substr($result,6,1); - my $f7 = substr($result,7,1); - my $f8 = substr($result,8,1); - my $f9 = substr($result,9,1); - my $f10 = substr($result,10,1); - my $f11 = substr($result,11,1); - my $f12 = substr($result,12,1); - my $f13 = substr($result,13,1); - my $f14 = substr($result,14,1); - my $f15 = substr($result,15,1); - my $f16 = substr($result,16,1); - my $f17 = substr($result,17,1); - my $f18 = substr($result,18,1); - my $f19 = substr($result,19,1); - my $f20 = substr($result,20,1); - my $f21 = substr($result,21,1); - my $f22 = substr($result,22,1); + my $f2 = substr($result,2,1); + my $f3 = substr($result,3,1); + my $f4 = substr($result,4,1); + my $f5 = substr($result,5,1); + my $f6 = substr($result,6,1); + my $f7 = substr($result,7,1); + my $f8 = substr($result,8,1); + my $f9 = substr($result,9,1); + my $f10 = substr($result,10,1); + my $f11 = substr($result,11,1); + my $f12 = substr($result,12,1); + my $f13 = substr($result,13,1); + my $f14 = substr($result,14,1); + my $f15 = substr($result,15,1); + my $f16 = substr($result,16,1); + my $f17 = substr($result,17,1); + my $f18 = substr($result,18,1); + my $f19 = substr($result,19,1); + my $f20 = substr($result,20,1); + my $f21 = substr($result,21,1); + my $f22 = substr($result,22,1); #FIXME: There is probably a more-elegant way to do this! #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, - f0 => $f0, - "f0$f0" => $f0, - f1 => $f1, - "f1$f1" => $f1, - f2 => $f2, - "f2$f2" => $f2, - f3 => $f3, - "f3$f3" => $f3, - f4 => $f4, - "f4$f4" => $f4, - f5 => $f5, - "f5$f5" => $f5, - f6 => $f6, - "f6$f6" => $f6, - f7 => $f7, - "f7$f7" => $f7, - f8 => $f8, - "f8$f8" => $f8, - f9 => $f9, - "f9$f9" => $f9, - f10 => $f10, - "f10$f10" => $f10, - f11 => $f11, - "f11$f11" => $f11, - f12 => $f12, - "f12$f12" => $f12, - f13 => $f13, - "f13$f13" => $f13, - f14 => $f14, - "f14$f14" => $f14, - f15 => $f15, - "f15$f15" => $f15, - f16 => $f16, - "f16$f16" => $f16, - f17 => $f17, - "f17$f17" => $f17, - f18 => $f18, - "f18$f18" => $f18, - f19 => $f19, - "f19$f19" => $f19, - f20 => $f20, - "f20$f20" => $f20, - f21 => $f21, - "f21$f21" => $f21, - f22 => $f22, - "f22$f22" => $f22, - ); - output_html_with_http_headers $input, $cookie, $template->output; -} + $template->param( + index => $index, + f0 => $f0, + "f0$f0" => $f0, + f1 => $f1, + "f1$f1" => $f1, + f2 => $f2, + "f2$f2" => $f2, + f3 => $f3, + "f3$f3" => $f3, + f4 => $f4, + "f4$f4" => $f4, + f5 => $f5, + "f5$f5" => $f5, + f6 => $f6, + "f6$f6" => $f6, + f7 => $f7, + "f7$f7" => $f7, + f8 => $f8, + "f8$f8" => $f8, + f9 => $f9, + "f9$f9" => $f9, + f10 => $f10, + "f10$f10" => $f10, + f11 => $f11, + "f11$f11" => $f11, + f12 => $f12, + "f12$f12" => $f12, + f13 => $f13, + "f13$f13" => $f13, + f14 => $f14, + "f14$f14" => $f14, + f15 => $f15, + "f15$f15" => $f15, + f16 => $f16, + "f16$f16" => $f16, + f17 => $f17, + "f17$f17" => $f17, + f18 => $f18, + "f18$f18" => $f18, + f19 => $f19, + "f19$f19" => $f19, + f20 => $f20, + "f20$f20" => $f20, + f21 => $f21, + "f21$f21" => $f21, + f22 => $f22, + "f22$f22" => $f22, + ); + output_html_with_http_headers $input, $cookie, $template->output; +}; + +return { builder => $builder, launcher => $launcher }; diff --git a/cataloguing/value_builder/normarc_field_008.pl b/cataloguing/value_builder/normarc_field_008.pl index b626d37..997a513 100755 --- a/cataloguing/value_builder/normarc_field_008.pl +++ b/cataloguing/value_builder/normarc_field_008.pl @@ -1,5 +1,7 @@ #!/usr/bin/perl +# Converted to new plugin style (Bug 13437) + # Copyright 2009 Magnus Enger Libriotech # # This file is part of Koha. @@ -17,61 +19,67 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -use C4::Auth; +use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Context; -use C4::Search; +use C4::Auth; +use C4::Context; use C4::Output; -# find today's date -my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); +sub date_entered { + # find today's date + my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = + localtime(time); + $year += 1900; + $mon += 1; + return substr($year, 2, 2) . sprintf("%0.2d", $mon) . + sprintf("%0.2d", $mday); +} -$year += 1900; -$mon += 1; -my $dateentered = substr($year, 2, 2) . sprintf("%0.2d", $mon) . sprintf("%0.2d", $mday); +my $builder = sub { + my ( $params ) = @_; + my $function_name = $params->{id}; + my $dateentered = date_entered(); -sub plugin_javascript { my $lang = C4::Context->preference('DefaultLanguageField008' ); $lang = "eng" unless $lang; $lang = pack("A3", $lang); - my ($dbh, $record, $tagslib, $field_number, $tabloop) = @_; - my $function_name = $field_number; - my $res = " + my $res = " "; + return $res; +}; - return ($function_name, $res); -} +my $launcher = sub { + my ( $params ) = @_; + my $input = $params->{cgi}; + my $index = $input->param('index'); + my $result = $input->param('result'); + my $dateentered = date_entered(); -sub plugin { my $lang = C4::Context->preference('DefaultLanguageField008' ); $lang = "eng" unless $lang; $lang = pack("A3", $lang); - my ($input) = @_; - my $index = $input->param('index'); - my $result = $input->param('result'); my $dbh = C4::Context->dbh; @@ -85,7 +93,7 @@ sub plugin { } ); - # $result = " t xxu 00 0 eng d" unless $result; + # $result = " t xxu 00 0 eng d" unless $result; $result = "$dateentered" . "t no ||||| |||| 00| 0 $lang d" unless $result; my $f1 = substr($result, 0, 6); my $f6 = substr($result, 6, 1); @@ -170,4 +178,6 @@ sub plugin { "f39$f39" => $f39, ); output_html_with_http_headers $input, $cookie, $template->output; -} +}; + +return { builder => $builder, launcher => $launcher }; diff --git a/cataloguing/value_builder/normarc_leader.pl b/cataloguing/value_builder/normarc_leader.pl index d0842d7..a5567b9 100755 --- a/cataloguing/value_builder/normarc_leader.pl +++ b/cataloguing/value_builder/normarc_leader.pl @@ -1,5 +1,6 @@ #!/usr/bin/perl +# Converted to new plugin style (Bug 13437) # Copyright 2000-2002 Katipo Communications # @@ -18,73 +19,76 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -use C4::Auth; +use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Context; -use C4::Search; +use C4::Auth; +use C4::Context; use C4::Output; -sub plugin_javascript { -my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; -my $function_name= $field_number; -my $res=" - "; -return ($function_name,$res); -} -sub plugin { -my ($input) = @_; - my $index= $input->param('index'); - my $result= $input->param('result'); + 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 $dbh = C4::Context->dbh; -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "cataloguing/value_builder/normarc_leader.tt", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {editcatalogue => 1}, - debug => 1, - }); - $result = " nam a22 1 4500" unless $result; - my $f5 = substr($result,5,1); - my $f6 = substr($result,6,1); - my $f7 = substr($result,7,1); - my $f8 = substr($result,8,1); - my $f17 = substr($result,17,1); - my $f18 = substr($result,18,1); - my $f19 = substr($result,19,1); - my $f2023 = substr($result,20,4); - $template->param(index => $index, - "f5$f5" => 1, - "f6$f6" => 1, - "f7$f7" => 1, - "f8$f8" => 1, - "f17$f17" => 1, - "f18$f18" => 1, - "f19$f19" => 1, - "f2023" => $f2023, - ); - output_html_with_http_headers $input, $cookie, $template->output; -} + my ($template, $loggedinuser, $cookie) = get_template_and_user({ + template_name => "cataloguing/value_builder/normarc_leader.tt", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {editcatalogue => 1}, + debug => 1, + }); + + $result = " nam a22 1 4500" unless $result; + my $f5 = substr($result,5,1); + my $f6 = substr($result,6,1); + my $f7 = substr($result,7,1); + my $f8 = substr($result,8,1); + my $f17 = substr($result,17,1); + my $f18 = substr($result,18,1); + my $f19 = substr($result,19,1); + my $f2023 = substr($result,20,4); + $template->param(index => $index, + "f5$f5" => 1, + "f6$f6" => 1, + "f7$f7" => 1, + "f8$f8" => 1, + "f17$f17" => 1, + "f18$f18" => 1, + "f19$f19" => 1, + "f2023" => $f2023, + ); + output_html_with_http_headers $input, $cookie, $template->output; +}; + +return { builder => $builder, launcher => $launcher }; -- 1.7.10.4