FORM_NODATA = 0
FORM_VALID = 1
FORM_INVALID = -1
+FORM_CHANGED = 2
AUTO = true
end
if field.name == cbid and fd then
- io.stderr:write("*** CHUNK:"..tostring(#chunk).." ***\n")
fd:write(chunk)
end
end
end
+function Map.submitstate(self)
+ return luci.http.formvalue("cbi.submit")
+end
-- Chain foreign config
function Map.chain(self, config)
for i, config in ipairs(self.parsechain) do
self.uci:save(config)
end
- if luci.http.formvalue("cbi.apply") then
+ if self:submitstate() and (self.autoapply or luci.http.formvalue("cbi.apply")) then
for i, config in ipairs(self.parsechain) do
self.uci:commit(config)
self.uci:unload(config)
end
if type(self.commit_handler) == "function" then
- self:commit_handler()
+ self:commit_handler(self:submitstate())
end
end
+
+ if self:submitstate() then
+ if self.save then
+ self.state = self.changed and FORM_CHANGED or FORM_VALID
+ else
+ self.state = FORM_INVALID
+ end
+ else
+ self.state = FORM_NODATA
+ end
+
+ return self.state
end
function Map.render(self, ...)
self.data = data or {}
self.template = "cbi/simpleform"
self.dorender = true
+ self.pageaction = false
end
function SimpleForm.parse(self, ...)
end
local state =
- not luci.http.formvalue("cbi.submit") and 0
- or valid and 1
- or -1
+ not self:submitstate() and FORM_NODATA
+ or valid and FORM_VALID
+ or FORM_INVALID
self.dorender = not self.handle or self:handle(state, self.data) ~= false
+ return state
end
function SimpleForm.render(self, ...)
end
end
+function SimpleForm.submitstate(self)
+ return luci.http.formvalue("cbi.submit")
+end
+
function SimpleForm.section(self, class, ...)
if instanceof(class, AbstractSection) then
local obj = class(self, ...)
function datasource.get(self, section, option)
return data[section] and data[section][option]
end
+
+ function datasource.submitstate(self)
+ return luci.http.formvalue("cbi.submit")
+ end
function datasource.del(...)
return true
function Table.parse(self)
for i, k in ipairs(self:cfgsections()) do
- if luci.http.formvalue("cbi.submit") then
+ if self.map:submitstate() then
Node.parse(self, k)
end
end
if active then
AbstractSection.parse_dynamic(self, s)
- if luci.http.formvalue("cbi.submit") then
+ if self.map:submitstate() then
Node.parse(self, s)
if not novld and not self.override_scheme and self.map.scheme then
local co
for i, k in ipairs(self:cfgsections()) do
AbstractSection.parse_dynamic(self, k)
- if luci.http.formvalue("cbi.submit") then
+ if self.map:submitstate() then
Node.parse(self, k)
if not novld and not self.override_scheme and self.map.scheme then
end
end
+function FileUpload.formcreated(self, section)
+ return AbstractValue.formcreated(self, section) or
+ luci.http.formvalue("cbi.rlf."..section.."."..self.option) or
+ luci.http.formvalue("cbi.rlf."..section.."."..self.option..".x")
+end
+
function FileUpload.cfgvalue(self, section)
local val = AbstractValue.cfgvalue(self, section)
if val and luci.fs.access(val) then
if val and luci.fs.access(val) then luci.fs.unlink(val) end
return AbstractValue.remove(self, section)
end
+
+
+FileBrowser = class(AbstractValue)
+
+function FileBrowser.__init__(self, ...)
+ AbstractValue.__init__(self, ...)
+ self.template = "cbi/browser"
+end