@@ -, +, @@ --- koha-tmpl/intranet-tmpl/prog/js/cataloging.js | 42 +++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) --- a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js +++ a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js @@ -73,6 +73,23 @@ function ExpandField(index) { } } } + +var Select2Utils = { + removeSelect2: function(element) { + var selects = element.getElementsByTagName('select'); + for (var i=0; i < selects.length; i++) { + $(selects[i]).select2('destroy'); + } + }, + + initSelect2: function(element) { + var selects = element.getElementsByTagName('select'); + for (var i=0; i < selects.length; i++) { + $(selects[i]).select2(); + } + } +}; + /** * To clone a field * @param hideMarc '0' for false, '1' for true @@ -80,6 +97,8 @@ function ExpandField(index) { */ function CloneField(index, hideMarc, advancedMARCEditor) { var original = document.getElementById(index); //original
+ Select2Utils.removeSelect2(original); + var clone = original.cloneNode(true); var new_key = CreateKey(); var new_id = original.getAttribute('id')+new_key; @@ -244,8 +263,12 @@ function CloneField(index, hideMarc, advancedMARCEditor) { // insert this line on the page original.parentNode.insertBefore(clone,original.nextSibling); + + Select2Utils.initSelect2(original); + Select2Utils.initSelect2(clone); } + /** * To clone a subfield * @param index @@ -253,6 +276,7 @@ function CloneField(index, hideMarc, advancedMARCEditor) { */ function CloneSubfield(index, advancedMARCEditor){ var original = document.getElementById(index); //original
+ Select2Utils.removeSelect2(original); var clone = original.cloneNode(true); var new_key = CreateKey(); // set the attribute for the new 'div' subfields @@ -327,8 +351,13 @@ function CloneSubfield(index, advancedMARCEditor){ } // insert this line on the page original.parentNode.insertBefore(clone,original.nextSibling); + + //Restablish select2 for the cloned elements. + Select2Utils.initSelect2(original); + Select2Utils.initSelect2(clone); + // delete data of cloned subfield - document.getElementById(linkid).value = ""; + clone.querySelectorAll('input.input_marceditor').value = ""; } function AddEventHandlers (oldcontrol, newcontrol, newinputid ) { @@ -413,8 +442,8 @@ function upSubfield(index) { } var tag = line.parentNode; // get the dad of this line. (should be "
") - // getting all subfields for this tag - var subfields = tag.getElementsByTagName('div'); + // getting all visible subfields for this tag + var subfields = tag.querySelectorAll("div.subfield_line"); var subfieldsLength = subfields.length; if(subfieldsLength<=1) return; // nothing to do if there is just one subfield. @@ -422,8 +451,8 @@ function upSubfield(index) { // among all subfields for(var i=0;i