diff options
Diffstat (limited to 'libs/cbi/luasrc')
-rw-r--r-- | libs/cbi/luasrc/cbi.lua | 15 | ||||
-rw-r--r-- | libs/cbi/luasrc/view/cbi/delegator.htm | 3 |
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 %> |