Koha/cataloguing/value_builder/unimarc_leader_authorities.pl
George Veranis 208f715855 Bug 24698: Add plugin and template files for unimarc authority leader
In Unimarc installations when adding/editing an authority record there is no
Tag Editor for the leader field ( 000 ).

This patch fixes that.

Test plan:

1) Try to catalogue a new authoritry and check if on field 000 you can find
the Tag Editor.
2) Apply the patch.
3) In the authorities framework view the subfields of field 000 and select for
plugin option the value unimarc_leader_authorities.pl.
4) Restart memcached / plack if needed.
5) Repeat step 1 and notice if the Tag Editor is visible and click it to open
new window in order to manage the field contents and press OK.
6) Check the value of the generated leader.

Signed-off-by: Esther <estherm@sodapsringsid.com>

Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-10-12 11:15:32 +02:00

86 lines
2.8 KiB
Perl

#!/usr/bin/perl
# This file is part of Koha.
#
# Copyright (C) 2013 Vitor Fernandes , adapted for UNIMARC by George Veranis
#
# 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 Koha::Util::FrameworkPlugin qw(wrapper);
use C4::Auth;
use CGI qw ( -utf8 );
use C4::Context;
use C4::Output;
sub plugin_javascript {
my ( $dbh, $record, $tagslib, $field_number, $tabloop ) = @_;
my $res = "
<script type='text/javascript'>
function Clic$field_number(i) {
var defaultvalue;
try {
defaultvalue = document.getElementById(i).value;
} catch(e) {
alert('error when getting '+i);
return;
}
window.open(\"/cgi-bin/koha/cataloguing/plugin_launcher.pl?plugin_name=unimarc_leader_authorities.pl&index=\"+i+\"&result=\"+defaultvalue,\"unimarc_field_000\",'width=1000,height=600,toolbar=false,scrollbars=yes');
}
</script>
";
return ( $field_number, $res );
}
sub plugin {
my ($input) = @_;
my $index = $input->param('index');
my $result = $input->param('result');
my $dbh = C4::Context->dbh;
#my $defaultlanguage = C4::Context->preference("UNIMARCField100Language");
# $defaultlanguage = "fre" if (!$defaultlanguage || length($defaultlanguage) != 3);
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "cataloguing/value_builder/unimarc_leader_authorities.tt",
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => { editcatalogue => '*' },
debug => 1,
}
);
$result = " nz a22 3 4500" unless $result;
my $f5 = substr( $result, 5, 1 ); $f5 = wrapper( $f5 ) if $f5;
my $f6 = substr( $result, 6, 1 ); $f6 = wrapper( $f6 ) if $f6;
my $f9 = substr( $result, 9, 1 ); $f9 = wrapper( $f9 ) if $f9;
my $f17 = substr( $result, 17, 1 ); $f17 = wrapper( $f17 ) if $f17;
$template->param(
index => $index,
"f5$f5" => 1,
"f6$f6" => 1,
"f9$f9" => 1,
"f17$f17" => 1,
);
output_html_with_http_headers $input, $cookie, $template->output;
}