From 1f985e8c97e16e06b1c976e150d47f8a9f2d7d2d Mon Sep 17 00:00:00 2001 From: Ruben Estrada <rulotec1@gmail.com> Date: Thu, 1 Oct 2020 12:16:48 -0500 Subject: [PATCH] #1493 fixes bug that deletes multipicklist fields when included in mass edit. Fixes bugs in automatic inclussion of fields for mass edit (checking the checkbox next to the field), as reference fields and multipicklists were not working. --- layouts/v7/modules/Vtiger/resources/List.js | 57 ++++++++++++--------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/layouts/v7/modules/Vtiger/resources/List.js b/layouts/v7/modules/Vtiger/resources/List.js index 731d425c3..0a46561ef 100644 --- a/layouts/v7/modules/Vtiger/resources/List.js +++ b/layouts/v7/modules/Vtiger/resources/List.js @@ -1208,10 +1208,7 @@ Vtiger.Class("Vtiger_List_Js", { isOwnerChanged = false; }); - //automatically select fields for mass edit when updated - $('#massEdit :input').change(function() { - $(this).closest('tr').find("input[id^=include_in_mass_edit_" + $(this).attr('name') + "]").prop( "checked", true ); - }); + thisInstance.registerAutoIncludeFieldsInMassEdit(); app.helper.registerLeavePageWithoutSubmit($("#massEdit")); app.helper.registerModalDismissWithoutSubmit($("#massEdit")); @@ -1362,21 +1359,29 @@ Vtiger.Class("Vtiger_List_Js", { }); }, - saveMassEdit: function (event, form_original_data, isOwnerChanged) { + registerAutoIncludeFieldsInMassEdit: function () { + + var autoIncludeFieldsInMassEditCallback = function() { + var fieldName = $(this).attr('name'); + fieldName = fieldName.replace(/\[\]$/, ''); //remove trailing [] for cases like multiselect + + $(this).closest('tr').find("input[id=include_in_mass_edit_" + fieldName + "]").prop( "checked", true ); + }; + + var formInputFields = jQuery('#massEdit :input').not('[id^=include_in_mass_edit_]'); + formInputFields.on(Vtiger_Edit_Js.referenceSelectionEvent, autoIncludeFieldsInMassEditCallback); + formInputFields.change(autoIncludeFieldsInMassEditCallback); + }, + + saveMassEdit: function (event) { event.preventDefault(); var form = $('#massEdit'); - var form_new_data = form.serialize(); var changedFields = form.find("input[id^=include_in_mass_edit_]:checked"); app.helper.showProgress(); - if (changedFields.length > 0 || isOwnerChanged) { - var originalData = app.convertUrlToDataParams(form_original_data); - var newData = app.convertUrlToDataParams(form_new_data); - - var form_update_data = ''; - if (!newData['assigned_user_id'] && isOwnerChanged) { - form_update_data += 'assigned_user_id=' + originalData['assigned_user_id'] + '&'; - } + if (changedFields.length > 0) { + var newData = app.convertUrlToDataParams(form.serialize()); + var updateFieldsRequest = ''; //add url params for hidden fields needed for the save request var hiddenFields = form.children("input[type=hidden]"); @@ -1384,25 +1389,29 @@ Vtiger.Class("Vtiger_List_Js", { key = $(this).attr("name"); if (typeof newData[key] !== 'undefined') { - form_update_data += key + '=' + newData[key] + '&'; + updateFieldsRequest += key + '=' + newData[key] + '&'; } }); - + //add url params for fields that will be updated changedFields.each(function(i, obj){ - var key = $(this).data("update-field"); - var value = newData[key]; - form_update_data += key + '='; + var fieldName = $(this).data("update-field"); + var fieldNameArray = fieldName + encodeURI('[]'); //fieldnames of fields like multipicklist have [] after the fieldname + var key = fieldName; + if (typeof newData[fieldNameArray] !== 'undefined') { + key = fieldNameArray; + } + + var value = newData[key]; + updateFieldsRequest += key + '='; if (typeof value !== 'undefined') { - form_update_data += newData[key]; + updateFieldsRequest += value; } - form_update_data += '&'; + updateFieldsRequest += '&'; }); - form_update_data = form_update_data.slice(0, -1);//remove last & - - app.request.post({data: form_update_data}).then(function (err, data) { + app.request.post({data: updateFieldsRequest}).then(function (err, data) { app.helper.hideProgress(); if (data) { jQuery('.vt-notification').remove(); -- GitLab