modules/freifunk: OSM in basics fixed thanks to Andreas Pittrich
[project/luci.git] / modules / freifunk / luasrc / model / cbi / freifunk / basics.lua
1 --[[
2 LuCI - Lua Configuration Interface
3
4 Copyright 2008 Steven Barth <steven@midlink.org>
5 Copyright 2011 Manuel Munz <freifunk at somakoma de>
6
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
10
11         http://www.apache.org/licenses/LICENSE-2.0
12 ]]
13
14 local fs = require "luci.fs"
15 local util = require "luci.util"
16 local uci = require "luci.model.uci".cursor()
17 local profiles = "/etc/config/profile_"
18
19
20 m = Map("freifunk", translate ("Community"))
21 c = m:section(NamedSection, "community", "public", nil, translate("These are the basic settings for your local wireless community. These settings define the default values for the wizard and DO NOT affect the actual configuration of the router."))
22
23 community = c:option(ListValue, "name", translate ("Community"))
24 community.rmempty = false
25
26 local list = { }
27 local list = fs.glob(profiles .. "*")
28
29 for k,v in ipairs(list) do
30         local name = uci:get_first(v, "community", "name") or "?"
31         local n = string.gsub(v, profiles, "")
32         community:value(n, name)
33 end
34
35
36 n = Map("system", translate("Basic system settings"))
37 function n.on_after_commit(self)
38         luci.http.redirect(luci.dispatcher.build_url("admin", "freifunk", "basics"))
39 end
40
41 b = n:section(TypedSection, "system")
42 b.anonymous = true
43
44 hn = b:option(Value, "hostname", translate("Hostname"))
45 hn.rmempty = false
46 hn.datatype = "hostname"
47
48 loc = b:option(Value, "location", translate("Location"))
49 loc.rmempty = false
50
51 lat = b:option(Value, "latitude", translate("Latitude"), translate("e.g.") .. " 48.12345")
52 lat.datatype = "float"
53 lat.rmempty = false
54
55 lon = b:option(Value, "longitude", translate("Longitude"), translate("e.g.") .. " 10.12345")
56 lon.datatype = "float"
57 lon.rmempty = false
58
59 --[[
60 Opens an OpenStreetMap iframe or popup
61 Makes use of resources/OSMLatLon.htm and htdocs/resources/osm.js
62 ]]--
63
64 local class = util.class
65 local ff = uci:get("freifunk", "community", "name") or ""
66 local co = "profile_" .. ff
67
68 local deflat = uci:get_first("system", "system", "latitude") or uci:get_first(co, "community", "latitude") or 52
69 local deflon = uci:get_first("system", "system", "longitude") or uci:get_first(co, "community", "longitude") or 10
70 local zoom = 12
71 if ( deflat == 52 and deflon == 10 ) then
72         zoom = 4
73 end
74
75 OpenStreetMapLonLat = luci.util.class(AbstractValue)
76     
77 function OpenStreetMapLonLat.__init__(self, ...)
78         AbstractValue.__init__(self, ...)
79         self.template = "cbi/osmll_value"
80         self.latfield = nil
81         self.lonfield = nil
82         self.centerlat = ""
83         self.centerlon = ""
84         self.zoom = "0"
85         self.width = "100%" --popups will ignore the %-symbol, "100%" is interpreted as "100"
86         self.height = "600"
87         self.popup = false
88         self.displaytext="OpenStreetMap" --text on button, that loads and displays the OSMap
89         self.hidetext="X" -- text on button, that hides OSMap
90 end
91
92         osm = b:option(OpenStreetMapLonLat, "latlon", translate("Find your coordinates with OpenStreetMap"), translate("Select your location with a mouse click on the map. The map will only show up if you are connected to the Internet."))
93         osm.latfield = "latitude"
94         osm.lonfield = "longitude"
95         osm.centerlat = uci:get_first("system", "system", "latitude") or deflat
96         osm.centerlon = uci:get_first("system", "system", "longitude") or deflon
97         osm.zoom = zoom
98         osm.width = "100%"
99         osm.height = "600"
100         osm.popup = false
101         osm.displaytext=translate("Show OpenStreetMap")
102         osm.hidetext=translate("Hide OpenStreetMap")
103
104 return m, n