Marcel de Rooy
39a598c987
The builder contains js functions with a parameter like subfield_managed or i or something similar. This parameter contains the html id of the field corresponding with the plugin. With the functionality of Koha::FrameworkPlugin in place, we can eliminate one js function call and get the same id via the event passed in. Note that this actually makes the function a 'real' event handler. Also note that in many cases this parameter was not used but the id was borrowed from a perl variable like $params->{id}. If the field is not cloned, this is not a problem. But some fields can be cloned and should not use the static perl value but should get it from the event. Test plan: Look for js errors when loading the marc editor. Since the Focus or Click event code has been touched for most marc21 plugins, move your cursor into the field or click on the tag editor button. Verify that the focus event updates the correct field or the click event correctly launches the plugin AND the value comes back into the right field. Bonus: Attach a plugin with popup (like leader) to 040$d. Clone this field. Verify that the two launch buttons operate on the correct value. (This resolves a current bug.) Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Checked all 15 plugins. Plugin marc21_linking_section seems to work, but I could not get it to pass back something useful into my field. (Same without this patch.) Tested the clone button with leader on 040d. Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com> All seems to work, no errors Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
151 lines
No EOL
4.6 KiB
Perl
Executable file
151 lines
No EOL
4.6 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# 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 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;
|
|
use CGI qw ( -utf8 );
|
|
use C4::Context;
|
|
|
|
use C4::Search;
|
|
use C4::Output;
|
|
|
|
my $builder = sub {
|
|
my ( $params ) = @_;
|
|
my $function_name = $params->{id};
|
|
my $res = "
|
|
<script type=\"text/javascript\">
|
|
//<![CDATA[
|
|
|
|
function Click$function_name(event) {
|
|
defaultvalue=document.getElementById(event.data.id).value;
|
|
newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=marc21_field_007.pl&index=\"+ event.data.id +\"&result=\"+defaultvalue,\"tag_editor\",'width=1000,height=600,toolbar=false,scrollbars=yes');
|
|
|
|
}
|
|
//]]>
|
|
</script>
|
|
";
|
|
|
|
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 $f0 = substr( $result, 0, 1 );
|
|
my $f1 = substr( $result, 1, 1 );
|
|
|
|
#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 );
|
|
|
|
#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;
|
|
};
|
|
|
|
return { builder => $builder, launcher => $launcher }; |