diff options
author | Manuel Munz <freifunk@somakoma.de> | 2011-01-25 21:04:57 +0000 |
---|---|---|
committer | Manuel Munz <freifunk@somakoma.de> | 2011-01-25 21:04:57 +0000 |
commit | c36fd44de2db30c08848bf326365a1e372b7879c (patch) | |
tree | aa34a63d3270b4d9ba953c5bed9000aa961de745 /modules/freifunk/luasrc/model/cbi | |
parent | 9c03a76fc28dac4efe4714f0e61bb41bf2784ef7 (diff) |
applications/ffwizard: Massive changes to the ffwizard to make it more generic. Also introduces changes to the community profiles. ffwizard replaces ffwizard-leipzig now. It is not completely finished yet, but should work in most cases.
Diffstat (limited to 'modules/freifunk/luasrc/model/cbi')
5 files changed, 217 insertions, 35 deletions
diff --git a/modules/freifunk/luasrc/model/cbi/freifunk/basics.lua b/modules/freifunk/luasrc/model/cbi/freifunk/basics.lua new file mode 100644 index 0000000000..1cd5c6d9c4 --- /dev/null +++ b/modules/freifunk/luasrc/model/cbi/freifunk/basics.lua @@ -0,0 +1,115 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth <steven@midlink.org> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id: freifunk.lua 3291 2008-09-14 21:59:14Z Cyrus $ +]]-- + +local fs = require "luci.fs" +local util = require "luci.util" +local uci = require "luci.model.uci".cursor() +local profiles = "/etc/config/profile_" + +m = Map("freifunk", "Freifunk") +c = m:section(NamedSection, "community", "public", "Gemeinschaft", [[Dies sind die Grundeinstellungen +für die lokale Freifunkgemeinschaft. Diese Werte wirken sich NICHT auf die Konfiguration +des Routers aus, sondern definieren nur die Vorgaben für den Freifunkassistenten.]]) + +community = c:option(ListValue, "name", "Gemeinschaft") +community.rmempty = false + +local list = { } +local list = fs.glob(profiles .. "*") + +for k,v in ipairs(list) do + local name = uci:get_first(v, "community", "name") or "?" + local n = string.gsub(v, profiles, "") + community:value(n, name) +end + +n = Map("system", translate("Basic system settings")) +b = n:section(TypedSection, "system", "Basic system settings") +b.anonymous = true + +hn = b:option(Value, "hostname", "hostname") +hn.rmempty = false +function hn.validate(self, value) + if value == nil then + return + elseif (#value > 24) or string.match(value, "[^%w%.%-]") or string.match(value, "^[%-%.]") or string.match(value, "[%-%.]$") then + return nil, translate("Hostname may contain up to 24 alphanumeric characters. Minus and period are also allowed, but not in the beginning or the end of the hostname.") + else + return value + end +end + +loc = b:option(Value, "location", "Location") +loc.rmempty = false + +lat = b:option(Value, "latitude", "latitude") +lat.rmempty = false + +lon = b:option(Value, "longitude", "longitude") +lon.rmempty = false + +--[[ +Opens an OpenStreetMap iframe or popup +Makes use of resources/OSMLatLon.htm and htdocs/resources/osm.js +(is that the right place for files like these?) +]]-- + +local class = util.class +local co = "profile_augsburg" +local syslat = uci:get_first(co, "community", "latitude") +local syslon = uci:get_first(co, "community", "longitude") + +OpenStreetMapLonLat = class(AbstractValue) + +function OpenStreetMapLonLat.__init__(self, ...) + AbstractValue.__init__(self, ...) + self.template = "cbi/osmll_value" + self.latfield = nil + self.lonfield = nil + self.centerlat = "" + self.centerlon = "" + self.zoom = "0" + self.width = "100%" --popups will ignore the %-symbol, "100%" is interpreted as "100" + self.height = "600" + self.popup = false + self.displaytext="OpenStreetMap" --text on button, that loads and displays the OSMap + self.hidetext="X" -- text on button, that hides OSMap +end + + +f = SimpleForm("ffwizward", "OpenStreetMap", "Hier kann man die Geokoordinaten des Knotens herausfinden.") + +osm = f:field(OpenStreetMapLonLat, "latlon", "Geokoordinaten mit OpenStreetMap ermitteln:", "Klicken Sie auf Ihren Standort in der Karte. Diese Karte funktioniert nur, wenn das Gerät bereits eine Verbindung zum Internet hat.") +osm.latfield = "lat" +osm.lonfield = "lon" +osm.centerlat = syslat +osm.centerlon = syslon +osm.width = "100%" +osm.height = "600" +osm.popup = false + +syslatlengh = string.len(syslat) +if syslatlengh > 7 then + osm.zoom = "15" +elseif syslatlengh > 5 then + osm.zoom = "12" +else + osm.zoom = "6" +end + +osm.displaytext="OpenStreetMap anzeigen" +osm.hidetext="OpenStreetMap verbergen" + + +return m, n diff --git a/modules/freifunk/luasrc/model/cbi/freifunk/contact.lua b/modules/freifunk/luasrc/model/cbi/freifunk/contact.lua index c976409c65..178df28b85 100644 --- a/modules/freifunk/luasrc/model/cbi/freifunk/contact.lua +++ b/modules/freifunk/luasrc/model/cbi/freifunk/contact.lua @@ -18,17 +18,17 @@ m = Map("freifunk", translate("Contact"), translate("Please fill in your contact c = m:section(NamedSection, "contact", "public", "") -c:option(Value, "nickname", translate("Nickname")) -c:option(Value, "name", translate("Realname")) -c:option(Value, "mail", translate("E-Mail"), translate("You really should provide your address here!")) -c:option(Value, "phone", translate("Phone")) -c:option(Value, "location", translate("Location")) -c:option(Value, "note", translate("Notice")) +local nick = c:option(Value, "nickname", translate("Nickname")) +nick.rmempty = false + +name = c:option(Value, "name", translate("Realname")) +name.rmempty = false -m2 = Map("system", translate("Coordinates")) +mail = c:option(Value, "mail", translate("E-Mail")) +mail.rmempty = false -s = m2:section(TypedSection, "system", "") -s:option(Value, "latitude", translate("Latitude")).rmempty = true -s:option(Value, "longitude", translate("Longitude")).rmempty = true +c:option(Value, "phone", translate("Phone")) + +c:option(Value, "note", translate("Notice")) -return m, m2 +return m diff --git a/modules/freifunk/luasrc/model/cbi/freifunk/freifunk.lua b/modules/freifunk/luasrc/model/cbi/freifunk/freifunk.lua deleted file mode 100644 index 1a147460b7..0000000000 --- a/modules/freifunk/luasrc/model/cbi/freifunk/freifunk.lua +++ /dev/null @@ -1,24 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth <steven@midlink.org> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- -m = Map("freifunk", "Freifunk") - -c = m:section(NamedSection, "community", "public", "Gemeinschaft", [[Dies sind die Grundeinstellungen -für die lokale Freifunkgemeinschaft. Diese Werte wirken sich NICHT auf die Konfiguration -des Routers aus, sondern definieren nur die Vorgaben für den Freifunkassistenten.]]) -c:option(Value, "name", "Gemeinschaft") -c:option(Value, "homepage", "Webseite") -c:option(Value, "ssid", "ESSID") -c:option(Value, "prefix", "Netzprefix") - -return m
\ No newline at end of file diff --git a/modules/freifunk/luasrc/model/cbi/freifunk/profile.lua b/modules/freifunk/luasrc/model/cbi/freifunk/profile.lua new file mode 100644 index 0000000000..87ec03c7e7 --- /dev/null +++ b/modules/freifunk/luasrc/model/cbi/freifunk/profile.lua @@ -0,0 +1,55 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2011 Manuel Munz <freifunk at somakoma dot de> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + httc://www.apache.org/licenses/LICENSE-2.0 +]]-- + +local uci = require "luci.model.uci".cursor() +local community = "profile_" .. uci:get("freifunk", "community", "name") +--local community = "profile_augsburg" + + +m = Map(community, translate("Community settings"), translate("These are the settings of your local community")) + +c = m:section(NamedSection, "profile", "community", "foobar") + +name = c:option(Value, "name", "Name") +name.rmempty = false + +homepage = c:option(Value, "homepage", "Webseite") + +cc = c:option(Value, "country", "Countrycode") +function cc.cfgvalue(self, section) + return uci:get(community, "wifi_device", "country") +end +function cc.write(self, sec, value) + if value then + uci:set(community, "wifi_device", "country", value) + uci:save(community) + end +end + +ssid = c:option(Value, "ssid", "ESSID") +ssid.rmempty = false + +prefix = c:option(Value, "mesh_network", "Netzprefix") +prefix.rmempty = false + +splash_net = c:option(Value, "splash_network", "Netzwerk für Client-DHCP-Adressen") +splash_net.rmempty = false + +splash_prefix = c:option(Value, "splash_prefix", "Netzgröße für Clientnetze") +splash_prefix.rmempty = false + +lat = c:option(Value, "latitude", "Latitude") +lat.rmempty = false + +lon = c:option(Value, "longitude", "longitude") +lon.rmempty = false +return m diff --git a/modules/freifunk/luasrc/model/cbi/freifunk/profile_expert.lua b/modules/freifunk/luasrc/model/cbi/freifunk/profile_expert.lua new file mode 100644 index 0000000000..5da7e7b121 --- /dev/null +++ b/modules/freifunk/luasrc/model/cbi/freifunk/profile_expert.lua @@ -0,0 +1,36 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2011 Manuel Munz <freifunk at somakoma dot de> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + httc://www.apache.org/licenses/LICENSE-2.0 +]]-- + +local fs = require "nixio.fs" +local uci = require "luci.model.uci".cursor() +local community = "/etc/config/profile_" .. uci:get("freifunk", "community", "name") + +f = SimpleForm("community", translate("Community profile"), translate("This is the complete content of the selected community profile.")) + +t = f:field(TextValue, "cop") +t.rmempty = true +t.rows = 30 +function t.cfgvalue() + return fs.readfile(community) or "" +end + +function f.handle(self, state, data) + if state == FORM_VALID then + if data.cop then + fs.writefile(cop, data.rcs:gsub("\r\n", "\n")) + end + end + return true +end + +return f + |