* luci-0.8: merge cbi error handling fixes
authorJo-Philipp Wich <jow@openwrt.org>
Sat, 6 Sep 2008 22:42:55 +0000 (22:42 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sat, 6 Sep 2008 22:42:55 +0000 (22:42 +0000)
libs/cbi/luasrc/cbi.lua
libs/cbi/luasrc/view/cbi/cell_valueheader.htm
libs/cbi/luasrc/view/cbi/full_valueheader.htm
libs/cbi/luasrc/view/cbi/tblsection.htm
libs/cbi/luasrc/view/cbi/ucisection.htm

index be591a80e733ee864d3b20ad9683d217cdf4b830..57147b63c1d46aa1d0e1001949d7e988c5cad645 100644 (file)
@@ -89,7 +89,11 @@ local function _uvl_validate_section(node, name)
 
        local function tag_fields(e)
                if e.option and node.fields[e.option] then
-                       node.fields[e.option].error = e
+                       if node.fields[e.option].error then
+                               node.fields[e.option].error[name] = e
+                       else
+                               node.fields[e.option].error = { [name] = e }
+                       end
                elseif e.childs then
                        for _, c in ipairs(e.childs) do tag_fields(c) end
                end
@@ -104,7 +108,13 @@ local function _uvl_validate_section(node, name)
                                table.insert( s, c:string() )
                        end
                end
-               if #s > 0 then node.error = s end
+               if #s > 0 then
+                       if node.error then
+                               node.error[name] = s
+                       else
+                               node.error = { [name] = s }
+                       end
+               end
        end
 
        local stat, err = node.map.validator:validate_section(node.config, name, co)
index 9a065a3da5c43897ea3436b787e66f1d1bdbfde1..dda17463cf0bd88a9c0bb64372d7311538c2dc0e 100644 (file)
@@ -13,4 +13,4 @@ $Id$
 
 -%>
 
-<td class="cbi-value-field<% if self.error then %> cbi-value-error<% end %>" id="cbi-<%=self.config.."-"..section.."-"..self.option%>">
+<td class="cbi-value-field<% if self.error and self.error[section] then %> cbi-value-error<% end %>" id="cbi-<%=self.config.."-"..section.."-"..self.option%>">
index fed2412f071bef54a279eb217891a9117ae00f68..cbeda755bf0286fe1773f3a56109630d2382be7b 100644 (file)
@@ -13,7 +13,7 @@ $Id$
 
 -%>
 
-<div class="cbi-value<% if self.error then %> cbi-value-error<% end %>" id="cbi-<%=self.config.."-"..section.."-"..self.option%>">
+<div class="cbi-value<% if self.error and self.error[section] then %> cbi-value-error<% end %>" id="cbi-<%=self.config.."-"..section.."-"..self.option%>">
        <%- if self.title and #self.title > 0 then -%>
        <label class="cbi-value-title"<%= attr("for", cbid) %>>
        <%- if self.titleref then -%><a title="<%=self.titledesc or translate('cbi_gorel')%>" class="cbi-title-ref" href="<%=self.titleref%>"><%- end -%>
index 5a2b247344012d5cd6e5c75742ff6ff19a9939a6..49930f84828dbe57abc76dc8129f6b2b6060dcfc 100644 (file)
@@ -100,7 +100,9 @@ end
 
                <% if self.error then %>
                        <div class="cbi-section-error">
-                               <ul><% for _, e in ipairs(self.error) do %><li><%=luci.util.pcdata(e):gsub("\n","<br />")%></li><% end %></ul>
+                               <ul><% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%>
+                                       <li><%=luci.util.pcdata(e):gsub("\n","<br />")%></li>
+                               <%- end end %></ul>
                        </div>
                <% end %>
 
index feab18e627353f1bd2faddf62f8b8b3f6ab1e9ca..92343bba20acd585db8081993ad2604a9b2a93bc 100644 (file)
@@ -15,9 +15,9 @@ $Id$
 
 <% self:render_children(section, scope or {}) %>
 
-<% if self.error then -%>
+<% if self.error and self.error[section] then -%>
        <div class="cbi-section-error">
-               <ul><% for _, e in ipairs(self.error) do %><li><%=luci.util.pcdata(e):gsub("\n","<br />")%></li><% end %></ul>
+               <ul><% for _, e in ipairs(self.error[section]) do %><li><%=luci.util.pcdata(e):gsub("\n","<br />")%></li><% end %></ul>
        </div>
 <%- end %>