Bugzilla – Attachment 58863 Details for
Bug 17817
Repeat this Tag (cloning) not working
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 17817: Fix cloning subfields using select2
Bug-17817-Fix-cloning-subfields-using-select2.patch (text/plain), 4.95 KB, created by
Jonathan Druart
on 2017-01-12 08:52:12 UTC
(
hide
)
Description:
Bug 17817: Fix cloning subfields using select2
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2017-01-12 08:52:12 UTC
Size:
4.95 KB
patch
obsolete
>From 757e924be7b108ca621d05a3609b451faf3bac96 Mon Sep 17 00:00:00 2001 >From: Patricio Marrone <pmarrone@unc.edu.ar> >Date: Tue, 10 Jan 2017 15:53:33 -0300 >Subject: [PATCH] Bug 17817: Fix cloning subfields using select2 > >Based on Jonathan's patch (the DO NOT PUSH one), I put together this fix. >What was changed is that select2 is reinitialized only after the cloned element >has been appended to the DOM (so that select2 can correctly calculate the field's >width). Also, I changed the selectors that searched for the line divs (for reordering) >and for the subfield's input element (for erasing the field's value) to be more specific, >since select2 introduced divs that broke some assumptions about the expected HTML structure > >Signed-off-by: Josef Moravec <josef.moravec@gmail.com> > >Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >I confirm that these 2 patches fix the add item and mod biblio views as >well as the batch item modification tools. >--- > koha-tmpl/intranet-tmpl/prog/js/cataloging.js | 42 +++++++++++++++++++++++---- > 1 file changed, 37 insertions(+), 5 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js b/koha-tmpl/intranet-tmpl/prog/js/cataloging.js >index ee03961..6fd9346 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js >+++ b/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 <div> >+ 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 <div> >+ 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 "<div id='tag_...'>") > >- // 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<subfieldsLength;i++){ > if(subfields[i].getAttribute('id') == index){ //looking for the subfield which is clicked : >- if(i==1){ // if the clicked subfield is on the top >- tag.appendChild(subfields[1]); >+ if(i==0){ // if the clicked subfield is on the top >+ tag.appendChild(subfields[0]); > return; > } else { > var lineAbove = subfields[i-1]; >@@ -449,6 +478,7 @@ function unHideSubfield(index,labelindex) { > * @param original subfield div to clone > */ > function CloneItemSubfield(original){ >+ Select2Utils.removeSelect2(original); > var clone = original.cloneNode(true); > var new_key = CreateKey(); > >@@ -488,6 +518,8 @@ function CloneItemSubfield(original){ > > // insert this line on the page > original.parentNode.insertBefore(clone,original.nextSibling); >+ Select2Utils.initSelect2(original); >+ Select2Utils.initSelect2(clone); > } > > /** >-- >2.1.4
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 17817
:
58464
|
58465
|
58579
|
58817
|
58823
|
58824
|
58827
|
58828
|
58844
|
58845
|
58847
|
58848
|
58849
| 58863 |
58864