diff options
author | Mika Havela <mika.havela@gmail.com> | 2007-12-20 14:09:36 +0000 |
---|---|---|
committer | Mika Havela <mika.havela@gmail.com> | 2007-12-20 14:09:36 +0000 |
commit | 790fc5c495d8f5dc428fdd8964500e24d7bd2014 (patch) | |
tree | caf8a84f4fa780d80c0296c7e05e4c3f6315d022 | |
parent | 1ab9d16c73cce05f6c4488b22fd40ac4d228a9fd (diff) | |
download | acf-alpine-baselayout-790fc5c495d8f5dc428fdd8964500e24d7bd2014.tar.bz2 acf-alpine-baselayout-790fc5c495d8f5dc428fdd8964500e24d7bd2014.tar.xz |
Gives you alternative to change skin
git-svn-id: svn://svn.alpinelinux.org/acf/alpine-baselayout/trunk@427 ab2d0c66-481e-0410-8bed-d214d4d58bed
-rw-r--r-- | skins-controller.lua | 31 | ||||
-rw-r--r-- | skins-model.lua | 62 | ||||
-rw-r--r-- | skins-read-html.lsp | 16 | ||||
-rw-r--r-- | skins.menu | 2 |
4 files changed, 111 insertions, 0 deletions
diff --git a/skins-controller.lua b/skins-controller.lua new file mode 100644 index 0000000..bf7a02a --- /dev/null +++ b/skins-controller.lua @@ -0,0 +1,31 @@ +module (..., package.seeall) + +-- Cause an http redirect to our "read" action +-- We use the self.conf table because it already has prefix,controller,etc +-- The redir code is defined in the application error handler (acf-controller) +local list_redir = function (self) + self.conf.action = "read" + 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 + +-- Public methods + +read = function (self ) + return ({skin = self.model:get(), url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller} ) +end + +update = function (self ) + local newskin = self.clientdata.skin or "" + local updated = self.model:update(newskin) + list_redir(self) +-- return ({skin = self.model:get(), updated=self.model:update(newskin), url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller} ) +end + diff --git a/skins-model.lua b/skins-model.lua new file mode 100644 index 0000000..dc9d5fb --- /dev/null +++ b/skins-model.lua @@ -0,0 +1,62 @@ +-- acf model for displaying logfiles recusivly +module (..., package.seeall) + +-- no initializer in model - use controller.init for that + +local function set_skins(skin) +--local addremove_opts = function ( addremove, file, variable, option ) +-- if (string.lower(addremove) == "remove" ) then + cmdtxt = "/bin/sed -i 's/skin=.*/skin=" .. skin .. "/' /etc/acf/acf.conf" +-- /bin/sed 's/skin=.*/skin=plupp/' /etc/acf/acf.conf + local cmd, error = io.popen ( cmdtxt ) + local cmdoutput = cmd:read("*a") + cmd:close() + -- Cleanup the variable by removing unneccesary blanks +-- cmdtxt = "/bin/sed -i 's/\\\"\\ /\\\"/g' " .. file +-- cmdtxt = cmdtxt .. ";/bin/sed -i 's/\\ \\\"/\\\"/g' " .. file +-- local cmd, error = io.popen ( cmdtxt ) +-- cmd:close() +-- elseif (string.lower(addremove) == "add" ) then +-- cmdtxt = "/bin/sed -i 's/\\(" .. variable .. ".*\\)\\\"/\\1" .. option .. " \\\"/' " .. file +-- local cmd, error = io.popen ( cmdtxt ) +-- local cmdoutput = cmd:read("*a") +-- cmd:close() +-- end + return cmdtxt +end + +local function list_skins() + local path = "/usr/share/acf/www/" + local skinarray = {} + local skins = {} + local k,v + for k,v in pairs(posix.dir(path) or {}) do + -- Ignore files that begins with a '.' and 'cgi-bin' and only list folders + if not ((string.match(v, "^%.")) or (string.match(v, "^cgi[-]bin")) or (posix.stat(path .. v).type ~= "directory")) then + local f = v + local current = conf.skin + if (current == f) then + table.insert(skinarray, {name=f, inuse="In use"}) + else + table.insert(skinarray, {name=f}) + end + end + end + return skinarray +end + + +get = function (self) + return list_skins() +end + +update = function (self,skin) + local availableskins = list_skins() +-- for k,v in pars(availableskins.skinarray.name) do +-- if ( availableskins[k].name == skin) then + return set_skins(skin) +-- end +-- end +end + + diff --git a/skins-read-html.lsp b/skins-read-html.lsp new file mode 100644 index 0000000..690d339 --- /dev/null +++ b/skins-read-html.lsp @@ -0,0 +1,16 @@ +<? local view = ... ?> +<html> +<body> +<h1>Available skins</h1> + +<? for i = 1, table.maxn(view.skin) do ?> + <dt><?= view.skin[i].name ?></dt> + <? if (view.skin[i].inuse) then ?> + <dd><?= view.skin[i].inuse ?></dd> + <? else ?> + <dd>[<a href="update?skin=<?= view.skin[i].name ?>">use this skin</a>]</dd> + <? end ?> +<? end ?> + +</body> +</html> diff --git a/skins.menu b/skins.menu new file mode 100644 index 0000000..9b7042c --- /dev/null +++ b/skins.menu @@ -0,0 +1,2 @@ +#CAT GROUP/DESC TAB ACTION +Setup 99Skins Skins read |