116 lines
3.4 KiB
Lua
116 lines
3.4 KiB
Lua
|
--[[
|
||
|
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
|