summaryrefslogtreecommitdiffhomepage
path: root/core/src
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-04-21 21:27:53 +0000
committerSteven Barth <steven@midlink.org>2008-04-21 21:27:53 +0000
commitede263b76901345d686eb1c1010d949a711df540 (patch)
treecd2302ee32604062796879ff041151229ea02466 /core/src
parent4963efa8522b5b491aecf2cc503a204b82caf693 (diff)
* CBI: Changed parser to list UCI sections in order of their appearance
Diffstat (limited to 'core/src')
-rw-r--r--core/src/ffluci/cbi.lua11
-rw-r--r--core/src/ffluci/model/uci.lua15
-rw-r--r--core/src/ffluci/view/cbi/tsection.htm2
3 files changed, 17 insertions, 11 deletions
diff --git a/core/src/ffluci/cbi.lua b/core/src/ffluci/cbi.lua
index 7a50189992..435977a172 100644
--- a/core/src/ffluci/cbi.lua
+++ b/core/src/ffluci/cbi.lua
@@ -147,6 +147,7 @@ function Map.add(self, sectiontype)
if name then
self.ucidata[name] = {}
self.ucidata[name][".type"] = sectiontype
+ table.insert(self.ucidata[".order"], name)
end
return name
end
@@ -163,6 +164,7 @@ function Map.set(self, section, option, value)
self.ucidata[section] = {}
end
self.ucidata[section][".type"] = val
+ table.insert(self.ucidata[".order"], section)
end
end
return stat
@@ -360,10 +362,11 @@ end
-- Return all matching UCI sections for this TypedSection
function TypedSection.cfgsections(self)
local sections = {}
- for k, v in pairs(self.map:get()) do
- if v[".type"] == self.sectiontype then
+ local map = self.map:get()
+ for i, k in pairs(map[".order"]) do
+ if map[k][".type"] == self.sectiontype then
if self:checkscope(k) then
- sections[k] = v
+ table.insert(sections, k)
end
end
end
@@ -435,7 +438,7 @@ function TypedSection.parse(self)
end
end
- for k, v in pairs(self:cfgsections()) do
+ for i, k in ipairs(self:cfgsections()) do
AbstractSection.parse_dynamic(self, k)
if ffluci.http.formvalue("cbi.submit") then
Node.parse(self, k)
diff --git a/core/src/ffluci/model/uci.lua b/core/src/ffluci/model/uci.lua
index 8286597807..0e3a79fcbe 100644
--- a/core/src/ffluci/model/uci.lua
+++ b/core/src/ffluci/model/uci.lua
@@ -161,23 +161,26 @@ function Session._uci3(self, cmd)
return nil, res[1]
end
- table = {}
+ tbl = {}
for k,line in pairs(res) do
c, s, t = line:match("^([^.]-)%.([^.]-)=(.-)$")
if c then
- table[c] = table[c] or {}
- table[c][s] = {}
- table[c][s][".type"] = t
+ tbl[c] = tbl[c] or {}
+ tbl[c][".order"] = tbl[c][".order"] or {}
+
+ tbl[c][s] = {}
+ table.insert(tbl[c][".order"], s)
+ tbl[c][s][".type"] = t
end
c, s, o, v = line:match("^([^.]-)%.([^.]-)%.([^.]-)=(.-)$")
if c then
- table[c][s][o] = v
+ tbl[c][s][o] = v
end
end
- return table
+ return tbl
end
-- Build path (config.section.option=value) and prevent command injection
diff --git a/core/src/ffluci/view/cbi/tsection.htm b/core/src/ffluci/view/cbi/tsection.htm
index 8da0b4a1da..666c14b2e6 100644
--- a/core/src/ffluci/view/cbi/tsection.htm
+++ b/core/src/ffluci/view/cbi/tsection.htm
@@ -1,7 +1,7 @@
<div class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
<h2><%=self.title%></h2>
<div class="cbi-section-descr"><%=self.description%></div>
-<% for k, v in pairs(self:cfgsections()) do%>
+<% for i, k in ipairs(self:cfgsections()) do%>
<% if self.addremove then %><div class="cbi-section-remove right">
<input type="submit" name="cbi.rts.<%=self.config%>.<%=k%>" value="<%:cbi_del Eintrag entfernen%>" />
</div><% end %>