luci-0.10: merge r6709-r6717
authorJo-Philipp Wich <jow@openwrt.org>
Thu, 13 Jan 2011 22:40:27 +0000 (22:40 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Thu, 13 Jan 2011 22:40:27 +0000 (22:40 +0000)
applications/luci-ffwizard/luasrc/model/cbi/ffwizard.lua
applications/luci-radvd/luasrc/model/cbi/radvd.lua
applications/luci-radvd/luasrc/model/cbi/radvd/interface.lua
applications/luci-radvd/luasrc/model/cbi/radvd/prefix.lua
applications/luci-radvd/luasrc/model/cbi/radvd/rdnss.lua
applications/luci-radvd/luasrc/model/cbi/radvd/route.lua
build/mkbasepot.sh [new file with mode: 0755]
contrib/package/luci/Makefile
libs/web/luasrc/view/cbi/lvalue.htm
libs/web/luasrc/view/cbi/tblsection.htm
modules/freifunk/root/etc/config/freifunk

index d2a051d..d290d93 100644 (file)
@@ -24,7 +24,6 @@ local sys = require "luci.sys"
 local ip = require "luci.ip"
 local fs  = require "nixio.fs"
 
-
 local has_pptp  = fs.access("/usr/sbin/pptp")
 local has_pppoe = fs.glob("/usr/lib/pppd/*/rp-pppoe.so")()
 local has_l2gvpn  = fs.access("/usr/sbin/node")
@@ -32,6 +31,8 @@ local has_radvd  = fs.access("/etc/config/radvd")
 local has_rom  = fs.access("/rom/etc")
 local has_autoipv6  = fs.access("/usr/bin/auto-ipv6")
 local has_qos  = fs.access("/etc/init.d/qos")
+local has_ipv6 = fs.access("/proc/sys/net/ipv6")
+local has_hb = fs.access("/sbin/heartbeat")
 
 luci.i18n.loadc("freifunk")
 
@@ -108,6 +109,7 @@ net_lat = f:field(ListValue, "net_lat", "", "")
 net_lat:depends("net", "0")
 net_lon = f:field(ListValue, "net_lon", "", "")
 net_lon:depends("net", "0")
+
 uci:foreach("freifunk", "community", function(s)
        if s.latitude then
                net_lat:value(s[".name"], "%s" % {s.latitude or "?"})
@@ -219,12 +221,15 @@ uci:foreach("wireless", "wifi-device",
                                        uci:save("freifunk")
                                end
                        end
-               local meship6 = f:field(Value, "meship6_" .. device, device:upper() .. "  Mesh IPv6 Adresse einrichten", "Ihre Mesh IP Adresse wird automatisch berechnet")
+               if has_ipv6 then
+                       local meship6 = f:field(Value, "meship6_" .. device, device:upper() .. "  Mesh IPv6 Adresse einrichten", "Ihre Mesh IP Adresse wird automatisch berechnet")
                        meship6:depends("device_" .. device, "1")
                        meship6.rmempty = true
                        function meship6.cfgvalue(self, section)
                                return get_ula(get_mac(device))
                        end
+               end
+       
                local client = f:field(Flag, "client_" .. device, device:upper() .. "  DHCP anbieten", "DHCP weist verbundenen Benutzern automatisch eine Adresse zu. Diese Option sollten Sie unbedingt aktivieren, wenn Sie Nutzer an der drahtlosen Schnittstelle erwarten.")
                        client:depends("device_" .. device, "1")
                        client.rmempty = false
@@ -292,12 +297,15 @@ uci:foreach("network", "interface",
                                function meship.write(self, sec, value)
                                        uci:set("freifunk", "wizard", "meship_" .. device, value)
                                end
-                       meship6 = f:field(Value, "meship6_" .. device, device:upper() .. "  Mesh IPv6 Adresse einrichten", "Ihre Mesh IP Adresse wird automatisch berechnet")
+                       if has_ipv6 then
+                               meship6 = f:field(Value, "meship6_" .. device, device:upper() .. "  Mesh IPv6 Adresse einrichten", "Ihre Mesh IP Adresse wird automatisch berechnet")
                                meship6:depends("device_" .. device, "1")
                                meship6.rmempty = true
                                function meship6.cfgvalue(self, section)
                                        return get_ula(get_mac(ifname))
                                end
+                       end
+
                        client = f:field(Flag, "client_" .. device, device:upper() .. "  DHCP anbieten","DHCP weist verbundenen Benutzern automatisch eine Adresse zu. Diese Option sollten Sie unbedingt aktivieren, wenn Sie Nutzer an der drahtlosen Schnittstelle erwarten.")
                                client:depends("device_" .. device, "1")
                                client.rmempty = false
@@ -550,15 +558,17 @@ if has_l2gvpn then
        end
 end
 
-hb = f:field(Flag, "hb", "Heartbeat aktivieren","Dem Gerät erlauben anonyme Statistiken zu übertragen. (empfohlen)")
-hb.rmempty = false
-hb:depends("netconfig", "1")
-function hb.cfgvalue(self, section)
-       return uci:get("freifunk", "wizard", "hb")
-end
-function hb.write(self, section, value)
-       uci:set("freifunk", "wizard", "hb", value)
-       uci:save("freifunk")
+if has_hb then
+       hb = f:field(Flag, "hb", "Heartbeat aktivieren","Dem Gerät erlauben anonyme Statistiken zu übertragen. (empfohlen)")
+       hb.rmempty = false
+       hb:depends("netconfig", "1")
+       function hb.cfgvalue(self, section)
+               return uci:get("freifunk", "wizard", "hb")
+       end
+       function hb.write(self, section, value)
+               uci:set("freifunk", "wizard", "hb", value)
+               uci:save("freifunk")
+       end
 end
 
 -------------------- Control --------------------
@@ -609,7 +619,9 @@ function f.handle(self, state, data)
                        if has_radvd then
                                uci:commit("radvd")
                        end
-                       luci.http.redirect(luci.dispatcher.build_url(unpack(luci.dispatcher.context.requested.path), "system", "reboot") .. "?reboot=1")
+-- the following line didn't work without admin-mini, for now i just replaced it with sys.exec... soma
+--                     luci.http.redirect(luci.dispatcher.build_url(unpack(luci.dispatcher.context.requested.path), "system", "reboot") .. "?reboot=1")
+                       sys.exec("reboot")
                end
                return false
        elseif state == FORM_INVALID then
@@ -636,6 +648,7 @@ function main.write(self, section, value)
        end
        -- Collect IP-Address
        local community = net:formvalue(section)
+       suffix = uci:get("freifunk", community, "suffix") or "olsr"
 
        -- Invalidate fields
        if not community then
@@ -684,14 +697,20 @@ function main.write(self, section, value)
                end)
        end
        uci:save("firewall")
-       uci:delete("manager", "heartbeat", "interface")
-       uci:save("manager")
+       if has_hb then
+               uci:delete("manager", "heartbeat", "interface")
+               uci:save("manager")
+       end
        -- Delete olsrdv4
        uci:delete_all("olsrd", "olsrd")
        local olsrbase
        olsrbase = uci:get_all("freifunk", "olsrd") or {}
        util.update(olsrbase, uci:get_all(external, "olsrd") or {})
-       olsrbase.IpVersion='6and4'
+       if has_ipv6 then
+               olsrbase.IpVersion='6and4'
+       else
+               olsrbase.IpVersion='4'
+       end
        uci:section("olsrd", "olsrd", nil, olsrbase)
        -- Delete olsrdv4 old p2pd settings
        uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_mdns.so.1.0.0"})
@@ -717,7 +736,9 @@ function main.write(self, section, value)
                        return
                end
                node_ip = luci.http.formvalue("cbid.ffwizward.1.meship_" .. device) and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.meship_" .. device))
-               node_ip6 = luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device) and ip.IPv6(luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device))
+               if has_ipv6 then
+                       node_ip6 = luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device) and ip.IPv6(luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device))
+               end
                if not node_ip or not network or not network:contains(node_ip) then
                        meship.tag_missing[section] = true
                        node_ip = nil
@@ -826,7 +847,9 @@ function main.write(self, section, value)
                util.update(netconfig, uci:get_all(external, "interface") or {})
                netconfig.proto = "static"
                netconfig.ipaddr = node_ip:string()
-               netconfig.ip6addr = node_ip6:string()
+               if has_ipv6 then
+                       netconfig.ip6addr = node_ip6:string()
+               end
                uci:section("network", "interface", nif, netconfig)
                if has_radvd then
                        uci:section("radvd", "interface", nil, {
@@ -860,10 +883,12 @@ function main.write(self, section, value)
                local client = luci.http.formvalue("cbid.ffwizward.1.client_" .. device)
                if client then
                        local dhcpmeshnet = luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device) and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device))
-                       local ifacelist = uci:get_list("manager", "heartbeat", "interface") or {}
-                       table.insert(ifacelist,nif .. "dhcp")
-                       uci:set_list("manager", "heartbeat", "interface", ifacelist)
-                       uci:save("manager")
+                       if has_hb then
+                               local ifacelist = uci:get_list("manager", "heartbeat", "interface") or {}
+                               table.insert(ifacelist,nif .. "dhcp")
+                               uci:set_list("manager", "heartbeat", "interface", ifacelist)
+                               uci:save("manager")
+                       end
                        if dhcpmeshnet then
                                if not dhcpmeshnet:minhost() or not dhcpmeshnet:mask() then
                                        dhcpmesh.tag_missing[section] = true
@@ -1021,7 +1046,9 @@ function main.write(self, section, value)
                if device ~= "loopback" and not string.find(device, "wifi") and not string.find(device, "wl") and not string.find(device, "wlan") and not string.find(device, "wireless") and not string.find(device, "radio") then
                        local node_ip
                        node_ip = luci.http.formvalue("cbid.ffwizward.1.meship_" .. device) and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.meship_" .. device))
-                       node_ip6 = luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device) and ip.IPv6(luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device))
+                       if has_ipv6 then
+                               node_ip6 = luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device) and ip.IPv6(luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device))
+                       end
                        if not node_ip or not network or not network:contains(node_ip) then
                                meship.tag_missing[section] = true
                                node_ip = nil
@@ -1049,7 +1076,9 @@ function main.write(self, section, value)
                        util.update(netconfig, uci:get_all(external, "interface") or {})
                        netconfig.proto = "static"
                        netconfig.ipaddr = node_ip:string()
-                       netconfig.ip6addr = node_ip6:string()
+                       if has_ipv6 then
+                               netconfig.ip6addr = node_ip6:string()
+                       end
                        uci:section("network", "interface", device, netconfig)
                        uci:save("network")
                        if has_radvd then
@@ -1085,10 +1114,12 @@ function main.write(self, section, value)
                        local client = luci.http.formvalue("cbid.ffwizward.1.client_" .. device)
                        if client then
                                local dhcpmeshnet = luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device) and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device))
-                               local ifacelist = uci:get_list("manager", "heartbeat", "interface") or {}
-                               table.insert(ifacelist,device .. "dhcp")
-                               uci:set_list("manager", "heartbeat", "interface", ifacelist)
-                               uci:save("manager")
+                               if has_hb then
+                                       local ifacelist = uci:get_list("manager", "heartbeat", "interface") or {}
+                                       table.insert(ifacelist,device .. "dhcp")
+                                       uci:set_list("manager", "heartbeat", "interface", ifacelist)
+                                       uci:save("manager")
+                               end
                                if dhcpmeshnet then
                                        if not dhcpmeshnet:minhost() or not dhcpmeshnet:mask() then
                                                dhcpmesh.tag_missing[section] = true
@@ -1232,18 +1263,19 @@ function main.write(self, section, value)
        local new_hostname = uci:get("freifunk", "wizard", "hostname")
        local old_hostname = sys.hostname()
 
-       local dhcphb = hb:formvalue(section)
-       if dhcphb then
-               uci:set("manager", "heartbeat", "enabled", "1")
-               -- Make sure that heartbeat is enabled
-               sys.init.enable("machash")
-
-       else
-               uci:set("manager", "heartbeat", "enabled", "0")
-               -- Make sure that heartbeat is enabled
-               sys.init.disable("machash")
+       if has_hb then
+               local dhcphb = hb:formvalue(section)
+               if dhcphb then
+                       uci:set("manager", "heartbeat", "enabled", "1")
+                       -- Make sure that heartbeat is enabled
+                       sys.init.enable("machash")
+               else
+                       uci:set("manager", "heartbeat", "enabled", "0")
+                       -- Make sure that heartbeat is enabled
+                       sys.init.disable("machash")
+               end
+               uci:save("manager")
        end
-       uci:save("manager")
 
        local custom_hostname = hostname:formvalue(section)
        uci:foreach("system", "system",
@@ -1314,7 +1346,7 @@ function main.write(self, section, value)
        -- Write new nameservice settings
        uci:section("olsrd", "LoadPlugin", nil, {
                library     = "olsrd_nameservice.so.0.3",
-               suffix      = ".olsr",
+               suffix      = "." .. suffix ,
                hosts_file  = "/var/etc/hosts.olsr",
                latlon_file = "/var/run/latlon.js",
                lat         = latval and string.format("%.15f", latval) or "",
@@ -1325,8 +1357,8 @@ function main.write(self, section, value)
        -- Import hosts and set domain
        uci:foreach("dhcp", "dnsmasq", function(s)
                uci:set_list("dhcp", s[".name"], "addnhosts", "/var/etc/hosts.olsr")
-               uci:set("dhcp", s[".name"], "local", "/olsr/")
-               uci:set("dhcp", s[".name"], "domain", "olsr")
+               uci:set("dhcp", s[".name"], "local", "/" .. suffix .. "/")
+               uci:set("dhcp", s[".name"], "domain", suffix)
        end)
 
        -- Make sure that OLSR is enabled
@@ -1335,9 +1367,15 @@ function main.write(self, section, value)
        uci:save("olsrd")
        uci:save("dhcp")
        -- Import hosts and set domain
-       uci:foreach("dhcp", "dnsmasq", function(s)
-               uci:set_list("dhcp", s[".name"], "addnhosts", {"/var/etc/hosts.olsr","/var/etc/hosts.olsr.ipv6"})
-       end)
+       if has_ipv6 then
+               uci:foreach("dhcp", "dnsmasq", function(s)
+                       uci:set_list("dhcp", s[".name"], "addnhosts", {"/var/etc/hosts.olsr","/var/etc/hosts.olsr.ipv6"})
+               end)
+       else
+               uci:foreach("dhcp", "dnsmasq", function(s)
+                       uci:set_list("dhcp", s[".name"], "addnhosts", "/var/etc/hosts.olsr")
+               end)
+       end
 
        uci:save("dhcp")
 
@@ -1346,10 +1384,14 @@ function main.write(self, section, value)
        if share_value == "1" then
                uci:set("freifunk", "wizard", "netconfig", "1")
                uci:section("firewall", "forwarding", nil, {src="freifunk", dest="wan"})
-               -- Set autoipv6 tunnel mode
-               uci:set("autoipv6", "olsr_node", "enable", "0")
-               uci:set("autoipv6", "tunnel", "enable", "1")
-               uci:save("autoipv6")
+
+               if has_autoipv6 then
+                       -- Set autoipv6 tunnel mode
+                       uci:set("autoipv6", "olsr_node", "enable", "0")
+                       uci:set("autoipv6", "tunnel", "enable", "1")
+                       uci:save("autoipv6")
+               end
+
                -- Delete/Disable gateway plugin
                uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_dyn_gw.so.0.5"})
                uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_dyn_gw_plain.so.0.4"})
@@ -1372,10 +1414,12 @@ function main.write(self, section, value)
        else
                uci:set("freifunk", "wizard", "netconfig", "0")
                uci:save("freifunk")
-               -- Set autoipv6 olsrd mode
-               uci:set("autoipv6", "olsr_node", "enable", "1")
-               uci:set("autoipv6", "tunnel", "enable", "0")
-               uci:save("autoipv6")
+               if has_autoipv6 then
+                       -- Set autoipv6 olsrd mode
+                       uci:set("autoipv6", "olsr_node", "enable", "1")
+                       uci:set("autoipv6", "tunnel", "enable", "0")
+                       uci:save("autoipv6")
+               end
                -- Delete gateway plugins
                uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_dyn_gw.so.0.5"})
                uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_dyn_gw_plain.so.0.4"})
index 041decc..18df46b 100644 (file)
@@ -53,9 +53,20 @@ function s.remove(self, section)
        return TypedSection.remove(self, section)
 end
 
+o = s:option(Flag, "ignore", translate("Enable"))
+o.rmempty = false
+o.width   = "30px"
+function o.cfgvalue(...)
+       local v = Flag.cfgvalue(...)
+       return v == "1" and "0" or "1"
+end
+function o.write(self, section, value)
+       Flag.write(self, section, value == "1" and "0" or "1")
+end
 
 o = s:option(DummyValue, "interface", translate("Interface"))
 o.template = "cbi/network_netinfo"
+o.width    = "10%"
 
 o = s:option(DummyValue, "UnicastOnly", translate("Multicast"))
 function o.cfgvalue(...)
@@ -104,10 +115,23 @@ function s2.create(...)
 end
 
 
+o = s2:option(Flag, "ignore", translate("Enable"))
+o.rmempty = false
+o.width   = "30px"
+function o.cfgvalue(...)
+       local v = Flag.cfgvalue(...)
+       return v == "1" and "0" or "1"
+end
+function o.write(self, section, value)
+       Flag.write(self, section, value == "1" and "0" or "1")
+end
+
 o = s2:option(DummyValue, "interface", translate("Interface"))
 o.template = "cbi/network_netinfo"
+o.width    = "10%"
 
 o = s2:option(DummyValue, "prefix", translate("Prefix"))
+o.width = "60%"
 function o.cfgvalue(self, section)
        local v = Value.cfgvalue(self, section)
        if not v then
@@ -168,10 +192,23 @@ function s3.create(...)
 end
 
 
+o = s3:option(Flag, "ignore", translate("Enable"))
+o.rmempty = false
+o.width   = "30px"
+function o.cfgvalue(...)
+       local v = Flag.cfgvalue(...)
+       return v == "1" and "0" or "1"
+end
+function o.write(self, section, value)
+       Flag.write(self, section, value == "1" and "0" or "1")
+end
+
 o = s3:option(DummyValue, "interface", translate("Interface"))
 o.template = "cbi/network_netinfo"
+o.width    = "10%"
 
 o = s3:option(DummyValue, "prefix", translate("Prefix"))
+o.width = "60%"
 function o.cfgvalue(self, section)
        local v = Value.cfgvalue(self, section)
        if v then
@@ -210,10 +247,23 @@ function s.create(...)
 end
 
 
+o = s4:option(Flag, "ignore", translate("Enable"))
+o.rmempty = false
+o.width   = "30px"
+function o.cfgvalue(...)
+       local v = Flag.cfgvalue(...)
+       return v == "1" and "0" or "1"
+end
+function o.write(self, section, value)
+       Flag.write(self, section, value == "1" and "0" or "1")
+end
+
 o = s4:option(DummyValue, "interface", translate("Interface"))
 o.template = "cbi/network_netinfo"
+o.width    = "10%"
 
 o = s4:option(DummyValue, "addr", translate("Address"))
+o.width = "60%"
 function o.cfgvalue(self, section)
        local v = Value.cfgvalue(self, section)
        if not v then
index ca510cd..ae8e062 100644 (file)
@@ -47,6 +47,19 @@ s:tab("mobile",  translate("Mobile IPv6"))
 -- General
 --
 
+o = s:taboption("general", Flag, "ignore", translate("Enable"))
+o.rmempty = false
+
+function o.cfgvalue(...)
+       local v = Flag.cfgvalue(...)
+       return v == "1" and "0" or "1"
+end
+
+function o.write(self, section, value)
+       Flag.write(self, section, value == "1" and "0" or "1")
+end
+
+
 o = s:taboption("general", Value, "interface", translate("Interface"),
        translate("Specifies the logical interface name this section belongs to"))
 
index 460a244..d3567cb 100644 (file)
@@ -38,6 +38,19 @@ s:tab("advanced",  translate("Advanced"))
 -- General
 --
 
+o = s:taboption("general", Flag, "ignore", translate("Enable"))
+o.rmempty = false
+
+function o.cfgvalue(...)
+       local v = Flag.cfgvalue(...)
+       return v == "1" and "0" or "1"
+end
+
+function o.write(self, section, value)
+       Flag.write(self, section, value == "1" and "0" or "1")
+end
+
+
 o = s:taboption("general", Value, "interface", translate("Interface"),
        translate("Specifies the logical interface name this section belongs to"))
 
index 31450b8..91cf25c 100644 (file)
@@ -35,6 +35,19 @@ s.addremove = false
 -- General
 --
 
+o = s:option(Flag, "ignore", translate("Enable"))
+o.rmempty = false
+
+function o.cfgvalue(...)
+       local v = Flag.cfgvalue(...)
+       return v == "1" and "0" or "1"
+end
+
+function o.write(self, section, value)
+       Flag.write(self, section, value == "1" and "0" or "1")
+end
+
+
 o = s:option(Value, "interface", translate("Interface"),
        translate("Specifies the logical interface name this section belongs to"))
 
index 31b6900..6e84d0f 100644 (file)
@@ -35,6 +35,19 @@ s.addremove = false
 -- General
 --
 
+o = s:option(Flag, "ignore", translate("Enable"))
+o.rmempty = false
+
+function o.cfgvalue(...)
+       local v = Flag.cfgvalue(...)
+       return v == "1" and "0" or "1"
+end
+
+function o.write(self, section, value)
+       Flag.write(self, section, value == "1" and "0" or "1")
+end
+
+
 o = s:option(Value, "interface", translate("Interface"),
        translate("Specifies the logical interface name this section belongs to"))
 
diff --git a/build/mkbasepot.sh b/build/mkbasepot.sh
new file mode 100755 (executable)
index 0000000..48e85ca
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+[ -d ./build ] || {
+       echo "Please execute as ./build/mkbasepot.sh" >&2
+       exit 1
+}
+
+echo -n "Updating po/templates/base.pot ... "
+
+./build/i18n-scan.pl \
+       libs/core/ libs/web/ \
+       modules/admin-core/ modules/admin-full/ \
+       themes/base/ themes/openwrt/ \
+> po/templates/base.pot
+
+echo "done"
index 135849c..490bee5 100644 (file)
@@ -322,7 +322,7 @@ endef
 $(eval $(call application,ffwizard-leipzig,Freifunk Leipzig configuration wizard))
 
 $(eval $(call application,ffwizard,Freifunk configuration wizard,\
-       +PACKAGE_luci-mod-freifunk))
+       +luci-mod-freifunk))
 
 $(eval $(call application,siitwizard,SIIT IPv4-over-IPv6 configuration wizard,\
        +PACKAGE_luci-app-siitwizard:kmod-siit))
index 8c7581a..dba869f 100644 (file)
@@ -16,7 +16,7 @@ $Id$
 <% if self.widget == "select" then %>
        <select class="cbi-input-select" onchange="cbi_d_update(this.id)"<%= attr("id", cbid) .. attr("name", cbid) .. ifattr(self.size, "size") %>>
        <% for i, key in pairs(self.keylist) do -%>
-               <option id="cbi-<%=self.config.."-"..section.."-"..self.option.."-"..key%>"<%= attr("value", key) .. ifattr((self:cfgvalue(section) or self.default) == key, "selected", "selected") %>><%=striptags(self.vallist[i])%></option>
+               <option id="cbi-<%=self.config.."-"..section.."-"..self.option.."-"..key%>"<%= attr("value", key) .. ifattr(tostring(self:cfgvalue(section) or self.default) == key, "selected", "selected") %>><%=striptags(self.vallist[i])%></option>
        <%- end %>
        </select>
 <% elseif self.widget == "radio" then
index 860d54e..7428175 100644 (file)
@@ -18,6 +18,16 @@ function rowstyle()
        rowcnt = rowcnt + 1
        return (rowcnt % 2) + 1
 end
+
+function width(o)
+       if o.width then
+               if type(o.width) == 'number' then
+                       return ' style="width:%dpx"' % o.width
+               end
+               return ' style="width:%s"' % o.width
+       end
+       return ''
+end
 -%>
 
 <!-- tblsection -->
@@ -38,7 +48,7 @@ end
                                <%- end -%>
                        <%- end -%>
                        <%- for i, k in pairs(self.children) do if not k.optional then -%>
-                               <th class="cbi-section-table-cell">
+                               <th class="cbi-section-table-cell"<%=width(k)%>>
                                <%- if k.titleref then -%><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=k.titleref%>"><%- end -%>
                                        <%-=k.title-%>
                                <%- if k.titleref then -%></a><%- end -%>
@@ -56,7 +66,7 @@ end
                                <%- end -%>
                        <%- end -%>
                        <%- for i, k in pairs(self.children) do if not k.optional then -%>
-                               <th class="cbi-section-table-cell"><%=k.description%></th>
+                               <th class="cbi-section-table-cell"<%=width(k)%>><%=k.description%></th>
                        <%- end; end; if self.extedit or self.addremove then -%>
                                <th class="cbi-section-table-cell"></th>
                        <%- end -%>
@@ -82,7 +92,7 @@ end
                                -%>
 
                                <%- if self.extedit or self.addremove then -%>
-                                       <td class="cbi-section-table-cell">
+                                       <td class="cbi-section-table-cell" style="width:50px">
                                                <%- if self.extedit then -%>
                                                        <a href="
                                                        <%- if type(self.extedit) == "string" then -%>
index 29d5ef9..fe1514f 100644 (file)
@@ -172,6 +172,7 @@ config 'community' 'augsburg'
        option 'splash_prefix' '27'
        option 'latitude' '48.37071'
        option 'longitude' '10.89475'
+       option 'suffix' 'ffa'
        option 'external' 'freifunk_augsburg'
 
 config 'community' 'jena'