From f669bf6ec4bb0b49b123dd31db6998c4be914454 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Thu, 21 Jan 2010 13:12:12 +0000 Subject: Changes to skins to allow user skins to be added page_info.skindir is no longer available to views, but staticdir is. --- Makefile | 4 ++++ acf.conf | 11 +++++++---- app/acf-util/password-status-html.lsp | 2 +- app/acf-util/roles-viewroles-html.lsp | 4 ++-- app/acf-util/skins-model.lua | 21 +++++++++++---------- app/acf_www-controller.lua | 2 +- app/template-html.lsp | 6 +++--- lib/viewfunctions.lua | 4 ++-- 8 files changed, 31 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index b28dff9..b48805b 100644 --- a/Makefile +++ b/Makefile @@ -52,5 +52,9 @@ phony+=install install: install-recursive $(CONF_FILES) mkdir -p $(DESTDIR)/etc/acf cp $(CONF_FILES) $(DESTDIR)/etc/acf + mkdir -p $(DESTDIR)/etc/acf/skins + ln -s $(DESTDIR)/etc/acf/skins $(DESTDIR)/$(wwwdir)/userskins + +include config.mk .PHONY: $(phony) diff --git a/acf.conf b/acf.conf index 19c3dbd..e0fbff6 100644 --- a/acf.conf +++ b/acf.conf @@ -1,13 +1,16 @@ # Configuration file for Alpine Configuration Framework # Directories where the application resides -# appdir and libdir may be comma-separated lists +# appdir, libdir, and skindir may be comma-separated lists # paths are checked from left to right # for .lua and .lsp files - the first found file will be used # for .roles and .menu files - all files will be combined appdir=/usr/share/acf/app/ libdir=/usr/share/acf/lib/ wwwdir=/usr/share/acf/www/ +staticdir=/skins/static/ +skindir=/skins/,/userskins/ +# skins are found in subdirectories of wwwdir/skindir # sessiondir is where the session state files are stored sessiondir=/tmp/ @@ -16,9 +19,9 @@ sessiondir=/tmp/ # only applies to web access, client access will always use system logger logfile = /var/log/acf.log -# ACF is skinnable - these specifiy the active skin -skindir=/skins/ -skin=alps +# ACF is skinnable - this specifies the active skin +# will attempt to load skin/basename(skin).css +skin=/skins/alps # Auditing can be done before and/or after a commit (controller permitting) # ${TEMPFILE} and ${CONFFILE} are used precommit diff --git a/app/acf-util/password-status-html.lsp b/app/acf-util/password-status-html.lsp index 4a34fab..a26bdee 100644 --- a/app/acf-util/password-status-html.lsp +++ b/app/acf-util/password-status-html.lsp @@ -12,7 +12,7 @@

Existing account

<% for name,user in pairs(form.value) do %> -
<%= html.html_escape(name) %>
+
<%= html.html_escape(name) %>
diff --git a/app/acf-util/roles-viewroles-html.lsp b/app/acf-util/roles-viewroles-html.lsp index b2c5aa7..c7d6fc5 100644 --- a/app/acf-util/roles-viewroles-html.lsp +++ b/app/acf-util/roles-viewroles-html.lsp @@ -15,7 +15,7 @@
<%= html.html_escape(user.value.userid.label) %>
<% if view.value.defined_roles then %> <% for x,role in pairs(view.value.defined_roles.value) do %> -
<%= html.html_escape(role) %>
+
<%= html.html_escape(role) %>
[View this role] [Edit this role] @@ -25,7 +25,7 @@ <% end %> <% if view.value.default_roles then %> <% for x,role in pairs(view.value.default_roles.value) do %> -
<%= html.html_escape(role) %>
+
<%= html.html_escape(role) %>
[View this role] [Edit this role] diff --git a/app/acf-util/skins-model.lua b/app/acf-util/skins-model.lua index 8b5a57e..860a943 100644 --- a/app/acf-util/skins-model.lua +++ b/app/acf-util/skins-model.lua @@ -1,4 +1,3 @@ --- acf model for displaying logfiles recusivly module (..., package.seeall) require("fs") @@ -7,9 +6,9 @@ require("format") local function set_skins(self, skin) local content = "\n"..(fs.read_file(self.conf.conffile) or "") local count - content,count = string.gsub(content, "\n%s*skin%s*=[^\n]*", "\nskin="..format.escapespecialcharacters(skin)) + content,count = string.gsub(content, "\n%s*skin%s*=[^\n]*", "\nskin="..skin) if count == 0 then - content = "\nskin="..format.escapespecialcharacters(skin)..content + content = "\nskin="..skin..content end fs.write_file(self.conf.conffile, string.sub(content,2)) local cmdoutput = "New skin selected" @@ -18,13 +17,15 @@ end local function list_skins(self) local skinarray = {} - for i,file in ipairs(posix.dir(self.conf.wwwdir ..self.conf.skindir) or {}) do - -- Ignore files that begins with a '.' and 'cgi-bin' and only list folders - if not ((string.match(file, "^%.")) or (string.match(file, "^cgi[-]bin")) or (string.match(file, "^static")) or (posix.stat(self.conf.wwwdir .. self.conf.skindir .. file).type ~= "directory")) then - local entry = cfe({ value=file, label="Skin name" }) - local current = conf.skin - entry.inuse = (file == current) - table.insert(skinarray, entry) + for skin in string.gmatch(self.conf.skindir, "[^,]+") do + for i,file in ipairs(posix.dir(self.conf.wwwdir ..skin) or {}) do + -- Ignore files that begins with a '.' and 'cgi-bin' and only list folders + if not ((string.match(file, "^%.")) or (string.match(file, "^cgi[-]bin")) or (string.match(file, "^static")) or (posix.stat(self.conf.wwwdir .. skin .. file).type ~= "directory")) then + local entry = cfe({ value=skin..file, label="Skin name" }) + local current = conf.skin + entry.inuse = (file == current) + table.insert(skinarray, entry) + end end end return cfe({ type="list", value=skinarray, label="Skins" }) diff --git a/app/acf_www-controller.lua b/app/acf_www-controller.lua index ab6dddb..0b6d80d 100644 --- a/app/acf_www-controller.lua +++ b/app/acf_www-controller.lua @@ -221,7 +221,7 @@ local view_resolver = function(self) prefix = self.conf.prefix, script = self.conf.script, appname = self.conf.appname, - skindir = self.conf.skindir or "", + staticdir = self.conf.staticdir or "", skin = self.conf.skin or "", orig_action = self.conf.orig_action or self.conf.prefix .. self.conf.controller .. "/" .. self.conf.action, clientdata = self.clientdata, diff --git a/app/template-html.lsp b/app/template-html.lsp index 2b0d58c..0490b0b 100644 --- a/app/template-html.lsp +++ b/app/template-html.lsp @@ -23,10 +23,10 @@ if viewlibrary and viewlibrary.dispatch_component then end %> <%= html.html_escape(hostname .. " - " .. pageinfo.controller .. "->" .. pageinfo.action) %> - -"> + +"> diff --git a/lib/viewfunctions.lua b/lib/viewfunctions.lua index a45831c..f827cff 100644 --- a/lib/viewfunctions.lua +++ b/lib/viewfunctions.lua @@ -220,7 +220,7 @@ function displaypagination(page_data, page_info) io.write('
Pages:') local p = page_data.page if p > 1 then - io.write("") + io.write("") pagelink(1) end local links = {(p-3)-(p-3)%10, p-2, p-1, p, p+1, p+2, (p+12)-(p+12)%10} @@ -237,7 +237,7 @@ function displaypagination(page_data, page_info) end if p") + io.write("") end io.write("
") end -- cgit v1.2.3