diff options
author | Mika Havela <mika.havela@gmail.com> | 2008-02-04 13:57:48 +0000 |
---|---|---|
committer | Mika Havela <mika.havela@gmail.com> | 2008-02-04 13:57:48 +0000 |
commit | 2eb595dbab74f76c42f44193945eba48144873ba (patch) | |
tree | 0e0ff913b22a2c5548f41cf16bb8bb373b7d4e80 /fetchmail-controller.lua | |
parent | 1b6596778e5fd901eab6f7f9650610a24add2176 (diff) | |
download | acf-fetchmail-5adce5211c64e589f8fa3e7937dfec8e50154a45.tar.bz2 acf-fetchmail-5adce5211c64e589f8fa3e7937dfec8e50154a45.tar.xz |
Status-info: Works and shows some information (not sure enabled/disabled should be there).v0.1
Config-tab: Only graphical layout is taking shape. No real data is shown. Data can't be changed.
Expert-tab: Works as it should (probably all done).
git-svn-id: svn://svn.alpinelinux.org/acf/fetchmail/trunk@687 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'fetchmail-controller.lua')
-rw-r--r-- | fetchmail-controller.lua | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/fetchmail-controller.lua b/fetchmail-controller.lua new file mode 100644 index 0000000..cf30d9b --- /dev/null +++ b/fetchmail-controller.lua @@ -0,0 +1,207 @@ +module(..., package.seeall) + +local list_redir = function (self) + self.conf.action = "status" + self.conf.type = "redir" + error (self.conf) +end + +mvc = {} +mvc.on_load = function(self, parent) + if (self.worker[self.conf.action] == nil ) or ( self.conf.action == "init" ) then + self.worker[self.conf.action] = list_redir(self) + end +end + +local function getstatus(self) + local status = self.model.getstatus() + if (#status.status.value > 0) then + status.status.value = "Enabled" + else + status.status.value = "Disabled" + end + return status +end + +local function displaycmdsave(self) + -- Add a cmd button to the view + local cmdsave = cfe({ name="cmdsave", + label="Save/Apply above settings", + value="Save", + type="submit", + }) + return cmdsave +end + +local function displaycmdmanagement(disablestart,disablestop,disablerestart) + -- Add a management buttons + local management = {} + management.start = cfe({ name="cmdmanagement", + label="Program control-panel", + value="Start", + type="submit", + }) + management.stop = cfe({ name="cmdmanagement", + label="Program control-panel", + value="Stop", + type="submit", + }) + management.restart = cfe({ name="cmdmanagement", + label="Program control-panel", + value="Restart", + type="submit", + }) + + -- Disable management buttons based on if the process is running or not + if (disablestart) then management.start.disabled = "yes" end + if (disablestop) then management.stop.disabled = "yes" end + if (disablerestart) then management.restart.disabled = "yes" end + + return management +end + +function status(self) + return { status=getstatus(self) } +end + +function config(self) + local cmdmanagement, cmdmanagementresult + local cmdsavereply = {} + local cmdsaveresult = {} + if ( self.clientdata.cmdmanagement) then + cmdmanagement = cfe({ + name="cmdmanagement", + value=string.lower(self.clientdata.cmdmanagement), + }) + cmdmanagementresult, cmdmanagement = self.model:startstop_service( cmdmanagement ) + end + if ( self.clientdata.cmdsave) then +--[[ + local variables="logfile loglevel smallerlogs maxsize numrotate localandnetworklog remotelogging" -- Advanced-config options +-- local variables="remotelogging" -- Guided-config options + for var in string.gmatch(variables, "%S+") do + -- Send nil instead of "" causes the parameter to be removed/deleted/empty/unset the variable in the config-file + if (self.clientdata[var] == "") then self.clientdata[var] = nil end + cmdsaveresult[var], cmdsavereply[var] = self.model:setconfigs( var,self.clientdata[var] ) + end +--]] + end + + local status = getstatus(self) + local config = self.model.getconfig() + + -- Write out erros from previous cmdsave actions + for k,v in pairs(cmdsaveresult) do + if not (v) then + config[k]["errtxt"] = tostring(cmdsavereply[k]["errtxt"]) + end + end + + -- Display save button + config.cmdsave = displaycmdsave() + + -- Add a test button to the view + config.cmdtest = cfe({ name="cmdtest", + label="Test saved settings", + value="Test", + type="submit", + }) + + -- FIXME: This is temporary disabling the buttons (until they work) + config.cmdsave["disabled"] = "yes" + config.cmdtest["disabled"] = "yes" + +--[[ + -- Management buttons + local disablestart,disablestop,disablerestart + -- Disable management buttons based on if the process is running or not + if (string.lower(status.status.value) == "enabled" ) then + disablestart = "yes" + else + disablestop = "yes" + end + -- Disable management buttons if there exist errors in the config + for k,v in pairs(config) do + if (config[k]["errtxt"] ~= "") then + disablestart = "yes" + disablestop = "yes" + disablerestart = "yes" + break + end + end + -- Display management buttons + local management = displaycmdmanagement(disablestart,disablestop,disablerestart) +--]] + + return { + option={ script=ENV["SCRIPT_NAME"], + prefix=self.conf.prefix, + controller = self.conf.controller, + action = "config", }, + status = status, + cmdmanagement = cmdmanagement, + management = management, + config = config, + debugclientdata = self.clientdata, + } +end + +function expert(self) + local cmdmanagement, cmdmanagementresult + if ( self.clientdata.cmdmanagement) then + cmdmanagement = cfe({ + name="cmdmanagement", + value=string.lower(self.clientdata.cmdmanagement), + }) + cmdmanagementresult, cmdmanagement = self.model:startstop_service( cmdmanagement ) + end + + -- Save changes + local modifications = self.clientdata.filecontent or "" + if ( self.clientdata.cmdsave) then + modifications = self.model:update_filecontent(modifications) + end + + local status = getstatus(self) + local config = self.model:get_filedetails() + + + -- Display save button + config.cmdsave = displaycmdsave() + +--[[ + -- Management buttons + local disablestart,disablestop,disablerestart + -- Disable management buttons based on if the process is running or not + if (string.lower(status.status.value) == "enabled" ) then + disablestart = "yes" + else + disablestop = "yes" + end + -- Disable management buttons if there exist errors in the config + for k,v in pairs(config) do + if (config[k]["errtxt"] ~= "") then + disablestart = "yes" + disablestop = "yes" + disablerestart = "yes" + break + end + end + -- Display management buttons + local management = displaycmdmanagement(disablestart,disablestop,disablerestart) +--]] + return { + option={ script=ENV["SCRIPT_NAME"], + prefix=self.conf.prefix, + controller = self.conf.controller, + action = "expert", }, + cmdmanagement = cmdmanagement, + management = management, + config = config, + status = status, + startstop = startstop, + debugclientdata = self.clientdata, + } + +end + |