module(..., package.seeall) -- ################################################################################ -- LOCAL FUNCTIONS local function list_redir (self) self.conf.action = "status" self.conf.type = "redir" error (self.conf) 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(pidofstatus) -- 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", }) -- next CFE can be used to present the result of the previous action management.actionresult = cfe({ name="actionresult", label="Previous action result", descr="", --Content of this variable is displayed as
 ... 
in BLACK text errtxt="", --Content of this variable is displayed as
 ... 
in RED text }) -- Disable management buttons based on if the process is running or not if (pidofstatus) then management.start.disabled = "yes" else management.stop.disabled = "yes" management.restart.disabled = "yes" end return management end -- ################################################################################ -- PUBLIC FUNCTIONS mvc = {} function mvc.on_load(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 function status(self) return { status=self.model:getstatus(self) } end function expert(self) -- Start/Stop/Restart process local cmdmanagement, actionresult if ( self.clientdata.cmdmanagement) then cmdmanagement = cfe({ name="cmdmanagement", label="Previous action result", action=cfe({ name="cmdmanagement", value=string.lower(self.clientdata.cmdmanagement), -- This row contains start/stop/restart (one of these commands) }), }) actionresult, cmdmanagement = self.model:startstop_service( cmdmanagement.action ) end -- Save changes local modifications = self.clientdata.filecontent or "" if ( self.clientdata.cmdsave) then modifications = self.model:update_filecontent(modifications) end local status = self.model:getstatus(self) local config = self.model:get_filedetails() -- Display save button config.cmdsave = displaycmdsave() ---[[ -- Management buttons (Hide/show buttons local pidofstatus if (string.lower(status.status.value) == "enabled" ) then pidofstatus = true end management = displaycmdmanagement(pidofstatus) if (actionresult) then management.actionresult.descr=cmdmanagement.descr management.actionresult.errtxt=cmdmanagement.errtxt end --]] return { option={ script=ENV["SCRIPT_NAME"], prefix=self.conf.prefix, controller = self.conf.controller, action = "expert", }, management = management, config = config, status = status, } end