2009-10-08 00:17:40 +00:00
< %+cbi/valueheader%>
< %-
local utl = require "luci.util"
2010-10-30 17:57:49 +00:00
local fwm = require "luci.model.firewall".init()
local nwm = require "luci.model.network".init()
2009-10-08 00:17:40 +00:00
2009-10-10 14:47:37 +00:00
local zone, net, iface
2009-10-08 01:26:09 +00:00
local zones = fwm:get_zones()
2009-10-27 21:42:40 +00:00
local value = self:formvalue(section)
2010-11-07 20:01:12 +00:00
if not value or value == "-" then
value = self:cfgvalue(section) or self.default
end
2009-10-27 21:42:40 +00:00
2009-10-10 14:47:37 +00:00
local selected = false
2009-10-27 21:42:40 +00:00
local checked = { }
2009-10-08 00:17:40 +00:00
2010-11-07 20:01:12 +00:00
for value in utl.imatch(value) do
2010-10-30 17:57:49 +00:00
checked[value] = true
2009-10-27 21:42:40 +00:00
end
2010-11-07 20:01:12 +00:00
if not next(checked) then
checked[""] = true
end
2009-10-08 00:17:40 +00:00
-%>
2009-10-27 21:42:40 +00:00
< ul style = "margin:0; list-style-type:none; text-align:left" >
2010-11-07 20:01:12 +00:00
< % if self.allowlocal then %>
< li style = "padding:0.5em" >
2011-05-03 03:20:15 +00:00
< 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 . . " _empty " ) . . attr ( " name " , cbid ) . . attr ( " value " , " " ) . . ifattr ( checked [ " " ] , " checked " , " checked " ) % > />  
2012-02-15 17:50:25 +00:00
< label < % = attr ( " for " , cbid . . " _empty " ) % > style="background-color:< %=fwm.zone.get_color()%>" class="zonebadge">
2011-12-20 17:51:44 +00:00
< strong > < %:Device%>< / strong >
< % if self.allowany and self.allowlocal then %>(< %:input%>)< % end %>
2011-12-19 20:09:20 +00:00
< / label >
< / li >
< % end %>
< % if self.allowany then %>
< li style = "padding:0.5em" >
< 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 . . " _any " ) . . attr ( " name " , cbid ) . . attr ( " value " , " * " ) . . ifattr ( checked [ " * " ] , " checked " , " checked " ) % > />  
2012-02-15 17:50:25 +00:00
< label < % = attr ( " for " , cbid . . " _any " ) % > style="background-color:< %=fwm.zone.get_color()%>" class="zonebadge">
2011-12-20 17:51:44 +00:00
< strong > < %:Any zone%>< / strong >
< % if self.allowany and self.allowlocal then %>(< %:forward%>)< % end %>
2010-11-07 20:01:12 +00:00
< / label >
< / li >
< % end %>
2009-10-10 14:47:37 +00:00
< %
for _, zone in utl.spairs(zones, function(a,b) return (zones[a]:name() < zones [ b ] :name ( ) ) end ) do
2009-10-27 21:42:40 +00:00
if zone:name() ~= self.exclude then
selected = selected or (value == zone:name())
2009-10-10 14:47:37 +00:00
%>
2009-10-08 00:17:40 +00:00
< li style = "padding:0.5em" >
2011-05-03 03:20:15 +00:00
< 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 . . " . " . . zone:name ( ) ) . . attr ( " name " , cbid ) . . attr ( " value " , zone:name ( ) ) . . ifattr ( checked [ zone:name ( ) ] , " checked " , " checked " ) % > />  
2012-02-15 17:50:25 +00:00
< label < % = attr ( " for " , cbid . . " . " . . zone:name ( ) ) % > style="background-color:< %=zone:get_color()%>" class="zonebadge">
2009-10-08 00:17:40 +00:00
< strong > < %=zone:name()%>:< / strong >
< %
2009-11-01 19:49:07 +00:00
local zempty = true
2009-10-10 14:47:37 +00:00
for _, net in ipairs(zone:get_networks()) do
net = nwm:get_network(net)
2009-10-27 21:42:40 +00:00
if net then
2009-11-09 00:32:36 +00:00
zempty = false
2009-10-27 21:42:40 +00:00
%>
2012-02-15 16:00:23 +00:00
< span class = "ifacebadge<% if net:name() == self.network then %> ifacebadge-active<% end %>" > < %=net:name()%>:
2009-10-27 21:42:40 +00:00
< %
2009-11-09 00:32:36 +00:00
local nempty = true
2011-09-24 03:49:17 +00:00
for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do
2009-12-26 00:09:47 +00:00
nempty = false
2009-10-27 21:42:40 +00:00
%>
< 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" />
2009-12-26 00:09:47 +00:00
< % end %>
2010-11-07 20:01:12 +00:00
< % if nempty then %>< em > < %:(empty)%>< / em > < % end %>
2009-10-27 21:42:40 +00:00
< / span >
< % end end %>
2010-11-07 20:01:12 +00:00
< % if zempty then %>< em > < %:(empty)%>< / em > < % end %>
2009-10-08 00:17:40 +00:00
< / label >
< / li >
2009-10-27 21:42:40 +00:00
< % end end %>
2009-10-08 00:17:40 +00:00
2009-10-27 21:42:40 +00:00
< % if self.widget ~= "checkbox" and not self.nocreate then %>
2009-10-08 00:17:40 +00:00
< li style = "padding:0.5em" >
2011-05-03 03:20:15 +00:00
< 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 selected , " checked " , " checked " ) % > />  
2012-02-15 17:50:25 +00:00
< div onclick = "document.getElementById('<%=cbid%>_new').checked=true" class = "zonebadge" style = "background-color:<%=fwm.zone.get_color()%>" >
< em > < %:unspecified -or- create:%>  < / em >
< input type = "text" < % = attr ( " name " , cbid . . " . newzone " ) . . ifattr ( not selected , " value " , luci . http . formvalue ( cbid . . " . newzone " ) or self . default ) % > onfocus="document.getElementById('< %=cbid%>_new').checked=true" />
2009-10-08 00:17:40 +00:00
< / div >
< / li >
2009-10-10 14:47:37 +00:00
< % end %>
2009-10-08 00:17:40 +00:00
< / ul >
< %+cbi/valuefooter%>