diff options
Diffstat (limited to 'did-controller.lua')
-rw-r--r-- | did-controller.lua | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/did-controller.lua b/did-controller.lua index e829dfd..1d243e4 100644 --- a/did-controller.lua +++ b/did-controller.lua @@ -29,12 +29,52 @@ function searchdefinitionlist(self) return result end +local function handle_form(self, getFunction, setFunction, clientdata, option, label, descr) + local form = getFunction() + + if clientdata["Save"] or clientdata["Test"] then + controllerfunctions.handle_clientdata(form, clientdata) + + if clientdata["Test"] then + form = setFunction(form, true) + else + form = setFunction(form) + end + if not form.errtxt and descr then + form.descr = descr + end + + if clientdata.redir then + form.value.redir = cfe({ type="hidden", value=clientdata.redir, label="" }) + end + form = self:redirect_to_referrer(form) + if clientdata.redir and not form.errtxt and not clientdata["Test"] then + form.value = form.descr -- make it a command result + form.descr = nil + self:redirect(clientdata.redir, form) + end + elseif clientdata["Cancel"] and clientdata.redir then + self:redirect(clientdata.redir, nil) + else + if clientdata.redir then + form.value.redir = cfe({ type="hidden", value=clientdata.redir, label="" }) + end + form = self:redirect_to_referrer() or form + end + + form.type = "form" + form.option = option + form.label = label + + return form +end + function editdefinition(self) - return controllerfunctions.handle_form(self, function() return self.model.getdefinition(self.clientdata.did) end, self.model.updatedefinition, self.clientdata, "Save", "Edit DID Number") + return handle_form(self, function() return self.model.getdefinition(self.clientdata.did) end, self.model.updatedefinition, self.clientdata, "Save", "Edit DID Number") end function createdefinition(self) - return controllerfunctions.handle_form(self, self.model.getdefinition, self.model.savedefinition, self.clientdata, "Save", "Create DID Number") + return handle_form(self, self.model.getdefinition, self.model.savedefinition, self.clientdata, "Save", "Create DID Number") end function assigndefinition(self) |