module(..., package.seeall) -- Load libraries require("controllerfunctions") default_action = "viewrecords" function listuseddefinitions(self) return self.model.getuseddefinitionlist(self, sessiondata.userinfo.userid, self.clientdata.did, self.clientdata.extension, self.clientdata.identification, self.clientdata.description, self.clientdata.department, self.clientdata.page) end function listunuseddefinitions(self) return self.model.getunuseddefinitionlist(self, sessiondata.userinfo.userid, self.clientdata.did, self.clientdata.identification, self.clientdata.description, self.clientdata.department, self.clientdata.page) end function listdefinitions(self) return self.model.getdefinitionlist(self, sessiondata.userinfo.userid, self.clientdata.did, self.clientdata.extension, self.clientdata.identification, self.clientdata.description, self.clientdata.department, self.clientdata.page) end function searchdefinitionlist(self) self.clientdata.did = self.clientdata.q or self.clientdata.did local result = self.model.searchdefinitions(self, sessiondata.userinfo.userid, self.clientdata.did) if self.clientdata.q then self.conf.viewtype = "text" end 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 handle_form(self, function() return self.model.getdefinition(self, sessiondata.userinfo.userid, self.clientdata.did) end, function(value) return self.model.updatedefinition(self, sessiondata.userinfo.userid, value) end, self.clientdata, "Save", "Edit DID Number") end function createdefinition(self) return handle_form(self, function() return self.model.getdefinition(self, sessiondata.userinfo.userid) end, function(value) return self.model.savedefinition(self, sessiondata.userinfo.userid, value) end, self.clientdata, "Save", "Create DID Number") end function assigndefinition(self) self.conf.viewtype = self.clientdata.viewtype or self.conf.viewtype return controllerfunctions.handle_form(self, function() return self.model.getdefinition(self, sessiondata.userinfo.userid, self.clientdata.did) end, function(value) return self.model.updatedefinition(self, sessiondata.userinfo.userid, value) end, self.clientdata, "Save", "Assign DID Number") end function newdefinition(self) local retval = controllerfunctions.handle_form(self, self.model.getunuseddefinition, function(value) return self.model.setunuseddefinition(self, sessiondata.userinfo.userid, value) end, self.clientdata, "Select", "Create New DID Number") if retval.value.did and not retval.errtxt then -- Successfully found an unused did, redirect to edit it self:redirect("editdefinition?did="..retval.value.did.value.."&redir=listdefinitions") end return retval end function deletedefinition(self) return self:redirect_to_referrer(self.model.deletedefinition(self, sessiondata.userinfo.userid, self.clientdata.did)) end function publish(self) return self:redirect_to_referrer(self.model.publishdefinition(self.clientdata.did)) end function publishall(self) return self:redirect_to_referrer(self.model.publishalldefinitions()) end function status(self) return self.model.testdatabase() end function createdatabase(self) return controllerfunctions.handle_form(self, self.model.getnewdatabase, self.model.create_database, self.clientdata, "Create", "Create New Database", "Database Created") end function viewactivitylog(self) return self.model.getactivitylog() end function listpermissions(self) return self.model:getpermissionslist() end function edituserpermissions(self) return controllerfunctions.handle_form(self, function() return self.model:getuserpermissions(self.clientdata.userid) end, function(value) return self.model:setuserpermissions(value) end, self.clientdata, "Save", "Edit User Permissions", "User permissions set") end function editrolepermissions(self) return controllerfunctions.handle_form(self, function() return self.model:getrolepermissions(self.clientdata.role) end, function(value) return self.model:setrolepermissions(value) end, self.clientdata, "Save", "Edit Role Permissions", "Role permissions set") end function requestdid(self) return self:redirect_to_referrer(self.model.requestdid(self, sessiondata.userinfo.userid)) end