Bugzilla – Attachment 49823 Details for
Bug 13438
Convert normarc framework plugins to new style (see also 10480)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 13438: Convert normarc framework plugins to new style
Bug-13438-Convert-normarc-framework-plugins-to-new.patch (text/plain), 16.46 KB, created by
Marcel de Rooy
on 2016-04-03 14:41:27 UTC
(
hide
)
Description:
Bug 13438: Convert normarc framework plugins to new style
Filename:
MIME Type:
Creator:
Marcel de Rooy
Created:
2016-04-03 14:41:27 UTC
Size:
16.46 KB
patch
obsolete
>From 7bd469fcbba6ce40ad105c08e6f59b47f45ec04e Mon Sep 17 00:00:00 2001 >From: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> >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 <http://www.gnu.org/licenses>. > >-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=" > <script type=\"text/javascript\"> > //<![CDATA[ > >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=normarc_field_007.pl&index=$field_number&result=\"+defaultvalue,\"unimarc field 100\",'width=1000,height=600,toolbar=false,scrollbars=yes'); >+function Click$function_name(i) { >+ defaultvalue=document.getElementById(\"$params->{id}\").value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=normarc_field_007.pl&index=$params->{id}&result=\"+defaultvalue,\"unimarc field 100\",'width=1000,height=600,toolbar=false,scrollbars=yes'); > > } > //]]> > </script> > "; >+ 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 <http://www.gnu.org/licenses>. > >-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 = " > <script type=\"text/javascript\"> > //<![CDATA[ > > function Focus$function_name(subfield_managed) { > >- if ( document.getElementById(\"$field_number\").value ) { >- } >- else { >- document.getElementById(\"$field_number\").value='$dateentered' + 't no ||||| |||| 00| 0 $lang d'; >- } >+ if ( document.getElementById(\"$params->{id}\").value ) { >+ } >+ else { >+ document.getElementById(\"$params->{id}\").value='$dateentered' + 't no ||||| |||| 00| 0 $lang d'; >+ } > return 1; > } > >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- defaultvalue=defaultvalue.replace(/ /g, \"+\"); >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=normarc_field_008.pl&index=$field_number&result=\"+defaultvalue,\"unimarc field 100\",'width=1000,height=600,toolbar=false,scrollbars=yes'); >+function Click$function_name(i) { >+ defaultvalue=document.getElementById(\"$params->{id}\").value; >+ defaultvalue=defaultvalue.replace(/ /g, \"+\"); >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=normarc_field_008.pl&index=$params->{id}&result=\"+defaultvalue,\"unimarc field 100\",'width=1000,height=600,toolbar=false,scrollbars=yes'); > > } > //]]> > </script> > "; >+ 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 <http://www.gnu.org/licenses>. > >-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=" >-<script type=\"text/javascript\"> >+my $builder = sub { >+ my ( $params ) = @_; >+ my $function_name = $params->{id}; >+ >+ my $res="<script type=\"text/javascript\"> > //<![CDATA[ > > function Focus$function_name(subfield_managed) { >- if(!document.getElementById(\"$field_number\").value){ >- document.getElementById(\"$field_number\").value = ' nam a22 1 4500'; >+ if(!document.getElementById(\"$params->{id}\").value){ >+ document.getElementById(\"$params->{id}\").value = ' nam a22 1 4500'; > } > return 1; > } > >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=normarc_leader.pl&index=$field_number&result=\"+defaultvalue,\"unimarc field 100\",'width=1000,height=600,toolbar=false,scrollbars=yes'); >+function Click$function_name(i) { >+ defaultvalue=document.getElementById(\"$params->{id}\").value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=normarc_leader.pl&index=$params->{id}&result=\"+defaultvalue,\"unimarc field 100\",'width=1000,height=600,toolbar=false,scrollbars=yes'); > > } > //]]> > </script> > "; > >-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
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 13438
: 49823 |
49824
|
51453