summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Havela <mika.havela@gmail.com>2007-12-20 14:09:36 +0000
committerMika Havela <mika.havela@gmail.com>2007-12-20 14:09:36 +0000
commit790fc5c495d8f5dc428fdd8964500e24d7bd2014 (patch)
treecaf8a84f4fa780d80c0296c7e05e4c3f6315d022
parent1ab9d16c73cce05f6c4488b22fd40ac4d228a9fd (diff)
downloadacf-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.lua31
-rw-r--r--skins-model.lua62
-rw-r--r--skins-read-html.lsp16
-rw-r--r--skins.menu2
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