libs/web: add field validation for add section name inputs
[project/luci.git] / libs / web / luasrc / view / cbi / network_netlist.htm
index c47b3a7..4be92b9 100644 (file)
@@ -15,7 +15,7 @@ $Id$
 
 <%-
        local utl = require "luci.util"
-       local nwm = require "luci.model.network"
+       local nwm = require "luci.model.network".init()
 
        local net, iface
        local networks = nwm:get_networks()
@@ -24,13 +24,23 @@ $Id$
        if not value or value == "-" then
                value = self:cfgvalue(section) or self.default
        end
+
+       local checked = { }
+       for value in utl.imatch(value) do
+               checked[value] = true
+       end
 -%>
 
 <ul style="margin:0; list-style-type:none; text-align:left">
-       <% for _, net in utl.spairs(networks, function(a,b) return (networks[a]:name() < networks[b]:name()) end) do
-              if net:name() ~= "loopback" then %>
+       <% for _, net in ipairs(networks) do
+              if net:name() ~= "loopback" and net:name() ~= self.exclude then %>
        <li style="padding:0.25em 0">
-               <input class="cbi-input-radio" onclick="cbi_d_update(this.id)" onchange="cbi_d_update(this.id)"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "." .. net:name()) .. attr("name", cbid) .. attr("value", net:name()) .. ifattr(value == net:name(), "checked", "checked")%> /> &nbsp;
+               <input class="cbi-input-<%=self.widget or "radio"%>" onclick="cbi_d_update(this.id)" onchange="cbi_d_update(this.id)"<%=
+                       attr("type", self.widget or "radio") ..
+                       attr("id", cbid .. "." .. net:name()) ..
+                       attr("name", cbid) .. attr("value", net:name()) ..
+                       ifattr(checked[net:name()], "checked", "checked")
+               %> /> &nbsp;
                <label<%=attr("for", cbid .. "." .. net:name())%>>
                        &nbsp;<span style="background-color:#FFFFFF; border:1px solid #CCCCCC; padding:2px"><%=net:name()%>:
                                <%
@@ -49,12 +59,25 @@ $Id$
 
        <% if self.widget ~= "checkbox" and not self.nocreate then %>
        <li style="padding:0.25em 0">
-               <input class="cbi-input-radio" onclick="cbi_d_update(this.id)" onchange="cbi_d_update(this.id)" type="radio"<%=attr("id", cbid .. "_new") .. attr("name", cbid) .. attr("value", "-") .. ifattr(not value, "checked", "checked")%> /> &nbsp;
+               <input class="cbi-input-<%=self.widget or "radio"%>" onclick="cbi_d_update(this.id)" onchange="cbi_d_update(this.id)" type="radio"<%=attr("id", cbid .. "_new") .. attr("name", cbid) .. attr("value", "-") .. ifattr(not value, "checked", "checked")%> /> &nbsp;
                <div style="padding:0.5em; display:inline">
                        <label<%=attr("for", cbid .. "_new")%>><em><%:unspecified -or- create:%>&nbsp;</em></label>
                        <input style="width:6em" type="text"<%=attr("name", cbid .. ".newnet")%> onfocus="document.getElementById('<%=cbid%>_new').checked=true" />
                </div>
        </li>
+       <% elseif self.widget ~= "checkbox" and self.unspecified then %>
+       <li style="padding:0.25em 0">
+               <input class="cbi-input-<%=self.widget or "radio"%>" onclick="cbi_d_update(this.id)" onchange="cbi_d_update(this.id)"<%=
+                       attr("type", self.widget or "radio") ..
+                       attr("id", cbid .. "_uns") ..
+                       attr("name", cbid) ..
+                       attr("value", "") ..
+                       ifattr(not value or #value == 0, "checked", "checked")
+               %> /> &nbsp;
+               <div style="padding:0.5em; display:inline">
+                       <label<%=attr("for", cbid .. "_uns")%>><em><%:unspecified%></em></label>
+               </div>
+       </li>
        <% end %>
 </ul>