* CBI updates
authorSteven Barth <steven@midlink.org>
Sat, 22 Mar 2008 19:46:14 +0000 (19:46 +0000)
committerSteven Barth <steven@midlink.org>
Sat, 22 Mar 2008 19:46:14 +0000 (19:46 +0000)
* Made dispatching paths unambiguous

src/ffluci/cbi.lua
src/ffluci/dispatcher.lua
src/ffluci/view/cbi/footer.htm [new file with mode: 0644]
src/ffluci/view/cbi/header.htm [new file with mode: 0644]
src/ffluci/view/cbi/map.htm
src/ffluci/view/cbi/nsection.htm
src/ffluci/view/cbi/tsection.htm
src/ffluci/view/header.htm
src/ffluci/view/index/index.htm [deleted file]
src/ffluci/view/public_index/index.htm [new file with mode: 0644]

index 5a20aad..85b9f49 100644 (file)
@@ -86,6 +86,12 @@ function Node.render(self)
        ffluci.template.render(self.template, {self=self})
 end
 
+function Node.render_children(self)
+       for k, node in ipairs(self.children) do
+               node:render()
+       end
+end
+
 
 --[[
 Map - A map describing a configuration file 
@@ -175,6 +181,23 @@ function TypedSection.__init__(self, ...)
        self.valid     = nil
 end
 
+function TypedSection.render_children(self, section)
+       for k, node in ipairs(self.children) do
+               node.section = section
+               node:render()
+       end
+end
+
+function TypedSection.ucisections(self)
+       local sections = {}
+       for k, v in pairs(self.map:read()) do
+               if v[".type"] == self.sectiontype then
+                       sections[k] = v
+               end
+       end
+       return sections 
+end
+
 
 --[[
 AbstractValue - An abstract Value Type
index 0f05c3d..f3a62bb 100644 (file)
@@ -167,13 +167,15 @@ function cbi(request)
        local tmpl = require("ffluci.template")
        local cbi  = require("ffluci.cbi")
        
+       local path = request.category.."_"..request.module.."/"..request.action
+       
        i18n.loadc(request.module)
        
-       stat, map = pcall(cbi.load, request.module.."/"..request.action)
+       stat, map = pcall(cbi.load, path)
        if stat then
-               tmpl.render("header")
+               tmpl.render("cbi/header")
                map:render()
-               tmpl.render("footer")
+               tmpl.render("cbi/footer")
        else
                disp.error404()
        end
@@ -195,15 +197,16 @@ function dynamic(request)
                return
        end
        
-       if pcall(tmpl.render, request.module .. "/" .. request.action) then
+       local path = request.category.."_"..request.module.."/"..request.action
+       if pcall(tmpl.render, path) then
                return
        end
        
-       stat, map = pcall(cbi.load, request.module.."/"..request.action)
+       stat, map = pcall(cbi.load, path)
        if stat then
-               tmpl.render("header")
+               tmpl.render("cbi/header")
                map:render()
-               tmpl.render("footer")
+               tmpl.render("cbi/footer")
                return
        end     
        
@@ -217,8 +220,10 @@ function simpleview(request)
        local tmpl = require("ffluci.template")
        local disp = require("ffluci.dispatcher")
        
+       local path = request.category.."_"..request.module.."/"..request.action
+       
        i18n.loadc(request.module)
-       if not pcall(tmpl.render, request.module .. "/" .. request.action) then
+       if not pcall(tmpl.render, path) then
                disp.error404()
        end
 end
\ No newline at end of file
diff --git a/src/ffluci/view/cbi/footer.htm b/src/ffluci/view/cbi/footer.htm
new file mode 100644 (file)
index 0000000..e8ef8fe
--- /dev/null
@@ -0,0 +1,2 @@
+               </form>
+<%+footer%>
\ No newline at end of file
diff --git a/src/ffluci/view/cbi/header.htm b/src/ffluci/view/cbi/header.htm
new file mode 100644 (file)
index 0000000..bd3607f
--- /dev/null
@@ -0,0 +1,2 @@
+<%+header%>
+               <form method="post" action="<%=os.getenv("REQUEST_URI")%>">
index b724ffc..e6884f1 100644 (file)
@@ -1,10 +1,8 @@
-               <div class="cbi-map" id="cbi-<%=self.config%>">
-                       <form method="post" action="<%=os.getenv("REQUEST_URI")%>">
+                       <div class="cbi-map" id="cbi-<%=self.config%>">
                                <h1><%=self.title%></h1>
                                <div class="cbi-map-descr"><%=self.description%></div>
                                <br />
-<% for k, node in ipairs(self.children) do node:render() end %>
+<% self:render_children() %>
                                <br />
                                <input type="submit" /> <input type="reset" />
-                       </form>
-               </div>
+                       </div>
index e002c68..84f893d 100644 (file)
@@ -2,6 +2,6 @@
                                        <h2><%=self.title%></h2>
                                        <div class="cbi-nsection-descr"><%=self.description%></div>
                                        <div class="cbi-nsection-options">
-<% for k, node in ipairs(self.children) do node:render() end %>
+<% self:render_children() %>
                                        </div>
                                </div>
index b613f62..bd19ecf 100644 (file)
@@ -1,21 +1,11 @@
-<%
-local allsections = self.map:read()
-local sections = {}
-for k, v in pairs(allsections) do
-       if v[".type"] == self.sectiontype then
-               sections[k] = v
-       end
-end 
-%>
                                <div class="cbi-tsection" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
                                        <h2><%=self.title%></h2>
                                        <div class="cbi-tsection-descr"><%=self.description%></div>
-<% for k, v in pairs(sections) do %>
-                                       <div class="cbi-tsection-node" id="cbi-<%=self.config%>-<%=k%>">
-<% for i, node in ipairs(self.children) do
-       node.section = k
-       node:render()
-end %>
-                                       </div>
+<% for k, v in pairs(self:ucisections()) do%>
+                                       <fieldset class="cbi-tsection-node" id="cbi-<%=self.config%>-<%=k%>">
+                                               <% if not self.anonymous then %><legend><%=k%></legend><% end %>
+<% self:render_children(k) %>
+                                       </fieldset>
+                                       <br />
 <% end %>
                                </div>
index cef95b3..2af577a 100644 (file)
@@ -10,6 +10,7 @@ require("ffluci.http").htmlheader()
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <link rel="stylesheet" type="text/css" href="<%=media%>/cascade.css" />
+<link rel="stylesheet" type="text/css" href="<%=media%>/css/<%=req.category%>_<%=req.module%>.css" />
 <title>FFLuCI</title>
 <% if addheaders then write(addheaders) end %>
 </head>
@@ -56,4 +57,4 @@ require("ffluci.http").htmlheader()
                <div>Konfiguration<ul><li>x ├änderungen</li><li>Anwenden</li><li>Zur├╝cksetzen</li></ul></div>
                <% end %>
        </div>
-       <div id="content">
+       <div id="content">
\ No newline at end of file
diff --git a/src/ffluci/view/index/index.htm b/src/ffluci/view/index/index.htm
deleted file mode 100644 (file)
index a186132..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<%+header%>
-<h1><%:hello Hallo!%></h1>
-<p><%:welcome1 Dies ist der Funknetzknoten %>
-<em><%=require("ffluci.sys").hostname()%></em>!</p>
-<p><em>ToDo: Intelligenter Einleitungstext</em></p>
-<%+footer%>
\ No newline at end of file
diff --git a/src/ffluci/view/public_index/index.htm b/src/ffluci/view/public_index/index.htm
new file mode 100644 (file)
index 0000000..a186132
--- /dev/null
@@ -0,0 +1,6 @@
+<%+header%>
+<h1><%:hello Hallo!%></h1>
+<p><%:welcome1 Dies ist der Funknetzknoten %>
+<em><%=require("ffluci.sys").hostname()%></em>!</p>
+<p><em>ToDo: Intelligenter Einleitungstext</em></p>
+<%+footer%>
\ No newline at end of file