From cc0cf99fed7b8850c380e864bf672f42d76a2a3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 9 Jun 2021 17:40:36 -0400 Subject: [PATCH] feat: allow nested properties on category page (#9601) * feat: allow nested properties on category page * fix: remove debug * fix: remove debug --- public/src/admin/manage/category.js | 21 ++++++++++++++++++++- src/views/admin/manage/category.tpl | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/public/src/admin/manage/category.js b/public/src/admin/manage/category.js index 7a7718c7ad..ecfa19ca36 100644 --- a/public/src/admin/manage/category.js +++ b/public/src/admin/manage/category.js @@ -235,8 +235,27 @@ define('admin/manage/category', [ } else { value = $(el).val(); } + var dataName = $(el).attr('data-name'); + var fields = dataName.match(/[^\][.]+/g); - updateHash[$(el).attr('data-name')] = value; + function setNestedFields(obj, index) { + if (index === fields.length) { + return; + } + obj[fields[index]] = obj[fields[index]] || {}; + if (index === fields.length - 1) { + obj[fields[index]] = value; + } + setNestedFields(obj[fields[index]], index + 1); + } + + if (fields && fields.length) { + if (fields.length === 1) { // simple field name ie data-name="name" + updateHash[fields[0]] = value; + } else if (fields.length > 1) { // nested field name ie data-name="name[sub1][sub2]" + setNestedFields(updateHash, 0); + } + } app.flags = app.flags || {}; app.flags._unsaved = true; diff --git a/src/views/admin/manage/category.tpl b/src/views/admin/manage/category.tpl index 869e23d42e..c1958f0037 100644 --- a/src/views/admin/manage/category.tpl +++ b/src/views/admin/manage/category.tpl @@ -39,6 +39,7 @@ +