summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk
diff options
context:
space:
mode:
Diffstat (limited to 'applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk')
-rw-r--r--applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua10
-rw-r--r--applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua28
-rw-r--r--applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua10
-rw-r--r--applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua22
-rw-r--r--applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua12
-rw-r--r--applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua53
-rw-r--r--applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua82
7 files changed, 217 insertions, 0 deletions
diff --git a/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua
new file mode 100644
index 000000000..b584b61ab
--- /dev/null
+++ b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua
@@ -0,0 +1,10 @@
+local map, section = ...
+
+local width = wdg:option(Value, "width", translate("Width"))
+width.rmempty = true
+
+local height = wdg:option(Value, "height", translate("Height"))
+height.rmempty = true
+
+local pr = wdg:option(Value, "paddingright", translate("Padding right"))
+pr.rmempty = true
diff --git a/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua
new file mode 100644
index 000000000..0fb464f3e
--- /dev/null
+++ b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua
@@ -0,0 +1,28 @@
+local map, section = ...
+local utl = require "luci.util"
+local fs = require "nixio.fs"
+local file = "/usr/share/customtext/" .. arg[1] .. ".html"
+
+local form, ferr = loadfile(utl.libpath() .. "/model/cbi/freifunk/widgets/heightwidth.lua")
+if form then
+ setfenv(form, getfenv(1))(m, wdg)
+end
+
+t = wdg:option(TextValue, "_text")
+t.rmempty = true
+t.rows = 20
+
+
+function t.cfgvalue()
+ return fs.readfile(file) or ""
+end
+
+function t.write(self, section, value)
+ return fs.writefile(file, value)
+end
+
+function t.remove(self, section)
+ return fs.unlink(file)
+end
+
+
diff --git a/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua
new file mode 100644
index 000000000..5f1a89471
--- /dev/null
+++ b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua
@@ -0,0 +1,10 @@
+local map, section = ...
+local utl = require "luci.util"
+
+local form, ferr = loadfile(utl.libpath() .. "/model/cbi/freifunk/widgets/heightwidth.lua")
+if form then
+ setfenv(form, getfenv(1))(m, wdg)
+end
+
+local url = wdg:option(Value, "url", translate("URL"))
+url.default = "http://www.freifunk.net"
diff --git a/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua
new file mode 100644
index 000000000..778b872bc
--- /dev/null
+++ b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua
@@ -0,0 +1,22 @@
+local map, section = ...
+local utl = require "luci.util"
+
+local form, ferr = loadfile(utl.libpath() .. "/model/cbi/freifunk/widgets/heightwidth.lua")
+if form then
+ setfenv(form, getfenv(1))(m, wdg)
+end
+
+local url = wdg:option(Value, "url", translate("URL"))
+url.default = "http://global.freifunk.net/rss/all/rss.xml"
+
+local max = wdg:option(Value, "max", translate("Maximal entries to show"))
+max.rmempty = true
+max.default = "10"
+max.datatype = "integer"
+
+local cache = wdg:option(Value, "cache", translate("Cache Time"), translate("Cache downloaded feed for that many seconds."))
+cache.rmempty = true
+cache.default = "3600"
+cache.datatype = "integer"
+
+
diff --git a/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua
new file mode 100644
index 000000000..4d861c5a0
--- /dev/null
+++ b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua
@@ -0,0 +1,12 @@
+local map, section = ...
+local utl = require "luci.util"
+
+local form, ferr = loadfile(utl.libpath() .. "/model/cbi/freifunk/widgets/heightwidth.lua")
+if form then
+ setfenv(form, getfenv(1))(m, wdg)
+end
+
+local engine = wdg:option(DynamicList, "engine", translate("Search Engine"),
+ translate("Use the form Name|URL, where URL must be a full URL to the search engine " ..
+ "including the query GET parameter, e.g. 'Google|http://www.google.de/search?q='")
+ )
diff --git a/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua
new file mode 100644
index 000000000..368e560f4
--- /dev/null
+++ b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua
@@ -0,0 +1,53 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2012 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
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+]]--
+
+
+local uci = require "luci.model.uci".cursor()
+local dsp = require "luci.dispatcher"
+local utl = require "luci.util"
+local widget = uci:get("freifunk-widgets", arg[1], "template")
+local title = uci:get("freifunk-widgets", arg[1], "title") or ""
+
+m = Map("freifunk-widgets", translate("Widget"))
+m.redirect = luci.dispatcher.build_url("admin/freifunk/widgets")
+
+if not arg[1] or m.uci:get("freifunk-widgets", arg[1]) ~= "widget" then
+ luci.http.redirect(m.redirect)
+ return
+end
+
+wdg = m:section(NamedSection, arg[1], "widget", translate("Widget") .. " " .. title)
+wdg.anonymous = true
+wdg.addremove = false
+
+local en = wdg:option(Flag, "enabled", translate("Enable"))
+en.rmempty = false
+
+local title = wdg:option(Value, "title", translate("Title"))
+title.rmempty = true
+
+local order = wdg:option(Value, "order", translate("Order"))
+order.default = "100"
+order.placeholder = "100"
+order.datatype = "integer"
+
+
+local form = loadfile(
+ utl.libpath() .. "/model/cbi/freifunk/widgets/%s.lua" % widget
+)
+
+if form then
+ setfenv(form, getfenv(1))(m, wdg)
+end
+return m
+
diff --git a/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua
new file mode 100644
index 000000000..e0faef2ff
--- /dev/null
+++ b/applications/luci-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua
@@ -0,0 +1,82 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2012 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
+
+ http://www.apache.org/licenses/LICENSE-2.0
+]]--
+
+local uci = require "luci.model.uci".cursor()
+local fs = require "luci.fs"
+local utl = require "luci.util"
+m = Map("freifunk-widgets", translate("Widgets"),
+ translate("Configure installed widgets."))
+
+wdg = m:section(TypedSection, "widget", translate("Widgets"))
+wdg.addremove = true
+wdg.extedit = luci.dispatcher.build_url("admin/freifunk/widgets/widget/%s")
+wdg.template = "cbi/tblsection"
+wdg.sortable = true
+
+--[[
+function wdg.create(...)
+ local sid = TypedSection.create(...)
+ luci.http.redirect(wdg.extedit % sid)
+end
+]]--
+
+local en = wdg:option(Flag, "enabled", translate("Enable"))
+en.rmempty = false
+--en.default = "0"
+function en.cfgvalue(self, section)
+ return Flag.cfgvalue(self, section) or "0"
+end
+
+local tmpl = wdg:option(ListValue, "template", translate("Template"))
+for k, v in ipairs(fs.dir('/usr/lib/lua/luci/view/freifunk/widgets/')) do
+ if v ~= "." and v ~= ".." then
+ tmpl:value(v)
+ end
+end
+
+local title = wdg:option(Value, "title", translate("Title"))
+--title.rmempty = true
+
+
+local order = wdg:option(Value, "order", translate("Order"))
+order.default = "100"
+order.placeholder = "100"
+order.datatype = "integer"
+
+local width = wdg:option(Value, "width", translate("Width"))
+--width.rmempty = true
+
+local height = wdg:option(Value, "height", translate("Height"))
+--height.rmempty = true
+
+local pr = wdg:option(Value, "paddingright", translate("Padding right"))
+pr.rmempty = true
+
+function m.on_commit(self)
+ -- clean custom text files for elements which may have been deleted
+ local dir = "/usr/share/customtext/"
+ local active = {}
+ uci:foreach("freifunk-widgets", "widget", function(s)
+ if s["template"] == "html" then
+ table.insert(active, s[".name"])
+ end
+ end )
+ for k, v in ipairs(fs.dir(dir)) do
+ filename = string.gsub(v, ".html", "")
+ if not utl.contains(active, filename) then
+ fs.unlink(dir .. v)
+ end
+ end
+end
+
+return m
+