luci-base: form.js: fix GridSection modals in JSONMap instances

Since grid section edit modals construct a new Map instance internally,
we must take care of using the correct map constructor type for the
internal copy in order to end up with the correct data provider.

Ensure that the extended option modal of GridSection instances uses a
JSONMap when the grid section's owner map is a JSONMap to avoid stray
uci related errors.

Ref: https://forum.openwrt.org/t/luci-save-apply/149658/5
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2023-02-04 21:03:51 +01:00
parent 30fa6bcc66
commit 6fe3499026

View file

@ -3211,8 +3211,14 @@ var CBITableSection = CBITypedSection.extend(/** @lends LuCI.form.TableSection.p
return (stackedMap ? activeMap.save(null, true) : Promise.resolve()).then(L.bind(function() {
section_id = sref['.name'];
var m = new CBIMap(parent.config, null, null),
s = m.section(CBINamedSection, section_id, this.sectiontype);
var m;
if (parent instanceof CBIJSONMap)
m = new CBIJSONMap(parent.data.data, null, null);
else
m = new CBIMap(parent.config, null, null);
var s = m.section(CBINamedSection, section_id, this.sectiontype);
m.parent = parent;
m.section = section_id;