luci-base: uci.js: fix section deletion logic
- Process deletions before additions or changes, allowing user code to remove and recreate a section with the same name. - Only record section deletions when the section to be removed actually existed in the original config or when it was staged for creation earlier. This avoids stray ubus not found exception when saving. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
baa3bd4aac
commit
49c6a810e9
1 changed files with 13 additions and 12 deletions
|
@ -301,7 +301,8 @@ return baseclass.extend(/** @lends LuCI.uci.prototype */ {
|
|||
* The ID of the section to remove.
|
||||
*/
|
||||
remove: function(conf, sid) {
|
||||
var n = this.state.creates,
|
||||
var v = this.state.values,
|
||||
n = this.state.creates,
|
||||
c = this.state.changes,
|
||||
d = this.state.deletes;
|
||||
|
||||
|
@ -309,7 +310,7 @@ return baseclass.extend(/** @lends LuCI.uci.prototype */ {
|
|||
if (n[conf] && n[conf][sid]) {
|
||||
delete n[conf][sid];
|
||||
}
|
||||
else {
|
||||
else if (v[conf] && v[conf][sid]) {
|
||||
if (c[conf])
|
||||
delete c[conf][sid];
|
||||
|
||||
|
@ -791,6 +792,16 @@ return baseclass.extend(/** @lends LuCI.uci.prototype */ {
|
|||
pkgs = { },
|
||||
tasks = [];
|
||||
|
||||
if (d)
|
||||
for (var conf in d) {
|
||||
for (var sid in d[conf]) {
|
||||
var o = d[conf][sid];
|
||||
tasks.push(self.callDelete(conf, sid, (o === true) ? null : o));
|
||||
}
|
||||
|
||||
pkgs[conf] = true;
|
||||
}
|
||||
|
||||
if (n)
|
||||
for (var conf in n) {
|
||||
for (var sid in n[conf]) {
|
||||
|
@ -823,16 +834,6 @@ return baseclass.extend(/** @lends LuCI.uci.prototype */ {
|
|||
pkgs[conf] = true;
|
||||
}
|
||||
|
||||
if (d)
|
||||
for (var conf in d) {
|
||||
for (var sid in d[conf]) {
|
||||
var o = d[conf][sid];
|
||||
tasks.push(self.callDelete(conf, sid, (o === true) ? null : o));
|
||||
}
|
||||
|
||||
pkgs[conf] = true;
|
||||
}
|
||||
|
||||
if (r)
|
||||
for (var conf in r)
|
||||
pkgs[conf] = true;
|
||||
|
|
Loading…
Reference in a new issue