From b6c2c25e5e99b6d8515a777a00f5a97c1f6b1d23 Mon Sep 17 00:00:00 2001 From: Mika Havela Date: Wed, 23 Jan 2008 14:31:44 +0000 Subject: Forcing user to enter valid options in the config-tab before making a commit. Displaying current errors in the config/settings. git-svn-id: svn://svn.alpinelinux.org/acf/alpine-conf/trunk@628 ab2d0c66-481e-0410-8bed-d214d4d58bed --- lbu-controller.lua | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'lbu-controller.lua') diff --git a/lbu-controller.lua b/lbu-controller.lua index c13bc5c..d8703e9 100644 --- a/lbu-controller.lua +++ b/lbu-controller.lua @@ -19,12 +19,15 @@ end status = function (self) local cmd = self.clientdata.cmd local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller - return ( {status = self.model:getstatus(), + local status, errors = self.model:getstatus() + return ( {status = status, + errors = errors, lbustatus = self.model:list(), url = url, } ) end config = function (self) + local errors = {} local cmdresult if (self.clientdata.cmd_delete_excluded) and (self.clientdata.lbu_excluded) then cmdresult = self.model:lbuincexcl("exclude", self.clientdata.lbu_excluded, "remove") @@ -50,30 +53,46 @@ config = function (self) cmdresult = self.model:lbuincexcl("exclude", self.clientdata.item_add_exclude, "add") end - + -- This needs to be done /after/ the editing of the config (done earlier in this code) + local status,errors = self.model:getstatus() local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller - return ( {status = self.model:getstatus(), + return ( {status = status, cmdresult = cmdresult, + errors = errors, clientdata = self.clientdata, config = self.model:getconfig(), url = url, } ) end function commit(self) - local cmdresult + local cmdresult, cmderror local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller local cmdflag = nil if (self.clientdata.lbucleanmedia) then cmdflag = "-d" else cmdflag = "" end if (self.clientdata.lbusimulate) then - cmdresult = self.model:getsimulate(cmdflag) + cmdresult, cmderror = self.model:getsimulate(cmdflag) end if (self.clientdata.lbucommit) then - cmdresult = self.model:getcommit(cmdflag) + cmdresult, cmderror = self.model:getcommit(cmdflag) + end + + -- If no clientdata then do a dryrun and see if it's going to work else report + if not (cmdresult) then + tmp_cmdresult, cmderror = self.model:getsimulate() + end + + local status, errors = self.model:getstatus() + if (errors.last) then + self.conf.action = "config" + self.conf.type = "redir" + return config(self) end - return ( {status = self.model:getstatus(), + return ( {status = status, + errors = errors, cmdresult = cmdresult, cmdflag = cmdflag, + cmderror = cmderror, clientdata = self.clientdata, url = url, } ) end -- cgit v1.2.3