summaryrefslogtreecommitdiffhomepage
path: root/libs/cbi/luasrc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/cbi/luasrc')
-rw-r--r--libs/cbi/luasrc/cbi.lua15
-rw-r--r--libs/cbi/luasrc/view/cbi/delegator.htm3
2 files changed, 18 insertions, 0 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua
index 1b22db0a8..13aad8d9e 100644
--- a/libs/cbi/luasrc/cbi.lua
+++ b/libs/cbi/luasrc/cbi.lua
@@ -506,6 +506,7 @@ function Delegator.__init__(self, ...)
self.pageaction = false
self.readinput = true
self.allow_reset = false
+ self.allow_cancel = false
self.allow_back = false
self.allow_finish = false
self.template = "cbi/delegator"
@@ -559,6 +560,17 @@ function Delegator.get(self, name)
end
function Delegator.parse(self, ...)
+ if self.allow_cancel and Map.formvalue(self, "cbi.cancel") then
+ if self.on_cancel then
+ self:on_cancel()
+ return FORM_DONE
+ end
+ end
+
+ if self.on_init and not Map.formvalue(self, "cbi.delg.current") then
+ self:on_init()
+ end
+
local newcurrent
self.chain = self.chain or self:get_chain()
self.current = self.current or self:get_active()
@@ -587,6 +599,9 @@ function Delegator.parse(self, ...)
if not Map.formvalue(self, "cbi.submit") then
return FORM_NODATA
elseif not newcurrent or not self:get(newcurrent) then
+ if self.on_done then
+ self:on_done()
+ end
return FORM_DONE
else
self.current = newcurrent
diff --git a/libs/cbi/luasrc/view/cbi/delegator.htm b/libs/cbi/luasrc/view/cbi/delegator.htm
index 95fd270f8..f2c87b460 100644
--- a/libs/cbi/luasrc/view/cbi/delegator.htm
+++ b/libs/cbi/luasrc/view/cbi/delegator.htm
@@ -23,6 +23,9 @@ $Id$
<% if self.allow_reset then %>
<input class="cbi-button cbi-button-reset" type="reset" value="<%:reset%>" />
<% end %>
+<% if self.allow_cancel then %>
+ <input class="cbi-button cbi-button-cancel" type="submit" name="cbi.cancel" value="<%:cancel%>" />
+<% end %>
<% if self.allow_finish and not self:get_next(self.current) then %>
<input class="cbi-button cbi-button-finish" type="submit" value="<%:cbi_finish Finish%>" />
<% elseif self:get_next(self.current) then %>