From c8793b1cd3eacece7ccadc9fc6a0c8248a73bba2 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Tue, 13 Sep 2022 12:19:57 +0000 Subject: [PATCH] Bug 31497: Prevent ID clash on quick add fields The quick add clones the original fields, including ids. This can cause some clash when other JS is running on the page. This patch updates the ids of the fields before adding to the form, which prevents bad copying/clearing of fields To test: * Go to patrons module * Click on Quick add new patron (I chose Patron as category) * On sample database these fields are marked as mandatory: * Surname * Cardnumber * Library * Category * Fill in Surname, leave cardnumber empty * Save - mandatory message is shown * Fill in cardnumber - save * The patron is saved * BUT: cardnumber is empty! APPLY PATCH * Repeat plan above * Cardnumber is correctly saved Signed-off-by: David Nind Signed-off-by: Michaela Sieber Signed-off-by: Chris Cormack Signed-off-by: Tomas Cohen Arazi (cherry picked from commit 0f599e2a2a8c9f6caed4fe4ae6060b106d2a1004) Signed-off-by: Lucas Gass --- .../prog/en/modules/members/memberentrygen.tt | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt index c065dd3454..df6b71cfe9 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -1798,10 +1798,24 @@ legend:hover { input_label='title'; } if( qaddfields.indexOf( input_label ) != -1 || $(this).attr('class') == 'required' ){ - $(this).parent().clone().appendTo("#quick_add_list"); - [% UNLESS mandatorypassword %] - if( input_label == 'password' ) $("#entryform label[for='password2']").parent().clone().appendTo("#quick_add_list"); - [% END %] + let orig_li = $(this).parent(); + if( orig_li.attr('class') == 'radio' ){ + let new_field = orig_li.clone(); + new_field.children('label').each(function(){ + let child_input = $(this).children('input'); + child_input.attr("id",child_input.attr("id") + "_qa"); + }); + new_field.appendTo("#quick_add_list"); + } else { + let orig_input_id = orig_li.children("input,textarea,select").attr("id"); + console.log( orig_input_id); + let new_field = orig_li.clone(); + new_field.children("#"+orig_input_id).attr("id",orig_input_id + "_qa"); + new_field.appendTo("#quick_add_list"); + [% UNLESS mandatorypassword %] + if( input_label == 'password' ) $("#entryform label[for='password2']").parent().clone().appendTo("#quick_add_list"); + [% END %] + } } }); if ( $("#memberentry_guarantor").length ) { -- 2.39.5