Bugzilla – Attachment 138318 Details for
Bug 30975
Use event delegation for framework plugins to avoid using private jQuery method _data
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 30975: Fix framework plugins not working on cloned fields/subfields
Bug-30975-Fix-framework-plugins-not-working-on-clo.patch (text/plain), 92.40 KB, created by
Julian Maurice
on 2022-07-29 13:50:13 UTC
(
hide
)
Description:
Bug 30975: Fix framework plugins not working on cloned fields/subfields
Filename:
MIME Type:
Creator:
Julian Maurice
Created:
2022-07-29 13:50:13 UTC
Size:
92.40 KB
patch
obsolete
>From c08ebcaa47c07b9e6fc8bfe30519cb4d8653c1c9 Mon Sep 17 00:00:00 2001 >From: Julian Maurice <julian.maurice@biblibre.com> >Date: Thu, 16 Jun 2022 10:34:30 +0200 >Subject: [PATCH] Bug 30975: Fix framework plugins not working on cloned > fields/subfields > >Since bug 29155 (Upgrade jquery version to 3.6.0) framework plugins do >not work on a cloned field/subfield. >That is because we rely on jQuery's `.data('events')` to clone event >handlers to the cloned elements, and that was removed in jQuery 1.8.0 >(I did not confirm but it's possible it continued to work after that >thanks to jQuery Migrate) > >It is apparently still possible to access these event handlers by using >`jQuery._data(element, "events")` but here's what jQuery 1.8.0 release >notes says about it: >"this is not a supported public interface; the actual data structures >may change incompatibly from version to version." >So we should not rely on it. > >Instead, what this patch does is use event delegation [1]. >Events are bound to a parent container, so when elements are added >dynamically inside that container, we don't need to re-attach event >handlers manually > >This patch also comes with a bit of cleanup, and introduce "breaking >changes" (they are breaking changes only if you happen to have custom >framework plugins): >1) Only 'click', 'focus' and 'blur' events are listened to now. They are > the only ones we use, and the only ones we actually need. > Events removed: change, mouseover, mouseout, mousedown, mouseup, > mousemove, keydown, keypress, keyup. > If you ever need one of those, you can still add event listeners in > the 'focus' event handler, and remove them in the 'blur' event > handler >2) Event handlers now takes a single parameter that is an Event object > It just makes the code a lot less complicated. All framework plugins > have been updated >3) Event handlers do not pollute the global scope anymore > >[1] https://learn.jquery.com/events/event-delegation/ > >Test plan: >- Go to every page that has a MARC editor and verify that plugins still > work. This includes addbiblio.pl, additem.pl, authorities.pl, > neworderempty.pl, orderreceive.pl >- Test plugins that use 'focus' event (for instance barcode.pl), 'blur' > event (callnumber.pl) and 'click' event (almost all the others) >- Test that plugins work on cloned fields/subfields >--- > C4/Items.pm | 2 +- > Koha/FrameworkPlugin.pm | 84 ++-------------- > Koha/UI/Form/Builder/Item.pm | 1 + > authorities/authorities.pl | 1 + > cataloguing/value_builder/EXAMPLE.pl | 26 +---- > cataloguing/value_builder/barcode.pl | 12 ++- > cataloguing/value_builder/barcode_manual.pl | 3 +- > cataloguing/value_builder/callnumber-KU.pl | 4 +- > cataloguing/value_builder/callnumber.pl | 4 +- > cataloguing/value_builder/cn_browser.pl | 4 +- > cataloguing/value_builder/dateaccessioned.pl | 1 - > cataloguing/value_builder/marc21_field_005.pl | 1 - > cataloguing/value_builder/stocknumber.pl | 9 +- > cataloguing/value_builder/stocknumberAV.pl | 6 +- > cataloguing/value_builder/stocknumberam123.pl | 4 +- > .../value_builder/unimarc_field_010.pl | 4 +- > .../value_builder/unimarc_field_100.pl | 3 +- > .../unimarc_field_100_authorities.pl | 3 +- > .../value_builder/unimarc_field_105.pl | 6 +- > .../value_builder/unimarc_field_106.pl | 6 +- > .../value_builder/unimarc_field_110.pl | 6 +- > .../value_builder/unimarc_field_115a.pl | 5 +- > .../value_builder/unimarc_field_115b.pl | 6 +- > .../value_builder/unimarc_field_116.pl | 6 +- > .../value_builder/unimarc_field_117.pl | 6 +- > .../value_builder/unimarc_field_120.pl | 6 +- > .../value_builder/unimarc_field_121a.pl | 6 +- > .../value_builder/unimarc_field_121b.pl | 6 +- > .../value_builder/unimarc_field_122.pl | 6 +- > .../value_builder/unimarc_field_123a.pl | 6 +- > .../value_builder/unimarc_field_123d.pl | 6 +- > .../value_builder/unimarc_field_123e.pl | 6 +- > .../value_builder/unimarc_field_123f.pl | 6 +- > .../value_builder/unimarc_field_123g.pl | 6 +- > .../value_builder/unimarc_field_123i.pl | 6 +- > .../value_builder/unimarc_field_123j.pl | 6 +- > .../value_builder/unimarc_field_124.pl | 6 +- > .../value_builder/unimarc_field_124a.pl | 6 +- > .../value_builder/unimarc_field_124b.pl | 6 +- > .../value_builder/unimarc_field_124c.pl | 6 +- > .../value_builder/unimarc_field_124d.pl | 6 +- > .../value_builder/unimarc_field_124e.pl | 6 +- > .../value_builder/unimarc_field_124f.pl | 6 +- > .../value_builder/unimarc_field_124g.pl | 6 +- > .../value_builder/unimarc_field_125.pl | 6 +- > .../value_builder/unimarc_field_125a.pl | 6 +- > .../value_builder/unimarc_field_125b.pl | 6 +- > .../value_builder/unimarc_field_126.pl | 6 +- > .../value_builder/unimarc_field_126a.pl | 6 +- > .../value_builder/unimarc_field_126b.pl | 6 +- > .../value_builder/unimarc_field_127.pl | 6 +- > .../value_builder/unimarc_field_128a.pl | 6 +- > .../value_builder/unimarc_field_128b.pl | 7 +- > .../value_builder/unimarc_field_128c.pl | 6 +- > .../value_builder/unimarc_field_130.pl | 6 +- > .../value_builder/unimarc_field_135a.pl | 6 +- > .../value_builder/unimarc_field_140.pl | 6 +- > .../value_builder/unimarc_field_141.pl | 6 +- > .../value_builder/unimarc_field_146a.pl | 1 - > .../value_builder/unimarc_field_146h.pl | 1 - > .../value_builder/unimarc_field_146i.pl | 1 - > .../value_builder/unimarc_field_210c.pl | 6 +- > .../value_builder/unimarc_field_210c_bis.pl | 4 +- > .../value_builder/unimarc_field_225a.pl | 6 +- > .../value_builder/unimarc_field_225a_bis.pl | 4 +- > .../value_builder/unimarc_field_4XX.pl | 6 +- > .../value_builder/unimarc_field_686a.pl | 6 +- > .../value_builder/unimarc_field_700-4.pl | 6 +- > cataloguing/value_builder/unimarc_leader.pl | 11 +-- > .../unimarc_leader_authorities.pl | 8 +- > cataloguing/value_builder/upload.pl | 1 - > .../prog/en/includes/html_helpers.inc | 6 +- > .../prog/en/modules/acqui/neworderempty.tt | 2 +- > .../prog/en/modules/acqui/orderreceive.tt | 2 +- > .../en/modules/authorities/authorities.tt | 4 +- > .../prog/en/modules/cataloguing/addbiblio.tt | 8 +- > .../prog/en/modules/cataloguing/additem.tt | 2 +- > koha-tmpl/intranet-tmpl/prog/js/additem.js | 14 --- > koha-tmpl/intranet-tmpl/prog/js/cataloging.js | 97 ++++++++----------- > 79 files changed, 249 insertions(+), 359 deletions(-) > >diff --git a/C4/Items.pm b/C4/Items.pm >index 80c224b4cd..977af0cb09 100644 >--- a/C4/Items.pm >+++ b/C4/Items.pm >@@ -1753,7 +1753,7 @@ sub PrepareItemrecordDisplay { > my $tab= $plugin->noclick? '-1': ''; > my $class= $plugin->noclick? ' disabled': ''; > my $title= $plugin->noclick? 'No popup': 'Tag editor'; >- $subfield_data{marc_value} = qq[<input type="text" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="50" maxlength="$maxlength" value="$defaultvalue" /><a href="#" id="buttonDot_$subfield_data{id}" class="buttonDot $class" title="$title">...</a>\n].$plugin->javascript; >+ $subfield_data{marc_value} = qq[<input type="text" id="$subfield_data{id}" name="field_value" class="input_marceditor framework_plugin" size="50" maxlength="$maxlength" value="$defaultvalue" data-plugin="$plugin->{name}" /><a href="#" id="buttonDot_$subfield_data{id}" class="buttonDot $class" title="$title" data-plugin="$plugin->{name}">...</a>\n].$plugin->javascript; > } else { > warn $plugin->errstr; > $subfield_data{marc_value} = qq(<input type="text" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="50" maxlength="$maxlength" value="$defaultvalue" />); # supply default input form >diff --git a/Koha/FrameworkPlugin.pm b/Koha/FrameworkPlugin.pm >index 2331bfa6b3..7a4d5b859a 100644 >--- a/Koha/FrameworkPlugin.pm >+++ b/Koha/FrameworkPlugin.pm >@@ -297,94 +297,24 @@ sub _process_javascript { > $script =~ s/\<script[^>]*\>\s*(\/\/\<!\[CDATA\[)?\s*//s; > $script =~ s/(\/\/\]\]\>\s*)?\<\/script\>//s; > >- my $id = $params->{id}//''; >- my $bind = ''; > my $clickfound = 0; >- my @events = qw|click focus blur change mouseover mouseout mousedown >- mouseup mousemove keydown keypress keyup|; >+ my @events = qw|click focus blur|; > foreach my $ev ( @events ) { > my $scan = $ev eq 'click' && $self->{oldschool}? 'clic': $ev; >- if( $script =~ /function\s+($scan\w+)\s*\(([^\)]*)\)/is ) { >- my ( $bl, $sl ) = $self->_add_binding( $1, $2, $ev, $id ); >- $script .= $sl; >- $bind .= $bl; >+ if( $script =~ /function\s+($scan\w+)\s*\(/is ) { >+ my $function_name = $1; >+ $script .= sprintf('registerFrameworkPluginHandler("%s", "%s", %s);', $self->name, $ev, $function_name); > $clickfound = 1 if $ev eq 'click'; > } > } >- if( !$clickfound ) { # make buttonDot do nothing >- my ( $bl ) = $self->_add_binding( 'noclick', '', 'click', $id ); >- $bind .= $bl; >- } > $self->{noclick} = !$clickfound; >- $self->{javascript}= _merge_script( $id, $script, $bind ); >-} >- >-sub _add_binding { >-# adds some jQuery code for event binding: >-# $bind contains lines for the actual event binding: .click, .focus, etc. >-# $script contains function definitions (if needed) >- my ( $self, $fname, $pars, $ev, $id ) = @_; >- my ( $bind, $script ); >- my $ctl= $ev eq 'click'? 'buttonDot_'.$id: $id; >- #click event applies to buttonDot >- >- if( $pars =~ /^(e|ev|event)$/i ) { # new style event handler assumed >- $bind= qq| \$("#$ctl").$ev(\{id: '$id'\}, $fname);\n|; >- $script=''; >- } elsif( $fname eq 'noclick' ) { # no click: return false, no scroll >- $bind= qq| \$("#$ctl").$ev(function () { return false; });\n|; >- $script=''; >- } else { # add real event handler calling the function found >- $bind=qq| \$("#$ctl").$ev(\{id: '$id'\}, ${fname}_handler);\n|; >- $script = $self->_add_handler( $ev, $fname ); >- } >- return ( $bind, $script ); >-} >- >-sub _add_handler { >-# adds a handler with event parameter >-# event.data.id is passed to the plugin function in parameters >-# for the click event we always return false to prevent scrolling >- my ( $self, $ev, $fname ) = @_; >- my $first= $self->_first_item_par( $ev ); >- my $prefix= $ev eq 'click'? '': 'return '; >- my $suffix= $ev eq 'click'? "\n return false;": ''; >- return <<HERE; >-function ${fname}_handler(event) { >- $prefix$fname(${first}event.data.id);$suffix >-} >-HERE >-} >- >-sub _first_item_par { >- my ( $self, $event ) = @_; >- # needed for backward compatibility >- # js event functions in old style item plugins have an extra parameter >- # BUT.. not for all events (exceptions provide employment :) >- if( $self->{item_style} && $self->{oldschool} && >- $event=~/focus|blur|change/ ) { >- return qq/'0',/; >- } >- return ''; >-} >- >-sub _merge_script { >-# Combine script and event bindings, enclosed in script tags. >-# The BindEvents function is added to easily repeat event binding; >-# this is used in additem.js for dynamically created item blocks. >- my ( $id, $script, $bind ) = @_; >- chomp ($script, $bind); >- return <<HERE; >+ $self->{javascript} = <<JS; > <script> >+\$(document).ready(function () { > $script >-function BindEvents$id() { >-$bind >-} >-\$(document).ready(function() { >- BindEvents$id(); > }); > </script> >-HERE >+JS > } > > =head1 AUTHOR >diff --git a/Koha/UI/Form/Builder/Item.pm b/Koha/UI/Form/Builder/Item.pm >index 5ccf67b523..d44e97f05c 100644 >--- a/Koha/UI/Form/Builder/Item.pm >+++ b/Koha/UI/Form/Builder/Item.pm >@@ -329,6 +329,7 @@ sub generate_subfield_form { > class => $class, > nopopup => $plugin->noclick, > javascript => $plugin->javascript, >+ plugin => $plugin->name, > }; > } > else { >diff --git a/authorities/authorities.pl b/authorities/authorities.pl >index b465d4bcc0..565e3ae9ee 100755 >--- a/authorities/authorities.pl >+++ b/authorities/authorities.pl >@@ -191,6 +191,7 @@ sub create_input { > maxlength => $max_length, > javascript => $plugin->javascript, > noclick => $plugin->noclick, >+ plugin => $plugin->name, > }; > } else { # warn and supply default field > warn $plugin->errstr; >diff --git a/cataloguing/value_builder/EXAMPLE.pl b/cataloguing/value_builder/EXAMPLE.pl >index 691e69f8e2..31319494e1 100755 >--- a/cataloguing/value_builder/EXAMPLE.pl >+++ b/cataloguing/value_builder/EXAMPLE.pl >@@ -65,37 +65,19 @@ my $builder= sub { > <script> > function Focus$id(event) { > if( \$('#'+event.data.id).val()=='' ) { >- \$('#'+event.data.id).val('EXAMPLE:'); >+ \$('#'+event.data.id).val('Focus'); > } > } > >-function MouseOver$id(event) { >- return Focus$id(event); >- /* just redirecting it to Focus for the same effect */ >-} >- >-function KeyPress$id(event) { >- if( event.which == 64 ) { /* at character */ >- var f= \$('#'+event.data.id).val(); >- \$('#'+event.data.id).val( f + 'AT' ); >- return false; /* prevents getting the @ character back too */ >- } >-} >- >-function Change$id(event) { >- var colors= [ 'rgb(0, 0, 255)', 'rgb(0, 128, 0)', 'rgb(255, 0, 0)' ]; >- var curcol= \$('#'+event.data.id).css('color'); >- var i= Math.floor( Math.random() * 3 ); >- if( colors[i]==curcol ) { >- i= (i + 1)%3; >+function Blur$id(event) { >+ if( \$('#'+event.data.id).val()=='' ) { >+ \$('#'+event.data.id).val('Blur'); > } >- var f= \$('#'+event.data.id).css('color',colors[i]); > } > > function Click$id(event) { > var fieldvalue=\$('#'+event.data.id).val(); > window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=EXAMPLE.pl&index=\"+event.data.id+\"&result=\"+fieldvalue,\"tag_editor\",'width=700,height=700,toolbar=false,scrollbars=yes'); >- return false; /* prevents scrolling */ > } > </script>|; > }; >diff --git a/cataloguing/value_builder/barcode.pl b/cataloguing/value_builder/barcode.pl >index 8fcd45beae..f9b83a44e1 100755 >--- a/cataloguing/value_builder/barcode.pl >+++ b/cataloguing/value_builder/barcode.pl >@@ -86,14 +86,16 @@ END_OF_JS > > my $js = <<END_OF_JS; > <script> >- >-function Focus$function_name(id, force) { >+function set_barcode(id, force) { > $scr > } > >-function Click$function_name(id) { >- Focus$function_name(id, 1); >- return false; >+function Focus$function_name(event) { >+ set_barcode(event.data.id, false); >+} >+ >+function Click$function_name(event) { >+ set_barcode(event.data.id, true); > } > </script> > END_OF_JS >diff --git a/cataloguing/value_builder/barcode_manual.pl b/cataloguing/value_builder/barcode_manual.pl >index d2b7f7a414..5c38c2f926 100755 >--- a/cataloguing/value_builder/barcode_manual.pl >+++ b/cataloguing/value_builder/barcode_manual.pl >@@ -66,7 +66,8 @@ END_OF_JS > my $js = <<END_OF_JS; > <script> > >- function Click$function_name(id) { >+ function Click$function_name(event) { >+ const id = event.data.id; > $scr > return false; > } >diff --git a/cataloguing/value_builder/callnumber-KU.pl b/cataloguing/value_builder/callnumber-KU.pl >index 37b7e16d00..75323c49d9 100755 >--- a/cataloguing/value_builder/callnumber-KU.pl >+++ b/cataloguing/value_builder/callnumber-KU.pl >@@ -46,8 +46,8 @@ my $builder = sub { > my ( $params ) = @_; > my $res=" > <script> >- function Click$params->{id}() { >- var code = document.getElementById('$params->{id}'); >+ function Click$params->{id}(ev) { >+ var code = document.getElementById(ev.data.id); > var url = '../cataloguing/plugin_launcher.pl?plugin_name=callnumber-KU.pl&code=' + code.value; > var req = \$.get(url); > req.done(function(resp){ >diff --git a/cataloguing/value_builder/callnumber.pl b/cataloguing/value_builder/callnumber.pl >index 629f1c41c7..74dabaf182 100755 >--- a/cataloguing/value_builder/callnumber.pl >+++ b/cataloguing/value_builder/callnumber.pl >@@ -43,8 +43,8 @@ my $builder = sub { > my ( $params ) = @_; > my $res=" > <script> >- function Blur$params->{id}() { >- var code = document.getElementById('$params->{id}'); >+ function Blur$params->{id}(ev) { >+ var code = document.getElementById(ev.data.id); > var url = '../cataloguing/plugin_launcher.pl?plugin_name=callnumber.pl&code=' + code.value; > var req = \$.get(url); > req.done(function(resp){ >diff --git a/cataloguing/value_builder/cn_browser.pl b/cataloguing/value_builder/cn_browser.pl >index 832ca51bf2..53aa6e5b9a 100755 >--- a/cataloguing/value_builder/cn_browser.pl >+++ b/cataloguing/value_builder/cn_browser.pl >@@ -33,8 +33,8 @@ my $builder = sub { > my $res = " > <script> > >-function Click$function_name(i) { >- q = document.getElementById('$params->{id}'); >+function Click$function_name(ev) { >+ q = document.getElementById(ev.data.id); > window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=cn_browser.pl&popup&q=\"+encodeURIComponent(q.value),\"cnbrowser\",\"width=500,height=400,toolbar=false,scrollbars=yes\"); > } > >diff --git a/cataloguing/value_builder/dateaccessioned.pl b/cataloguing/value_builder/dateaccessioned.pl >index d1377a2bf6..9943ab8bbb 100755 >--- a/cataloguing/value_builder/dateaccessioned.pl >+++ b/cataloguing/value_builder/dateaccessioned.pl >@@ -48,7 +48,6 @@ function Focus$function_name(event) { > } > > function Click$function_name(event) { >- event.preventDefault(); > set_to_today(event.data.id, 1); > } > >diff --git a/cataloguing/value_builder/marc21_field_005.pl b/cataloguing/value_builder/marc21_field_005.pl >index 6b5263163a..545a1a4f91 100755 >--- a/cataloguing/value_builder/marc21_field_005.pl >+++ b/cataloguing/value_builder/marc21_field_005.pl >@@ -34,7 +34,6 @@ my $builder = sub { > > function Focus$function_name(event) { > document.getElementById(event.data.id).value='$date'; >- return 0; > } > > </script> >diff --git a/cataloguing/value_builder/stocknumber.pl b/cataloguing/value_builder/stocknumber.pl >index 03dc79de06..39083e1b38 100755 >--- a/cataloguing/value_builder/stocknumber.pl >+++ b/cataloguing/value_builder/stocknumber.pl >@@ -39,15 +39,18 @@ my $builder = sub { > my $js = <<END_OF_JS; > <script> > >-function Focus$function_name(id, force) { >+function set_stocknumber(id, force) { > if (\$('#' + id).val() == '' || force) { > \$('#' + id).val('$nextnum'); > } > } > >+function Focus$function_name(event) { >+ set_stocknumber(event.data.id, false); >+} >+ > function Click$function_name(event) { >- Focus$function_name(event.data.id, 1); >- return false; >+ set_stocknumber(event.data.id, true); > } > </script> > END_OF_JS >diff --git a/cataloguing/value_builder/stocknumberAV.pl b/cataloguing/value_builder/stocknumberAV.pl >index 793cf1066a..6a99f8f6bd 100755 >--- a/cataloguing/value_builder/stocknumberAV.pl >+++ b/cataloguing/value_builder/stocknumberAV.pl >@@ -47,8 +47,8 @@ my $builder = sub { > my ( $params ) = @_; > my $res = qq{ > <script> >- function Click$params->{id}() { >- var code = document.getElementById('$params->{id}'); >+ function Click$params->{id}(ev) { >+ var code = document.getElementById(ev.data.id); > \$.ajax({ > url: '/cgi-bin/koha/cataloguing/plugin_launcher.pl', > type: 'POST', >@@ -57,7 +57,7 @@ my $builder = sub { > 'code' : code.value, > }, > success: function(data){ >- var field = document.getElementById('$params->{id}'); >+ var field = document.getElementById(ev.data.id); > field.value = data; > return 1; > } >diff --git a/cataloguing/value_builder/stocknumberam123.pl b/cataloguing/value_builder/stocknumberam123.pl >index e1f54ad660..05565fec80 100755 >--- a/cataloguing/value_builder/stocknumberam123.pl >+++ b/cataloguing/value_builder/stocknumberam123.pl >@@ -44,8 +44,8 @@ my $builder = sub { > my ( $params ) = @_; > my $res=" > <script> >- function Blur$params->{id}() { >- var code = document.getElementById('$params->{id}'); >+ function Blur$params->{id}(ev) { >+ var code = document.getElementById(ev.data.id); > var url = '../cataloguing/plugin_launcher.pl?plugin_name=stocknumberam123.pl&code=' + code.value; > var req = \$.get(url); > req.done(function(resp){ >diff --git a/cataloguing/value_builder/unimarc_field_010.pl b/cataloguing/value_builder/unimarc_field_010.pl >index 00f5eb05b1..a2bb52f364 100755 >--- a/cataloguing/value_builder/unimarc_field_010.pl >+++ b/cataloguing/value_builder/unimarc_field_010.pl >@@ -29,8 +29,8 @@ sub plugin_javascript { > my ($dbh,$record,$tagslib,$field_number) = @_; > my $res=" > <script> >- function Blur$field_number() { >- var isbn = document.getElementById('$field_number'); >+ function Blur$field_number(ev) { >+ var isbn = document.getElementById(ev.data.id); > var url = '../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_010.pl&isbn=' + isbn.value; > var req = \$.get(url); > req.done(function(resp){ >diff --git a/cataloguing/value_builder/unimarc_field_100.pl b/cataloguing/value_builder/unimarc_field_100.pl >index df4c970291..4630ad3420 100755 >--- a/cataloguing/value_builder/unimarc_field_100.pl >+++ b/cataloguing/value_builder/unimarc_field_100.pl >@@ -33,7 +33,8 @@ sub plugin_javascript { > my ( $dbh, $record, $tagslib, $field_number ) = @_; > my $res = " > <script> >- function Clic$field_number(i) { >+ function Clic$field_number(event) { >+ const i = event.data.id; > var defaultvalue; > try { > defaultvalue = document.getElementById(i).value; >diff --git a/cataloguing/value_builder/unimarc_field_100_authorities.pl b/cataloguing/value_builder/unimarc_field_100_authorities.pl >index f15185c430..f93866e73a 100755 >--- a/cataloguing/value_builder/unimarc_field_100_authorities.pl >+++ b/cataloguing/value_builder/unimarc_field_100_authorities.pl >@@ -30,7 +30,8 @@ sub plugin_javascript { > my ( $dbh, $record, $tagslib, $field_number ) = @_; > my $res = " > <script> >- function Clic$field_number(i) { >+ function Clic$field_number(event) { >+ const i = event.data.id; > var defaultvalue; > try { > defaultvalue = document.getElementById(i).value; >diff --git a/cataloguing/value_builder/unimarc_field_105.pl b/cataloguing/value_builder/unimarc_field_105.pl >index f0ff7f2dd8..2b912b0c40 100755 >--- a/cataloguing/value_builder/unimarc_field_105.pl >+++ b/cataloguing/value_builder/unimarc_field_105.pl >@@ -33,9 +33,9 @@ sub plugin_javascript { > my ($dbh,$record,$tagslib,$field_number) = @_; > my $res=" > <script> >- function Clic$field_number() { >- defaultvalue=document.getElementById(\"$field_number\").value; >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_105.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_105\",'width=1200,height=400,toolbar=false,scrollbars=yes'); >+ function Clic$field_number(ev) { >+ defaultvalue=document.getElementById(ev.data.id).value; >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_105.pl&index=\" + ev.data.id + \"&result=\"+defaultvalue,\"unimarc_field_105\",'width=1200,height=400,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_106.pl b/cataloguing/value_builder/unimarc_field_106.pl >index 7b91dd4410..8be673369b 100755 >--- a/cataloguing/value_builder/unimarc_field_106.pl >+++ b/cataloguing/value_builder/unimarc_field_106.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= "106".(int(rand(100000))+1); > my $res=" > <script> >-function Clic$field_number() { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_106.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_106\",'width=500,height=400,toolbar=false,scrollbars=yes'); >+function Clic$field_number(ev) { >+ defaultvalue=document.getElementById(ev.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_106.pl&index=\" + ev.data.id + \"&result=\"+defaultvalue,\"unimarc_field_106\",'width=500,height=400,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_110.pl b/cataloguing/value_builder/unimarc_field_110.pl >index b3e88e2c20..a1b12d40f5 100755 >--- a/cataloguing/value_builder/unimarc_field_110.pl >+++ b/cataloguing/value_builder/unimarc_field_110.pl >@@ -33,9 +33,9 @@ sub plugin_javascript { > my ($dbh,$record,$tagslib,$field_number) = @_; > my $res=" > <script> >- function Clic$field_number() { >- defaultvalue=document.getElementById(\"$field_number\").value; >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_110.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_110\",'width=700,height=600,toolbar=false,scrollbars=yes'); >+ function Clic$field_number(ev) { >+ defaultvalue=document.getElementById(ev.data.id).value; >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_110.pl&index=\" + ev.data.id + \"&result=\"+defaultvalue,\"unimarc_field_110\",'width=700,height=600,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_115a.pl b/cataloguing/value_builder/unimarc_field_115a.pl >index fc0223a3e6..f94d9a2f48 100755 >--- a/cataloguing/value_builder/unimarc_field_115a.pl >+++ b/cataloguing/value_builder/unimarc_field_115a.pl >@@ -32,7 +32,8 @@ sub plugin_javascript { > my ( $dbh, $record, $tagslib, $field_number ) = @_; > my $res = " > <script> >- function Clic$field_number(i) { >+ function Clic$field_number(event) { >+ const i = event.data.id; > var defaultvalue; > try { > defaultvalue = document.getElementById(i).value; >@@ -40,7 +41,7 @@ sub plugin_javascript { > alert('error when getting '+i); > return; > } >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_115a.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_115a\",'width=1200,height=600,toolbar=false,scrollbars=yes'); >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_115a.pl&index=\" + i + \"&result=\"+defaultvalue,\"unimarc_field_115a\",'width=1200,height=600,toolbar=false,scrollbars=yes'); > } > > </script> >diff --git a/cataloguing/value_builder/unimarc_field_115b.pl b/cataloguing/value_builder/unimarc_field_115b.pl >index 901e73eb3e..ac5ecbb2c7 100755 >--- a/cataloguing/value_builder/unimarc_field_115b.pl >+++ b/cataloguing/value_builder/unimarc_field_115b.pl >@@ -32,9 +32,9 @@ sub plugin_javascript { > my ( $dbh, $record, $tagslib, $field_number ) = @_; > my $res = " > <script> >-function Clic$field_number() { >- defaultvalue=document.getElementById(\"$field_number\").value; >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_115b.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_115b\",'width=1200,height=600,toolbar=false,scrollbars=yes'); >+function Clic$field_number(ev) { >+ defaultvalue=document.getElementById(ev.data.id).value; >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_115b.pl&index=\" + ev.data.id + \"&result=\"+defaultvalue,\"unimarc_field_115b\",'width=1200,height=600,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_116.pl b/cataloguing/value_builder/unimarc_field_116.pl >index 8781a5da2f..1689927de5 100755 >--- a/cataloguing/value_builder/unimarc_field_116.pl >+++ b/cataloguing/value_builder/unimarc_field_116.pl >@@ -32,9 +32,9 @@ sub plugin_javascript { > my ( $dbh, $record, $tagslib, $field_number ) = @_; > my $res = " > <script> >-function Clic$field_number(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_116.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_116\",'width=1200,height=600,toolbar=false,scrollbars=yes'); >+function Clic$field_number(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_116.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_116\",'width=1200,height=600,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_117.pl b/cataloguing/value_builder/unimarc_field_117.pl >index 9286826145..78b4c1055a 100755 >--- a/cataloguing/value_builder/unimarc_field_117.pl >+++ b/cataloguing/value_builder/unimarc_field_117.pl >@@ -32,9 +32,9 @@ sub plugin_javascript { > my ($dbh,$record,$tagslib,$field_number) = @_; > my $res=" > <script> >-function Clic$field_number(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_117.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_117\",'width=600,height=225,toolbar=false,scrollbars=yes'); >+function Clic$field_number(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_117.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_117\",'width=600,height=225,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_120.pl b/cataloguing/value_builder/unimarc_field_120.pl >index 4c4d06139d..1342e8e4a1 100755 >--- a/cataloguing/value_builder/unimarc_field_120.pl >+++ b/cataloguing/value_builder/unimarc_field_120.pl >@@ -34,9 +34,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name=$field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_120.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_120\",'width=1200,height=750,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_120.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_120\",'width=1200,height=750,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_121a.pl b/cataloguing/value_builder/unimarc_field_121a.pl >index e1967e38ca..423f3cec02 100755 >--- a/cataloguing/value_builder/unimarc_field_121a.pl >+++ b/cataloguing/value_builder/unimarc_field_121a.pl >@@ -33,9 +33,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_121a.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_121a\",'width=1210,height=750,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_121a.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_121a\",'width=1210,height=750,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_121b.pl b/cataloguing/value_builder/unimarc_field_121b.pl >index bcdc22aac0..84974fca64 100755 >--- a/cataloguing/value_builder/unimarc_field_121b.pl >+++ b/cataloguing/value_builder/unimarc_field_121b.pl >@@ -31,9 +31,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_121b.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_121b\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_121b.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_121b\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_122.pl b/cataloguing/value_builder/unimarc_field_122.pl >index ecedc74cc2..9d9175d7e8 100755 >--- a/cataloguing/value_builder/unimarc_field_122.pl >+++ b/cataloguing/value_builder/unimarc_field_122.pl >@@ -31,9 +31,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_122.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_122\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_122.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_122\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_123a.pl b/cataloguing/value_builder/unimarc_field_123a.pl >index 3d3fa4f56f..01e60f98dd 100755 >--- a/cataloguing/value_builder/unimarc_field_123a.pl >+++ b/cataloguing/value_builder/unimarc_field_123a.pl >@@ -31,9 +31,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123a.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_123a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123a.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_123a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_123d.pl b/cataloguing/value_builder/unimarc_field_123d.pl >index 50865fb2eb..db5ff16b61 100755 >--- a/cataloguing/value_builder/unimarc_field_123d.pl >+++ b/cataloguing/value_builder/unimarc_field_123d.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123g.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_123g\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ 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> >diff --git a/cataloguing/value_builder/unimarc_field_123e.pl b/cataloguing/value_builder/unimarc_field_123e.pl >index 50865fb2eb..db5ff16b61 100755 >--- a/cataloguing/value_builder/unimarc_field_123e.pl >+++ b/cataloguing/value_builder/unimarc_field_123e.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123g.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_123g\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ 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> >diff --git a/cataloguing/value_builder/unimarc_field_123f.pl b/cataloguing/value_builder/unimarc_field_123f.pl >index 4fb190e52a..7c630d956c 100755 >--- a/cataloguing/value_builder/unimarc_field_123f.pl >+++ b/cataloguing/value_builder/unimarc_field_123f.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123g.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_123g\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ 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> >diff --git a/cataloguing/value_builder/unimarc_field_123g.pl b/cataloguing/value_builder/unimarc_field_123g.pl >index 50865fb2eb..db5ff16b61 100755 >--- a/cataloguing/value_builder/unimarc_field_123g.pl >+++ b/cataloguing/value_builder/unimarc_field_123g.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123g.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_123g\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ 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> >diff --git a/cataloguing/value_builder/unimarc_field_123i.pl b/cataloguing/value_builder/unimarc_field_123i.pl >index a62c23ab37..a05c78f2ab 100755 >--- a/cataloguing/value_builder/unimarc_field_123i.pl >+++ b/cataloguing/value_builder/unimarc_field_123i.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123i.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_123i\",'width=800,height=400,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123i.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_123i\",'width=800,height=400,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_123j.pl b/cataloguing/value_builder/unimarc_field_123j.pl >index aa2a3c31e0..40c86659fb 100755 >--- a/cataloguing/value_builder/unimarc_field_123j.pl >+++ b/cataloguing/value_builder/unimarc_field_123j.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >- function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123j.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_123j\",'width=800,height=400,toolbar=false,scrollbars=yes'); >+ function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_123j.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_123j\",'width=800,height=400,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_124.pl b/cataloguing/value_builder/unimarc_field_124.pl >index 82ab72d4f4..7fa6f4685f 100755 >--- a/cataloguing/value_builder/unimarc_field_124.pl >+++ b/cataloguing/value_builder/unimarc_field_124.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_100.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_100\",'width=500,height=400,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_100.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_100\",'width=500,height=400,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_124a.pl b/cataloguing/value_builder/unimarc_field_124a.pl >index ef2e7dccb7..e23f763b7b 100755 >--- a/cataloguing/value_builder/unimarc_field_124a.pl >+++ b/cataloguing/value_builder/unimarc_field_124a.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124a.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_124a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124a.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_124a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_124b.pl b/cataloguing/value_builder/unimarc_field_124b.pl >index 9008ea673c..0aa288d8e6 100755 >--- a/cataloguing/value_builder/unimarc_field_124b.pl >+++ b/cataloguing/value_builder/unimarc_field_124b.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124b.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_124b\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124b.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_124b\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_124c.pl b/cataloguing/value_builder/unimarc_field_124c.pl >index 3433ea9a93..15e5c7aa0c 100755 >--- a/cataloguing/value_builder/unimarc_field_124c.pl >+++ b/cataloguing/value_builder/unimarc_field_124c.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124c.pl&index=\"+i+\"&result=\"+defaultvalue,\"unimarc_field_124c\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124c.pl&index=\"+event.data.id+\"&result=\"+defaultvalue,\"unimarc_field_124c\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_124d.pl b/cataloguing/value_builder/unimarc_field_124d.pl >index e65d93eaa2..19620e891a 100755 >--- a/cataloguing/value_builder/unimarc_field_124d.pl >+++ b/cataloguing/value_builder/unimarc_field_124d.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124d.pl&index=\"+i+\"&result=\"+defaultvalue,\"unimarc_field_124d\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124d.pl&index=\"+event.data.id+\"&result=\"+defaultvalue,\"unimarc_field_124d\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_124e.pl b/cataloguing/value_builder/unimarc_field_124e.pl >index 11d1aabfa3..e646f8f5df 100755 >--- a/cataloguing/value_builder/unimarc_field_124e.pl >+++ b/cataloguing/value_builder/unimarc_field_124e.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124e.pl&index=\"+i+\"&result=\"+defaultvalue,\"unimarc_field_124e\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124e.pl&index=\"+event.data.id+\"&result=\"+defaultvalue,\"unimarc_field_124e\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_124f.pl b/cataloguing/value_builder/unimarc_field_124f.pl >index 96df17be7a..5a7f7a2aa5 100755 >--- a/cataloguing/value_builder/unimarc_field_124f.pl >+++ b/cataloguing/value_builder/unimarc_field_124f.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124f.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_124f\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124f.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_124f\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_124g.pl b/cataloguing/value_builder/unimarc_field_124g.pl >index 4dfe3a7d9f..d7c1879fbe 100755 >--- a/cataloguing/value_builder/unimarc_field_124g.pl >+++ b/cataloguing/value_builder/unimarc_field_124g.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124g.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_124g\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_124g.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_124g\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_125.pl b/cataloguing/value_builder/unimarc_field_125.pl >index fa31200861..e1a88a02a6 100755 >--- a/cataloguing/value_builder/unimarc_field_125.pl >+++ b/cataloguing/value_builder/unimarc_field_125.pl >@@ -38,9 +38,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_100.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_100\",'width=500,height=400,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_100.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_100\",'width=500,height=400,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_125a.pl b/cataloguing/value_builder/unimarc_field_125a.pl >index c4585d7e24..112962422a 100755 >--- a/cataloguing/value_builder/unimarc_field_125a.pl >+++ b/cataloguing/value_builder/unimarc_field_125a.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >- function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_125a.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_125a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+ function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_125a.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_125a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_125b.pl b/cataloguing/value_builder/unimarc_field_125b.pl >index 2429d3e48b..07fab547a7 100755 >--- a/cataloguing/value_builder/unimarc_field_125b.pl >+++ b/cataloguing/value_builder/unimarc_field_125b.pl >@@ -33,9 +33,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_125b.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_125b\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_125b.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_125b\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_126.pl b/cataloguing/value_builder/unimarc_field_126.pl >index 82ab72d4f4..7fa6f4685f 100755 >--- a/cataloguing/value_builder/unimarc_field_126.pl >+++ b/cataloguing/value_builder/unimarc_field_126.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_100.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_100\",'width=500,height=400,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_100.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_100\",'width=500,height=400,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_126a.pl b/cataloguing/value_builder/unimarc_field_126a.pl >index d1cfd84c4c..04abd1aa4d 100755 >--- a/cataloguing/value_builder/unimarc_field_126a.pl >+++ b/cataloguing/value_builder/unimarc_field_126a.pl >@@ -33,9 +33,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_126a.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_126a\",'width=1000,height=575,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_126a.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_126a\",'width=1000,height=575,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_126b.pl b/cataloguing/value_builder/unimarc_field_126b.pl >index 79778cfe44..a6b0b702b5 100755 >--- a/cataloguing/value_builder/unimarc_field_126b.pl >+++ b/cataloguing/value_builder/unimarc_field_126b.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_126b.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_126b\",'width=1000,height=575,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_126b.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_126b\",'width=1000,height=575,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_127.pl b/cataloguing/value_builder/unimarc_field_127.pl >index 85adba0dad..a5376989e4 100755 >--- a/cataloguing/value_builder/unimarc_field_127.pl >+++ b/cataloguing/value_builder/unimarc_field_127.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_127.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_127\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_127.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_127\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_128a.pl b/cataloguing/value_builder/unimarc_field_128a.pl >index 9f235e1e5d..161a21a61c 100755 >--- a/cataloguing/value_builder/unimarc_field_128a.pl >+++ b/cataloguing/value_builder/unimarc_field_128a.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_128a.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_128a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_128a.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_128a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_128b.pl b/cataloguing/value_builder/unimarc_field_128b.pl >index 7d2e215fb8..f989845f1f 100755 >--- a/cataloguing/value_builder/unimarc_field_128b.pl >+++ b/cataloguing/value_builder/unimarc_field_128b.pl >@@ -33,9 +33,10 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_128b.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_128b\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ const id = event.data.id; >+ defaultvalue=document.getElementById(id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_128b.pl&index=\" + id + \"&result=\"+defaultvalue,\"unimarc_field_128b\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_128c.pl b/cataloguing/value_builder/unimarc_field_128c.pl >index a0ff9ddd4e..14a3c60ab3 100755 >--- a/cataloguing/value_builder/unimarc_field_128c.pl >+++ b/cataloguing/value_builder/unimarc_field_128c.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_128c.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_128c\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_128c.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_128c\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_130.pl b/cataloguing/value_builder/unimarc_field_130.pl >index 411eb80a8e..1bcc61ed08 100755 >--- a/cataloguing/value_builder/unimarc_field_130.pl >+++ b/cataloguing/value_builder/unimarc_field_130.pl >@@ -34,9 +34,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_130.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_130\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_130.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_130\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_135a.pl b/cataloguing/value_builder/unimarc_field_135a.pl >index db5bf3c8b0..fd76e82551 100755 >--- a/cataloguing/value_builder/unimarc_field_135a.pl >+++ b/cataloguing/value_builder/unimarc_field_135a.pl >@@ -33,9 +33,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_135a.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_135a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_135a.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_135a\",'width=1000,height=375,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_140.pl b/cataloguing/value_builder/unimarc_field_140.pl >index a5b303158b..c0ade25a3e 100755 >--- a/cataloguing/value_builder/unimarc_field_140.pl >+++ b/cataloguing/value_builder/unimarc_field_140.pl >@@ -34,9 +34,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_140.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_140\",'width=1000,height=575,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_140.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_140\",'width=1000,height=575,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_141.pl b/cataloguing/value_builder/unimarc_field_141.pl >index a7a28ea306..4655847f77 100755 >--- a/cataloguing/value_builder/unimarc_field_141.pl >+++ b/cataloguing/value_builder/unimarc_field_141.pl >@@ -32,9 +32,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res=" > <script> >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_141.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_141\",'width=1000,height=575,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_141.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_141\",'width=1000,height=575,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_146a.pl b/cataloguing/value_builder/unimarc_field_146a.pl >index 51f0861325..6d7de2cf7f 100755 >--- a/cataloguing/value_builder/unimarc_field_146a.pl >+++ b/cataloguing/value_builder/unimarc_field_146a.pl >@@ -29,7 +29,6 @@ my $builder = sub { > return qq| > <script> > function Click$id(event) { >- event.preventDefault(); > const value = document.getElementById(event.data.id).value; > const url = new URL('/cgi-bin/koha/cataloguing/plugin_launcher.pl', location); > url.searchParams.set('plugin_name', 'unimarc_field_146a.pl'); >diff --git a/cataloguing/value_builder/unimarc_field_146h.pl b/cataloguing/value_builder/unimarc_field_146h.pl >index 84ad417b1a..cfa2000ca9 100755 >--- a/cataloguing/value_builder/unimarc_field_146h.pl >+++ b/cataloguing/value_builder/unimarc_field_146h.pl >@@ -29,7 +29,6 @@ my $builder = sub { > return qq| > <script> > function Click$id(event) { >- event.preventDefault(); > const value = document.getElementById(event.data.id).value; > const url = new URL('/cgi-bin/koha/cataloguing/plugin_launcher.pl', location); > url.searchParams.set('plugin_name', 'unimarc_field_146h.pl'); >diff --git a/cataloguing/value_builder/unimarc_field_146i.pl b/cataloguing/value_builder/unimarc_field_146i.pl >index 609218db4e..1833a36f48 100755 >--- a/cataloguing/value_builder/unimarc_field_146i.pl >+++ b/cataloguing/value_builder/unimarc_field_146i.pl >@@ -29,7 +29,6 @@ my $builder = sub { > return qq| > <script> > function Click$id(event) { >- event.preventDefault(); > const value = document.getElementById(event.data.id).value; > const url = new URL('/cgi-bin/koha/cataloguing/plugin_launcher.pl', location); > url.searchParams.set('plugin_name', 'unimarc_field_146i.pl'); >diff --git a/cataloguing/value_builder/unimarc_field_210c.pl b/cataloguing/value_builder/unimarc_field_210c.pl >index c9e1ebbcf8..443e435b5c 100755 >--- a/cataloguing/value_builder/unimarc_field_210c.pl >+++ b/cataloguing/value_builder/unimarc_field_210c.pl >@@ -43,9 +43,9 @@ my $function_name= $field_number; > > my $res = " > <script> >-function Clic$function_name(subfield_managed) { >- defaultvalue=escape(document.getElementById(\"$field_number\").value); >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_210c.pl&index=\"+subfield_managed,\"unimarc_225a\",'width=500,height=600,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=escape(document.getElementById(event.data.id).value); >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_210c.pl&index=\" + event.data.id, \"unimarc_225a\",'width=500,height=600,toolbar=false,scrollbars=yes'); > } > </script> > "; >diff --git a/cataloguing/value_builder/unimarc_field_210c_bis.pl b/cataloguing/value_builder/unimarc_field_210c_bis.pl >index b558d520d2..9982c86384 100755 >--- a/cataloguing/value_builder/unimarc_field_210c_bis.pl >+++ b/cataloguing/value_builder/unimarc_field_210c_bis.pl >@@ -54,8 +54,8 @@ sub plugin_javascript { > <script> > > >- function Clic$function_name(index) { >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_210c_bis.pl&index=\"+index,\"unimarc210c\",'width=500,height=400,toolbar=false,scrollbars=no'); >+ function Clic$function_name(event) { >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_210c_bis.pl&index=\"+event.data.id,\"unimarc210c\",'width=500,height=400,toolbar=false,scrollbars=no'); > } > </script> > "; >diff --git a/cataloguing/value_builder/unimarc_field_225a.pl b/cataloguing/value_builder/unimarc_field_225a.pl >index 31556ae506..1602ccb371 100755 >--- a/cataloguing/value_builder/unimarc_field_225a.pl >+++ b/cataloguing/value_builder/unimarc_field_225a.pl >@@ -62,7 +62,7 @@ sub plugin_javascript { > <script> > > >- function Clic$function_name(index) { >+ function Clic$function_name(event) { > /* find the 010a value and the 210c. it will be used in the popup to find possibles collections */ > var isbn_found = 0; > var editor_found = 0; >@@ -81,8 +81,8 @@ sub plugin_javascript { > } > } > >- defaultvalue = document.getElementById(\"$field_number\").value; >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_225a.pl&index=\"+index+\"&result=\"+defaultvalue+\"&editor_found=\"+editor_found,\"unimarc225a\",'width=500,height=400,toolbar=false,scrollbars=no'); >+ defaultvalue = document.getElementById(event.data.id).value; >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_225a.pl&index=\"+event.data.id+\"&result=\"+defaultvalue+\"&editor_found=\"+editor_found,\"unimarc225a\",'width=500,height=400,toolbar=false,scrollbars=no'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_225a_bis.pl b/cataloguing/value_builder/unimarc_field_225a_bis.pl >index 1ca62775a9..16fd59ea33 100755 >--- a/cataloguing/value_builder/unimarc_field_225a_bis.pl >+++ b/cataloguing/value_builder/unimarc_field_225a_bis.pl >@@ -35,8 +35,8 @@ sub plugin_javascript { > my $function_name = $field_number; > my $res = " > <script> >- function Clic$function_name(index) { >- window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_225a_bis.pl&index=\"+index,\"unimarc225a\",'width=500,height=400,toolbar=false,scrollbars=no'); >+ function Clic$function_name(event) { >+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_225a_bis.pl&index=\"+event.data.id,\"unimarc225a\",'width=500,height=400,toolbar=false,scrollbars=no'); > } > </script> > "; >diff --git a/cataloguing/value_builder/unimarc_field_4XX.pl b/cataloguing/value_builder/unimarc_field_4XX.pl >index 7b0ef28018..217a9f8e08 100755 >--- a/cataloguing/value_builder/unimarc_field_4XX.pl >+++ b/cataloguing/value_builder/unimarc_field_4XX.pl >@@ -46,9 +46,9 @@ sub plugin_javascript { > my $function_name = $field_number; > my $res = " > <script> >- function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- window.open(\"/cgi-bin/koha/cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_4XX.pl&index=\" + i + \"&result=\"+defaultvalue,\"unimarc_field_4\"+i+\"\",'width=900,height=700,toolbar=false,scrollbars=yes'); >+ function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ window.open(\"/cgi-bin/koha/cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_4XX.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_4\"+event.data.id+\"\",'width=900,height=700,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_686a.pl b/cataloguing/value_builder/unimarc_field_686a.pl >index d766b038c6..32f0e26357 100755 >--- a/cataloguing/value_builder/unimarc_field_686a.pl >+++ b/cataloguing/value_builder/unimarc_field_686a.pl >@@ -31,9 +31,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res = " > <script> >-function Clic$function_name(subfield_managed) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_686a.pl&result=\"+defaultvalue+\"&index=$field_number\",\"value_builder\",'width=700,height=600,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_686a.pl&result=\"+defaultvalue+\"&index=\" + event.data.id, \"value_builder\",'width=700,height=600,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_field_700-4.pl b/cataloguing/value_builder/unimarc_field_700-4.pl >index 0d083e9d39..0ebbea2533 100755 >--- a/cataloguing/value_builder/unimarc_field_700-4.pl >+++ b/cataloguing/value_builder/unimarc_field_700-4.pl >@@ -33,9 +33,9 @@ my ($dbh,$record,$tagslib,$field_number) = @_; > my $function_name= $field_number; > my $res = " > <script> >-function Clic$function_name(subfield_managed) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_700-4.pl&result=\"+defaultvalue+\"&index=$field_number\",\"value_builder\",'width=500,height=400,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_700-4.pl&result=\"+defaultvalue+\"&index=\" + event.data.id, \"value_builder\",'width=500,height=400,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_leader.pl b/cataloguing/value_builder/unimarc_leader.pl >index 838f5a88f0..a2e3385030 100755 >--- a/cataloguing/value_builder/unimarc_leader.pl >+++ b/cataloguing/value_builder/unimarc_leader.pl >@@ -33,17 +33,16 @@ sub plugin_javascript { > my $function_name = $field_number; > my $res = " > <script> >-function Blur$function_name(subfield_managed) { >- var leader_length = document.getElementById(\"$field_number\").value.length; >+function Blur$function_name(event) { >+ var leader_length = document.getElementById(event.data.id).value.length; > if (leader_length != 24 && leader_length !=0) { > alert(_('leader has an incorrect size: ' + leader_length + ' instead of 24 chars')); > } >- return 1; > } > >-function Clic$function_name(i) { >- defaultvalue=document.getElementById(\"$field_number\").value; >- newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_leader.pl&index=$field_number&result=\"+defaultvalue,\"unimarc_field_100\",'width=1000,height=600,toolbar=false,scrollbars=yes'); >+function Clic$function_name(event) { >+ defaultvalue=document.getElementById(event.data.id).value; >+ newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_leader.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_100\",'width=1000,height=600,toolbar=false,scrollbars=yes'); > > } > </script> >diff --git a/cataloguing/value_builder/unimarc_leader_authorities.pl b/cataloguing/value_builder/unimarc_leader_authorities.pl >index 365a44ddbb..f31632e3e2 100755 >--- a/cataloguing/value_builder/unimarc_leader_authorities.pl >+++ b/cataloguing/value_builder/unimarc_leader_authorities.pl >@@ -30,15 +30,15 @@ sub plugin_javascript { > my ( $dbh, $record, $tagslib, $field_number ) = @_; > my $res = " > <script type='text/javascript'> >- function Clic$field_number(i) { >+ function Clic$field_number(event) { > var defaultvalue; > try { >- defaultvalue = document.getElementById(i).value; >+ defaultvalue = document.getElementById(event.data.id).value; > } catch(e) { >- alert('error when getting '+i); >+ alert('error when getting '+event.data.id); > 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'); >+ window.open(\"/cgi-bin/koha/cataloguing/plugin_launcher.pl?plugin_name=unimarc_leader_authorities.pl&index=\" + event.data.id + \"&result=\"+defaultvalue,\"unimarc_field_000\",'width=1000,height=600,toolbar=false,scrollbars=yes'); > } > </script> > "; >diff --git a/cataloguing/value_builder/upload.pl b/cataloguing/value_builder/upload.pl >index 82b9816f62..ac45fb4123 100755 >--- a/cataloguing/value_builder/upload.pl >+++ b/cataloguing/value_builder/upload.pl >@@ -35,7 +35,6 @@ my $builder = sub { > return <<"SCRIPT"; > <script> > function Click$params->{id}(event) { >- event.preventDefault(); > var index = event.data.id; > var str = document.getElementById(index).value; > var myurl, term; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc >index 6ec8a50c8f..c520a264d0 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc >@@ -135,11 +135,11 @@ > [% IF mv.readonly %] > <input type="text" id="[%- mv.id | html -%]" name="[% kohafield | html %]" class="input_marceditor [% kohafield | html %]" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" readonly="readonly" /> > [% ELSE %] >- <input type="text" id="[%- mv.id | html -%]" name="[% kohafield | html %]" class="input_marceditor [% kohafield | html %]" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" /> >+ <input type="text" id="[%- mv.id | html -%]" name="[% kohafield | html %]" class="input_marceditor framework_plugin [% kohafield | html %]" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" data-plugin="[% mv.plugin | html %]" /> > [% IF ( mv.nopopup ) %] >- <a href="#" id="buttonDot_[%- mv.id | html -%]" class="[%- mv.class | html -%]" title="No popup">...</a> >+ <a href="#" id="buttonDot_[%- mv.id | html -%]" class="[%- mv.class | html -%]" title="No popup" data-plugin="[% mv.plugin | html %]">...</a> > [% ELSE %] >- <a href="#" id="buttonDot_[%- mv.id | html -%]" class="[%- mv.class | html -%]" title="Tag editor">...</a> >+ <a href="#" id="buttonDot_[%- mv.id | html -%]" class="[%- mv.class | html -%]" title="Tag editor" data-plugin="[% mv.plugin | html %]">...</a> > [% END %] > [% UNLESS no_plugin %][%# FIXME - from batchMod-edit, jQuery is included at the end of the template and cataloguing plugins are not working in this situation %] > [%- mv.javascript | $raw -%] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt >index 13a47cb960..e331cf04e4 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt >@@ -319,7 +319,7 @@ > <div class="dialog message">The autoBarcode system preference is set to [% Koha.Preference('autoBarcode') | html %] and items with blank barcodes will have barcodes generated upon save to database</div> > [% END %] > >- <div id="outeritemblock"></div> >+ <div id="outeritemblock" class="marc_editor"></div> > > </fieldset> > [% END %][%# | html UNLESS subscriptionid %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt >index 648a170c51..b62b90301f 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt >@@ -214,7 +214,7 @@ > used > </p> > [% END %] >- <div id="outeritemblock"></div> >+ <div id="outeritemblock" class="marc_editor"></div> > </fieldset> > [% END %] > [% ELSIF (AcqCreateItem == 'ordering') %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt >index 548b841aa1..839024e97b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt >@@ -363,7 +363,7 @@ > This authority is not used in any records. > [% END %] > </div> >- <div id="authoritytabs" class="toptabs numbered"> >+ <div id="authoritytabs" class="toptabs numbered marc_editor"> > <ul> > [% FOREACH BIG_LOO IN BIG_LOOP %] > <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li> >@@ -556,7 +556,7 @@ > [% IF mv.noclick %] > <a href="#" class="buttonDot tag_editor disabled" tabindex="-1" title="No popup">...</a> > [% ELSE %] >- <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor" title="Tag editor">...</a> >+ <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor" title="Tag editor" data-plugin="[% mv.plugin | html %]">...</a> > [% END %] > [% mv.javascript | $raw %] > [% END #/IF ( mv.type == 'text1' ) %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt >index cb6a16f905..bc28e0b564 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt >@@ -994,7 +994,7 @@ function PopupMARCFieldDoc(field) { > <input type="hidden" name="breedingid" value="[% breedingid | html %]" /> > <input type="hidden" name="changed_framework" value="" /> > >- <div id="addbibliotabs" class="toptabs numbered"> >+ <div id="addbibliotabs" class="toptabs numbered marc_editor"> > <ul> > [% FOREACH BIG_LOO IN BIG_LOOP %] > <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li> >@@ -1127,7 +1127,7 @@ function PopupMARCFieldDoc(field) { > [% END %] > > [% ELSIF ( mv.type == 'text_complex' ) %] >- <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor framework_plugin" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" /> >+ <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor framework_plugin" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" data-plugin="[% mv.plugin | html %]" /> > [% mv.javascript | $raw %] > [% ELSIF ( mv.type == 'hidden' ) %] > <input tabindex="1" type="hidden" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" /> >@@ -1168,9 +1168,9 @@ function PopupMARCFieldDoc(field) { > <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span> > [% ELSE %] > [% IF mv.plugin == "upload.pl" %] >- <a href="#" id="buttonDot_[% mv.id | html %]" class="tag_editor upload framework_plugin" tabindex="1"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a> >+ <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor upload framework_plugin" tabindex="1" data-plugin="[% mv.plugin | html %]"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a> > [% ELSE %] >- <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a> >+ <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor" data-plugin="[% mv.plugin | html %]">Tag editor</a> > [% END %] > [% END %] > </span> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt >index 31eaf8e3bd..87b80d8f44 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt >@@ -143,7 +143,7 @@ > </div> > <div class="col-sm-10"> > >-<div id="cataloguing_additem_newitem"> >+<div id="cataloguing_additem_newitem" class="marc_editor"> > <form id="f" method="post" action="/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% biblio.biblionumber | html %]" name="f"> > <input type="hidden" name="op" value="[% op | html %]" /> > [% IF (popup) %] >diff --git a/koha-tmpl/intranet-tmpl/prog/js/additem.js b/koha-tmpl/intranet-tmpl/prog/js/additem.js >index a83310f29d..9e330345d1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/additem.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/additem.js >@@ -213,24 +213,10 @@ function cloneItemBlock(index, unique_item_fields, callback) { > var cloneIndex = "itemblock"+random; > callback(cloneIndex); > } >- BindPluginEvents(data); > } > }); > } > >-function BindPluginEvents(data) { >-// the script tag in data for plugins contains a document ready that binds >-// the events for the plugin >-// when we append, this code does not get executed anymore; so we do it here >- var events= data.match(/BindEventstag_\d+_subfield_._\d+/g); >- if ( events == null ) return; >- for(var i=0; i<events.length; i++) { >- window[events[i]](); >- if( i<events.length-1 && events[i]==events[i+1] ) { i++; } >- // normally we find the function name twice >- } >-} >- > function clearItemBlock(node) { > var index = $(node).closest("div").attr('id'); > var block = $("#"+index); >diff --git a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js b/koha-tmpl/intranet-tmpl/prog/js/cataloging.js >index 16cf857496..282bbafbc1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/cataloging.js >@@ -1,5 +1,5 @@ > /* global __ */ >-/* exported openAuth ExpandField CloneField CloneSubfield UnCloneField CloneItemSubfield CheckMandatorySubfields */ >+/* exported openAuth ExpandField CloneField CloneSubfield UnCloneField CloneItemSubfield CheckMandatorySubfields registerFrameworkPluginHandler */ > > /* > * Unified file for catalogue edition >@@ -182,8 +182,6 @@ function CloneField(index, hideMarc, advancedMARCEditor) { > > var inputs = divs[i].getElementsByTagName('input'); > var id_input = ""; >- var olddiv; >- var oldcontrol; > > for( j = 0 ; j < inputs.length ; j++ ) { > if(inputs[j].getAttribute("id") && inputs[j].getAttribute("id").match(/^tag_/) ){ >@@ -224,11 +222,6 @@ function CloneField(index, hideMarc, advancedMARCEditor) { > } > } > } >- if( $(inputs[1]).hasClass('framework_plugin') ) { >- olddiv= original.getElementsByTagName('li')[i]; >- oldcontrol= olddiv.getElementsByTagName('input')[1]; >- AddEventHandlers( oldcontrol,inputs[1],id_input ); >- } > } > // when cloning a subfield, re set its label too. > try { >@@ -266,22 +259,12 @@ function CloneField(index, hideMarc, advancedMARCEditor) { > if(!CloneButtonPlus){ // it s impossible to have + ... (buttonDot AND buttonPlus) > buttonDot = spans[0]; > if(buttonDot){ >- // 2 possibilities : >- try{ >- if( $(buttonDot).hasClass('framework_plugin') ) { >- olddiv= original.getElementsByTagName('li')[i]; >- oldcontrol= olddiv.getElementsByTagName('a')[0]; >- AddEventHandlers(oldcontrol,buttonDot,id_input); >- } >- try { >- // do not copy the script section. >- var script = spans[0].getElementsByTagName('script')[0]; >- spans[0].removeChild(script); >- } catch(e) { >- // do nothing if there is no script >- } >- } catch(e){ >- // >+ try { >+ // do not copy the script section. >+ var script = spans[0].getElementsByTagName('script')[0]; >+ spans[0].removeChild(script); >+ } catch(e) { >+ // do nothing if there is no script > } > } > } >@@ -343,7 +326,6 @@ function CloneSubfield(index, advancedMARCEditor){ > var selects = clone.getElementsByTagName('select'); > var textareas = clone.getElementsByTagName('textarea'); > var linkid; >- var oldcontrol; > > // input > var id_input = ""; >@@ -357,12 +339,6 @@ function CloneSubfield(index, advancedMARCEditor){ > linkid = id_input; > } > >- // Plugin input >- if( $(inputs[1]).hasClass('framework_plugin') ) { >- oldcontrol= original.getElementsByTagName('input')[1]; >- AddEventHandlers( oldcontrol, inputs[1], linkid ); >- } >- > // select > for(i=0,len=selects.length; i<len ; i++ ){ > id_input = selects[i].getAttribute('id')+new_key; >@@ -382,13 +358,6 @@ function CloneSubfield(index, advancedMARCEditor){ > linkid = id_input; > } > >- // Handle click event on buttonDot for plugin >- var links = clone.getElementsByTagName('a'); >- if( $(links[0]).hasClass('framework_plugin') ) { >- oldcontrol= original.getElementsByTagName('a')[0]; >- AddEventHandlers( oldcontrol, links[0], linkid ); >- } >- > if(advancedMARCEditor == '0') { > // when cloning a subfield, reset its label too. > var label = clone.getElementsByTagName('label')[0]; >@@ -427,23 +396,6 @@ function CloneSubfield(index, advancedMARCEditor){ > clone.querySelectorAll('input.input_marceditor').value = ""; > } > >-function AddEventHandlers (oldcontrol, newcontrol, newinputid ) { >-// This function is a helper for CloneField and CloneSubfield. >-// It adds the event handlers from oldcontrol to newcontrol. >-// newinputid is the id attribute of the cloned controlling input field >-// Note: This code depends on the jQuery data for events; this structure >-// is moved to _data as of jQuery 1.8. >- var ev= $(oldcontrol).data('events'); >- if(typeof ev != 'undefined') { >- $.each(ev, function(prop,val) { >- $.each(val, function(prop2,val2) { >- $(newcontrol).off( val2.type ); >- $(newcontrol).on( val2.type, {id: newinputid}, val2.handler ); >- }); >- }); >- } >-} >- > /** > * This function removes or clears unwanted subfields > */ >@@ -639,3 +591,38 @@ $(document).ready(function() { > }); > > }); >+ >+Koha.frameworkPlugins ||= {}; >+function registerFrameworkPluginHandler(name, eventType, handler) { >+ // 'focus' and 'blur' events do not bubble, >+ // so we have to use 'focusin' and 'focusout' instead >+ if (eventType === 'focus') eventType = 'focusin'; >+ else if (eventType === 'blur') eventType = 'focusout'; >+ >+ Koha.frameworkPlugins[name] ||= {}; >+ Koha.frameworkPlugins[name][eventType] ||= handler; >+} >+$(document).ready(function() { >+ function callPluginEventHandler (event) { >+ event.preventDefault(); >+ event.stopPropagation(); >+ >+ const plugin = event.target.getAttribute('data-plugin'); >+ if (plugin && plugin in Koha.frameworkPlugins && event.type in Koha.frameworkPlugins[plugin]) { >+ event.data = {}; >+ if (event.target.classList.contains('buttonDot')) { >+ event.data.id = event.target.closest('.subfield_line').querySelector('input.input_marceditor').id; >+ } else { >+ event.data.id = event.target.id; >+ } >+ >+ Koha.frameworkPlugins[plugin][event.type].call(this, event); >+ } >+ } >+ >+ // We use delegated event handlers here so that dynamically added elements >+ // (like when cloning a field or a subfield) respond to these events >+ // without having to re-attach events manually >+ $('.marc_editor').on('click', '.buttonDot', callPluginEventHandler) >+ $('.marc_editor').on('focusin focusout', 'input.input_marceditor.framework_plugin', callPluginEventHandler); >+}); >-- >2.30.2
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 30975
:
136135
|
138318
|
140763
|
140810
|
146146
|
146817
|
158064
|
170499
|
170500
|
171513
|
171514
|
175432
|
175433
|
175434
|
175435
|
175436
|
175437
|
177612
|
177613
|
177614
|
177615
|
177616
|
177719
|
177720
|
177721
|
177722
|
177723