diff options
author | Steven Barth <steven@midlink.org> | 2008-04-21 21:27:53 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-04-21 21:27:53 +0000 |
commit | ede263b76901345d686eb1c1010d949a711df540 (patch) | |
tree | cd2302ee32604062796879ff041151229ea02466 /core/src | |
parent | 4963efa8522b5b491aecf2cc503a204b82caf693 (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.lua | 11 | ||||
-rw-r--r-- | core/src/ffluci/model/uci.lua | 15 | ||||
-rw-r--r-- | core/src/ffluci/view/cbi/tsection.htm | 2 |
3 files changed, 17 insertions, 11 deletions
diff --git a/core/src/ffluci/cbi.lua b/core/src/ffluci/cbi.lua index 7a5018999..435977a17 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 828659780..0e3a79fcb 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 8da0b4a1d..666c14b2e 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 %> |