Bug 14213: Cataloging plugin in cloned field does not work

A code change for report 10480 in cataloging.js does not work well in case
you clone a field with a plugin on a subfield.
The events (click, focus, etc.) do not work on the subfield of the clone.

This patch corrects the situation by finding the right html element for
adding event binding.
NOTE: The test plan uses EXAMPLE.pl since many old plugins do not operate
on the correct field value when cloning. This is corrected in bug 13437.

Test plan:
[1] Attach EXAMPLE.pl to field 007, 246h and 260c.
    In sql for 007: update marc_subfield_structure set
        value_builder='EXAMPLE.pl' where tagfield='007' and tagsubfield='@';
[2] Clone field 007. Verify that focus and click operate on both fields.
    Check also that the plugin works on the value corresponding with
    the button you clicked.
[3] Clone field 246. Do the same checks on both subfields $h.
[4] Clone subfield 260c. Do the same checks again.

Test Remarks:
============

1/ Setup a new framework (B213) based off 'Default' and fired off
   an SQL statement to update value_builder values for 007, 246$h
   and 269$c (UPDATE `marc_subfield_structure` SET value_builder
   = 'EXAMPLE.pl' WHERE frameworkcode = 'B213' AND ( (tagfield =
   '007' AND tagsubfield = '@') OR ( tagfield LIKE '246' AND
   tagsubfield = 'h') OR (tagfield = '260' AND tagsubfield = 'c'))

2/ Tested step 2, 3 and 4 of the given test plan above. The missing
   plugin support in the cloned fields were noted.

3/ Applied patch

4/ Re-tested steps 2, 3 and 4 as before. The defined plugins were
   correctly cloned and found to be functional.

Signed-off-by: Indranil Das Gupta (L2C2 Technologies) <indradg@gmail.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Marcel de Rooy 2015-05-18 10:31:26 +02:00 committed by Tomas Cohen Arazi
parent e2b91ae0f6
commit eb0583d51d

View file

@ -131,7 +131,8 @@ function CloneField(index, hideMarc, advancedMARCEditor) {
}
}
if( $(inputs[1]).hasClass('framework_plugin') ) {
var oldcontrol= original.getElementsByTagName('input')[1];
var olddiv= original.getElementsByTagName('div')[i];
var oldcontrol= olddiv.getElementsByTagName('input')[1];
AddEventHandlers( oldcontrol,inputs[1],id_input );
}
@ -177,7 +178,8 @@ function CloneField(index, hideMarc, advancedMARCEditor) {
// 2 possibilities :
try{
if( $(buttonDot).hasClass('framework_plugin') ) {
var oldcontrol= original.getElementsByTagName('a')[0];
var olddiv= original.getElementsByTagName('div')[i];
var oldcontrol= olddiv.getElementsByTagName('a')[0];
AddEventHandlers(oldcontrol,buttonDot,id_input);
} else {
if(buttonDotOnClick.match('Dopop')) { // -2- It's a auth value