Bug 34657: Merge cataloging plugins for UNIMARC 123d, e, f, and g

This patch removes some UNIMARC cataloging plugins which were
essentially duplicates of each other and renaming the remaining version
to reflect that it's for use with multiple subfields.

UNIMARC 123$d, e, f, and g can all be filled with
unimarc_field_123defg.pl

It's easiest to test if you have UNIMARC sample data. In KTD, run
'reset_all_unimarc'

- Apply the patch and run the database update process.
- Go to Cataloging and create or edit a bibliographic record.
- Under tab 1, look for tag 123.
- Test the plugin link for subfields d, e, f, and g
  - In each case the popup window should have the heading "UNIMARC field
    123d/e/f/g builder"
  - Fill out the form each time and confirm that the values are copied
    to the correct field in the MARC editor window.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Owen Leonard 2023-08-30 14:53:01 +00:00 committed by Tomas Cohen Arazi
parent 2b4e22b5b9
commit 9f54c1c9f0
No known key found for this signature in database
GPG Key ID: 0A272EA1B2F3C15F
9 changed files with 23 additions and 452 deletions

View File

@ -35,7 +35,7 @@ my $res="
function Clic$function_name(event) {
event.preventDefault();
defaultvalue=document.getElementById(event.data.id).value;
newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123g.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_123g\",'width=1000,height=375,toolbar=false,scrollbars=yes');
newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123defg.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_123defg\",'width=1000,height=375,toolbar=false,scrollbars=yes');
}
</script>
@ -52,7 +52,7 @@ my ($input) = @_;
my $dbh = C4::Context->dbh;
my ($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "cataloguing/value_builder/unimarc_field_123g.tt",
= get_template_and_user({template_name => "cataloguing/value_builder/unimarc_field_123defg.tt",
query => $input,
type => "intranet",
flagsrequired => {editcatalogue => '*'},

View File

@ -1,70 +0,0 @@
#!/usr/bin/perl
# 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 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.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use C4::Auth qw( get_template_and_user );
use CGI qw ( -utf8 );
use C4::Context;
use C4::Search;
use C4::Output qw( output_html_with_http_headers );
sub plugin_javascript {
my ($dbh,$record,$tagslib,$field_number) = @_;
my $function_name= $field_number;
my $res="
<script>
function Clic$function_name(event) {
event.preventDefault();
defaultvalue=document.getElementById(event.data.id).value;
newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123g.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_123g\",'width=1000,height=375,toolbar=false,scrollbars=yes');
}
</script>
";
return ($function_name,$res);
}
sub plugin {
my ($input) = @_;
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/unimarc_field_123g.tt",
query => $input,
type => "intranet",
flagsrequired => {editcatalogue => '*'},
});
my $f1 = substr($result,0,1);
my $f2 = substr($result,1,3);
my $f3 = substr($result,4,2);
my $f4 = substr($result,6,2);
$template->param(index => $index,
"f1$f1" => 1,
f2 => $f2,
f3 => $f3,
f4 => $f4);
output_html_with_http_headers $input, $cookie, $template->output;
}

View File

@ -1,71 +0,0 @@
#!/usr/bin/perl
# 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 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.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use C4::Auth qw( get_template_and_user );
use CGI qw ( -utf8 );
use C4::Context;
use C4::Search;
use C4::Output qw( output_html_with_http_headers );
sub plugin_javascript {
my ($dbh,$record,$tagslib,$field_number) = @_;
my $function_name= $field_number;
my $res="
<script>
function Clic$function_name(event) {
event.preventDefault();
defaultvalue=document.getElementById(event.data.id).value;
newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123g.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_123g\",'width=1000,height=375,toolbar=false,scrollbars=yes');
}
</script>
";
return ($function_name,$res);
}
sub plugin {
my ($input) = @_;
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/unimarc_field_123g.tt",
query => $input,
type => "intranet",
flagsrequired => {editcatalogue => '*'},
});
my $f1 = substr($result,0,1);
my $f2 = substr($result,1,3);
my $f3 = substr($result,4,2);
my $f4 = substr($result,6,2);
$template->param(index => $index,
"f1$f1" => 1,
f2 => $f2,
f3 => $f3,
f4 => $f4);
output_html_with_http_headers $input, $cookie, $template->output;
}

View File

@ -1,70 +0,0 @@
#!/usr/bin/perl
# 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 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.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use C4::Auth qw( get_template_and_user );
use CGI qw ( -utf8 );
use C4::Context;
use C4::Search;
use C4::Output qw( output_html_with_http_headers );
sub plugin_javascript {
my ($dbh,$record,$tagslib,$field_number) = @_;
my $function_name= $field_number;
my $res="
<script>
function Clic$function_name(event) {
event.preventDefault();
defaultvalue=document.getElementById(event.data.id).value;
newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123g.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_123g\",'width=1000,height=375,toolbar=false,scrollbars=yes');
}
</script>
";
return ($function_name,$res);
}
sub plugin {
my ($input) = @_;
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/unimarc_field_123g.tt",
query => $input,
type => "intranet",
flagsrequired => {editcatalogue => '*'},
});
my $f1 = substr($result,0,1);
my $f2 = substr($result,1,3);
my $f3 = substr($result,4,2);
my $f4 = substr($result,6,2);
$template->param(index => $index,
"f1$f1" => 1,
f2 => $f2,
f3 => $f3,
f4 => $f4);
output_html_with_http_headers $input, $cookie, $template->output;
}

View File

@ -0,0 +1,18 @@
use Modern::Perl;
return {
bug_number => "34657",
description => "Update MARC frameworks to use renamed UNIMARC plugin",
up => sub {
my ($args) = @_;
my ( $dbh, $out ) = @$args{qw(dbh out)};
# Do you stuffs here
$dbh->do(q{
UPDATE `marc_subfield_structure` SET `value_builder` = 'unimarc_field_123defg.pl' WHERE (`value_builder` = 'unimarc_field_123d.pl' OR `value_builder` = 'unimarc_field_123e.pl' OR `value_builder` = 'unimarc_field_123f.pl' OR `value_builder` = 'unimarc_field_123g.pl' );
});
say $out "Update complete: MARC subfields which were configured to use unimarc_field123d.pl, unimarc_field123e.pl, unimarc_field123f.pl, or unimarc_field123g.pl will now use unimarc_field123defg.pl";
},
};

View File

@ -1,78 +0,0 @@
[% USE raw %]
[% PROCESS 'i18n.inc' %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>[% FILTER collapse %]
[% t("UNIMARC field 123d builder") | html %] &rsaquo;
[% t("Cataloguing") | html %] &rsaquo;
[% t("Koha") | html %]
[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body id="cat_unimarc_field_123d" class="cat" style="padding:1em;">
<h1>UNIMARC field 123d builder</h1>
<div class="page-section">
<form name="f_pop" action="">
<table>
<tr>
<td><label for="f1">Hemisphere:</label></td>
<td>
<select name="f1" id="f1">
[% IF ( f1w ) %]
<option value="w" selected="selected">west</option>
[% ELSE %]
<option value="w">west</option>
[% END %]
[% IF ( f1e ) %]
<option value="e" selected="selected">east</option>
[% ELSE %]
<option value="e">east</option>
[% END %]
[% IF ( f1n ) %]
<option value="n" selected="selected">north</option>
[% ELSE %]
<option value="n">north</option>
[% END %]
[% IF ( f1s ) %]
<option value="s" selected="selected">south</option>
[% ELSE %]
<option value="s">south</option>
[% END %]
</select>
</td></tr>
<tr><td><label for="f2">Degree (complete with 0):</label></td>
<td><input type="text" name="f2" id="f2" maxlength="3" size="4" value="[% f2 | html %]" /></td>
</tr>
<tr><td><label for="f3">Minute (complete with 0):</label></td>
<td><input type="text" name="f3" id="f3" maxlength="2" size="3" value="[% f3 | html %]" /></td>
</tr>
<tr><td><label for="f4">Second (complete with 0):</label></td>
<td><input type="text" name="f4" id="f4" maxlength="2" size="3" value="[% f4 | html %]" /></td>
</tr>
</table>
<fieldset class="action"><input type="button" class="btn btn-primary" value="OK" onclick="report();" /> <a href="#" class="cancel close">Cancel</a></fieldset>
</form>
</div> <!-- /.page-section -->
[% MACRO jsinclude BLOCK %]
<script>
function report() {
document.f_pop.f2.value=document.f_pop.f2.value+' ';
document.f_pop.f3.value=document.f_pop.f3.value+' ';
document.f_pop.f4.value=document.f_pop.f4.value+' ';
document.f_pop.f2.value=document.f_pop.f2.value.substring(0,3);
document.f_pop.f3.value=document.f_pop.f3.value.substring(0,2);
document.f_pop.f4.value=document.f_pop.f4.value.substring(0,2);
var doc = opener.document;
var field = doc.getElementById("[% index | html %]");
field.value = document.f_pop.f1.value+document.f_pop.f2.value+document.f_pop.f3.value+document.f_pop.f4.value;
window.close();
return false;
}
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' popup_window=1 %]

View File

@ -3,14 +3,14 @@
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>[% FILTER collapse %]
[% t("UNIMARC field 123e builder") | html %] &rsaquo;
[% t("UNIMARC field 123d/e/f/g builder") | html %] &rsaquo;
[% t("Cataloguing") | html %] &rsaquo;
[% t("Koha") | html %]
[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body id="cat_unimarc_field_123e" class="cat" style="padding:1em;">
<h1>UNIMARC field 123e builder</h1>
<body id="cat_unimarc_field_123d/e/f/g" class="cat" style="padding:1em;">
<h1>UNIMARC field 123d/e/f/g builder</h1>
<div class="page-section">
<form name="f_pop" action="">
<table>

View File

@ -1,79 +0,0 @@
[% USE raw %]
[% PROCESS 'i18n.inc' %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>[% FILTER collapse %]
[% t("UNIMARC field 123f builder") | html %] &rsaquo;
[% t("Cataloguing") | html %] &rsaquo;
[% t("Koha") | html %]
[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body id="cat_unimarc_field_123f" class="cat" style="padding:1em;">
<h1>UNIMARC field 123f builder</h1>
<div class="page-section">
<form name="f_pop" action="">
<table>
<tr>
<td><label for="f1">Hemisphere:</label></td>
<td>
<select name="f1" id="f1">
[% IF ( f1w ) %]
<option value="w" selected="selected">west</option>
[% ELSE %]
<option value="w">west</option>
[% END %]
[% IF ( f1e ) %]
<option value="e" selected="selected">east</option>
[% ELSE %]
<option value="e">east</option>
[% END %]
[% IF ( f1n ) %]
<option value="n" selected="selected">north</option>
[% ELSE %]
<option value="n">north</option>
[% END %]
[% IF ( f1s ) %]
<option value="s" selected="selected">south</option>
[% ELSE %]
<option value="s">south</option>
[% END %]
</select>
</td></tr>
<tr><td><label for="f2">Degree (complete with 0):</label></td>
<td><input type="text" name="f2" id="f2" maxlength="3" size="4" value="[% f2 | html %]" /></td>
</tr>
<tr><td><label for="f3">Minute (complete with 0):</label></td>
<td><input type="text" name="f3" id="f3" maxlength="2" size="3" value="[% f3 | html %]" /></td>
</tr>
<tr><td><label for="f4">Second (complete with 0):</label></td>
<td><input type="text" name="f4" id="f4" maxlength="2" size="3" value="[% f4 | html %]" /></td>
</tr>
</table>
<fieldset class="action"><input type="button" class="btn btn-primary" class="btn btn-primary" value="OK" onclick="report();" /> <a href="#" class="cancel close">Cancel</a></fieldset>
</form>
</div> <!-- /.page-section -->
[% MACRO jsinclude BLOCK %]
<script>
function report() {
document.f_pop.f2.value=document.f_pop.f2.value+' ';
document.f_pop.f3.value=document.f_pop.f3.value+' ';
document.f_pop.f4.value=document.f_pop.f4.value+' ';
document.f_pop.f2.value=document.f_pop.f2.value.substring(0,3);
document.f_pop.f3.value=document.f_pop.f3.value.substring(0,2);
document.f_pop.f4.value=document.f_pop.f4.value.substring(0,2);
var doc = opener.document;
var field = doc.getElementById("[% index | html %]");
field.value = document.f_pop.f1.value+document.f_pop.f2.value+document.f_pop.f3.value+document.f_pop.f4.value;
window.close();
return false;
}
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' popup_window=1 %]

View File

@ -1,79 +0,0 @@
[% USE raw %]
[% PROCESS 'i18n.inc' %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>[% FILTER collapse %]
[% t("UNIMARC field 123g builder") | html %] &rsaquo;
[% t("Cataloguing") | html %] &rsaquo;
[% t("Koha") | html %]
[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body id="cat_unimarc_field_123g" class="cat" style="padding:1em;">
<h1>UNIMARC field 123g builder</h1>
<div class="page-section">
<form name="f_pop" action="">
<table>
<tr>
<td><label for="f1">Hemisphere:</label></td>
<td>
<select name="f1" id="f1">
[% IF ( f1w ) %]
<option value="w" selected="selected">west</option>
[% ELSE %]
<option value="w">west</option>
[% END %]
[% IF ( f1e ) %]
<option value="e" selected="selected">east</option>
[% ELSE %]
<option value="e">east</option>
[% END %]
[% IF ( f1n ) %]
<option value="n" selected="selected">north</option>
[% ELSE %]
<option value="n">north</option>
[% END %]
[% IF ( f1s ) %]
<option value="s" selected="selected">south</option>
[% ELSE %]
<option value="s">south</option>
[% END %]
</select>
</td></tr>
<tr><td><label for="f2">Degree (complete with 0):</label></td>
<td><input type="text" name="f2" id="f2" maxlength="3" size="4" value="[% f2 | html %]" /></td>
</tr>
<tr><td><label for="f3">Minute (complete with 0):</label></td>
<td><input type="text" name="f3" id="f3" maxlength="2" size="3" value="[% f3 | html %]" /></td>
</tr>
<tr><td><label for="f4">Second (complete with 0):</label></td>
<td><input type="text" name="f4" id="f4" maxlength="2" size="3" value="[% f4 | html %]" /></td>
</tr>
</table>
<fieldset class="action"><input type="button" class="btn btn-primary" value="OK" onclick="report();" /> <a href="#" class="cancel close">Cancel</a></fieldset>
</form>
</div> <!-- /.page-section -->
[% MACRO jsinclude BLOCK %]
<script>
function report() {
document.f_pop.f2.value=document.f_pop.f2.value+' ';
document.f_pop.f3.value=document.f_pop.f3.value+' ';
document.f_pop.f4.value=document.f_pop.f4.value+' ';
document.f_pop.f2.value=document.f_pop.f2.value.substring(0,3);
document.f_pop.f3.value=document.f_pop.f3.value.substring(0,2);
document.f_pop.f4.value=document.f_pop.f4.value.substring(0,2);
var doc = opener.document;
var field = doc.getElementById("[% index | html %]");
field.value = document.f_pop.f1.value+document.f_pop.f2.value+document.f_pop.f3.value+document.f_pop.f4.value;
window.close();
return false;
}
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' popup_window=1 %]