From dad63991aed14fc4c7203bb3a96c0db581d6a179 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Sat, 2 Nov 2024 00:19:50 +0100 Subject: [PATCH] Enhance nested field handling in grid.js for improved data structure management --- libraries/grid/js/grid.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/libraries/grid/js/grid.js b/libraries/grid/js/grid.js index 81a98f2..75f3a7c 100644 --- a/libraries/grid/js/grid.js +++ b/libraries/grid/js/grid.js @@ -511,17 +511,25 @@ jQuery( 'body' ).on( 'click', '#g-save, #g-edit-save', function() var formattedValues = {}; jQuery.each(values, function(i, field) { - var fieldName = field.name.replace(/\[(\w*)\]$/, ''); // usuwa [] na końcu nazwy - var isArrayField = /\[\]$/.test(field.name); // sprawdza, czy pole jest tablicą + var fieldName = field.name.replace(/\[\]$/, ''); // usuwa [] na końcu, aby traktować jako jedną tablicę + var nestedFieldMatch = fieldName.match(/^(.+?)\[(.+?)\]$/); // dopasowuje pola z zagnieżdżeniem, np. title[pl] - if (isArrayField) { - // jeśli pole jest tablicą, upewnij się, że mamy tablicę w obiekcie docelowym - if (!Array.isArray(formattedValues[fieldName])) { + if (nestedFieldMatch) { + // Obsługa zagnieżdżonych pól, takich jak title[pl] lub title[en] + var mainField = nestedFieldMatch[1]; + var subField = nestedFieldMatch[2]; + if (!formattedValues[mainField]) { + formattedValues[mainField] = {}; + } + formattedValues[mainField][subField] = field.value; + } else if (field.name.endsWith('[]')) { + // Obsługa pól tablicowych, takich jak categories[] + if (!formattedValues[fieldName]) { formattedValues[fieldName] = []; } - formattedValues[fieldName].push(field.value); // dodaj wartość do tablicy + formattedValues[fieldName].push(field.value); } else { - // dla zwykłych pól + // Obsługa pojedynczych pól formattedValues[fieldName] = field.value; } });