Fallback to working theme if selected one does not exist
authorSteven Barth <steven@midlink.org>
Mon, 29 Sep 2008 15:38:13 +0000 (15:38 +0000)
committerSteven Barth <steven@midlink.org>
Mon, 29 Sep 2008 15:38:13 +0000 (15:38 +0000)
libs/web/luasrc/dispatcher.lua

index 236bc9c15dea5102d8aac8963d5ddfc93b773848..fc568969b209432c53540bf5fb755494213880ed 100644 (file)
@@ -163,6 +163,18 @@ function dispatch(request)
        -- Init template engine
        if not track.notemplate then
                local tpl = require("luci.template")
+               local media = luci.config.main.mediaurlbase
+               if not pcall(tpl.Template, "themes/%s/header" % fs.basename(media)) then
+                       media = nil
+                       for name, theme in pairs(luci.config.themes) do
+                               if name:sub(1,1) ~= "." and pcall(tpl.Template,
+                                "themes/%s/header" % fs.basename(theme)) then
+                                       media = theme
+                               end
+                       end
+                       assert(media, "No valid theme found")
+               end
+
                local viewns = setmetatable({}, {__index=_G})
                tpl.context.viewns = viewns
                viewns.write       = luci.http.write
@@ -170,7 +182,7 @@ function dispatch(request)
                viewns.translate   = function(...) return require("luci.i18n").translate(...) end
                viewns.striptags   = util.striptags
                viewns.controller  = luci.http.getenv("SCRIPT_NAME")
-               viewns.media       = luci.config.main.mediaurlbase
+               viewns.media       = media
                viewns.resource    = luci.config.main.resourcebase
                viewns.REQUEST_URI = (luci.http.getenv("SCRIPT_NAME") or "") .. (luci.http.getenv("PATH_INFO") or "")
        end