build: introduce luci-base
[project/luci.git] / modules / base / luasrc / luasrc / view / cbi / network_netlist.htm
diff --git a/modules/base/luasrc/luasrc/view/cbi/network_netlist.htm b/modules/base/luasrc/luasrc/view/cbi/network_netlist.htm
new file mode 100644 (file)
index 0000000..7e23d14
--- /dev/null
@@ -0,0 +1,81 @@
+<%+cbi/valueheader%>
+
+<%-
+       local utl = require "luci.util"
+       local nwm = require "luci.model.network".init()
+
+       local net, iface
+       local networks = nwm:get_networks()
+       local value = self:formvalue(section)
+
+       self.cast = nil
+
+       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 ipairs(networks) do
+              if (net:name() ~= "loopback") and
+                     (net:name() ~= self.exclude) and
+                     (not self.novirtual or not net:is_virtual())
+                  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 .. "." .. net:name()) ..
+                       attr("name", cbid) .. attr("value", net:name()) ..
+                       ifattr(checked[net:name()], "checked", "checked")
+               %> /> &#160;
+               <label<%=attr("for", cbid .. "." .. net:name())%>>
+                       <span class="ifacebadge"><%=net:name()%>:
+                               <%
+                                       local empty = true
+                                       for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do
+                                               if not iface:is_bridge() then
+                                                       empty = false
+                                %>
+                                       <img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
+                               <% end end %>
+                               <% if empty then %><em><%:(no interfaces attached)%></em><% end %>
+                       </span>
+               </label>
+       </li>
+       <% end end %>
+
+       <% if not self.nocreate 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 .. "_new") .. attr("name", cbid) .. attr("value", "-") .. ifattr(not value and self.widget ~= "checkbox", "checked", "checked")%> /> &#160;
+               <div style="padding:0.5em; display:inline">
+                       <label<%=attr("for", cbid .. "_new")%>><em>
+                               <%- if self.widget == "checkbox" then -%>
+                                       <%:create:%>
+                               <%- else -%>
+                                       <%:unspecified -or- create:%>
+                               <%- end -%>&#160;</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")
+               %> /> &#160;
+               <div style="padding:0.5em; display:inline">
+                       <label<%=attr("for", cbid .. "_uns")%>><em><%:unspecified%></em></label>
+               </div>
+       </li>
+       <% end %>
+</ul>
+
+<%+cbi/valuefooter%>