libs/web: cbi: add new on_before_save and on_after_save hook, implement :reset_values...
authorJo-Philipp Wich <jow@openwrt.org>
Thu, 14 Oct 2010 23:21:25 +0000 (23:21 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Thu, 14 Oct 2010 23:21:25 +0000 (23:21 +0000)
libs/web/luasrc/cbi.lua

index 0a63d6090a8ffddcd9fb862b630d10f49cd53d42..5fa992dee8e740a88efde18d3163440553dcb2bb 100644 (file)
@@ -304,9 +304,11 @@ function Map.parse(self, readinput, ...)
        Node.parse(self, ...)
 
        if self.save then
        Node.parse(self, ...)
 
        if self.save then
+               self:_run_hooks("on_save", "on_before_save")
                for i, config in ipairs(self.parsechain) do
                        self.uci:save(config)
                end
                for i, config in ipairs(self.parsechain) do
                        self.uci:save(config)
                end
+               self:_run_hooks("on_after_save")
                if self:submitstate() and ((not self.proceed and self.flow.autoapply) or luci.http.formvalue("cbi.apply")) then
                        self:_run_hooks("on_before_commit")
                        for i, config in ipairs(self.parsechain) do
                if self:submitstate() and ((not self.proceed and self.flow.autoapply) or luci.http.formvalue("cbi.apply")) then
                        self:_run_hooks("on_before_commit")
                        for i, config in ipairs(self.parsechain) do
@@ -1402,6 +1404,11 @@ function Value.__init__(self, ...)
        self.vallist = {}
 end
 
        self.vallist = {}
 end
 
+function Value.reset_values(self)
+       self.keylist = {}
+       self.vallist = {}
+end
+
 function Value.value(self, key, val)
        val = val or key
        table.insert(self.keylist, tostring(key))
 function Value.value(self, key, val)
        val = val or key
        table.insert(self.keylist, tostring(key))
@@ -1487,6 +1494,11 @@ function ListValue.__init__(self, ...)
        self.widget = "select"
 end
 
        self.widget = "select"
 end
 
+function ListValue.reset_values(self)
+       self.keylist = {}
+       self.vallist = {}
+end
+
 function ListValue.value(self, key, val, ...)
        if luci.util.contains(self.keylist, key) then
                return
 function ListValue.value(self, key, val, ...)
        if luci.util.contains(self.keylist, key) then
                return
@@ -1537,6 +1549,11 @@ function MultiValue.render(self, ...)
        AbstractValue.render(self, ...)
 end
 
        AbstractValue.render(self, ...)
 end
 
+function MultiValue.reset_values(self)
+       self.keylist = {}
+       self.vallist = {}
+end
+
 function MultiValue.value(self, key, val)
        if luci.util.contains(self.keylist, key) then
                return
 function MultiValue.value(self, key, val)
        if luci.util.contains(self.keylist, key) then
                return
@@ -1613,6 +1630,11 @@ function DynamicList.__init__(self, ...)
        self.vallist = {}
 end
 
        self.vallist = {}
 end
 
+function DynamicList.reset_values(self)
+       self.keylist = {}
+       self.vallist = {}
+end
+
 function DynamicList.value(self, key, val)
        val = val or key
        table.insert(self.keylist, tostring(key))
 function DynamicList.value(self, key, val)
        val = val or key
        table.insert(self.keylist, tostring(key))