From 9d6dc0dc33e4c7c5e9aaf096bb6b3bef9a0ae8cc Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Tue, 6 Apr 2010 15:15:15 +0000 Subject: Added test button to editdefinition. Test and Cancel are now handled in customized handler in controller. Added some rule testing code to sort them into priority order. --- did-controller.lua | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'did-controller.lua') 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) -- cgit v1.2.3