* CBI updates

* Made dispatching paths unambiguous
This commit is contained in:
Steven Barth 2008-03-22 19:46:14 +00:00
parent c8426cfa3c
commit 93c55f3c5d
9 changed files with 52 additions and 31 deletions

View 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

View 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

View file

@ -0,0 +1,2 @@
</form>
<%+footer%>

View file

@ -0,0 +1,2 @@
<%+header%>
<form method="post" action="<%=os.getenv("REQUEST_URI")%>">

View 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>

View 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>

View 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>

View 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">