From 1bb4822dca6113f73e3bc89e2acf15935e6f8e92 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 3 Dec 2014 15:17:05 +0100 Subject: Rework LuCI build system * Rename subdirectories to their repective OpenWrt package names * Make each LuCI module its own standalone package * Deploy a shared luci.mk which is used by each module Makefile Signed-off-by: Jo-Philipp Wich --- .../model/cbi/freifunk/widgets/heightwidth.lua | 26 ++++++++ .../luasrc/model/cbi/freifunk/widgets/html.lua | 41 ++++++++++++ .../luasrc/model/cbi/freifunk/widgets/iframe.lua | 23 +++++++ .../luasrc/model/cbi/freifunk/widgets/rssfeed.lua | 35 ++++++++++ .../luasrc/model/cbi/freifunk/widgets/search.lua | 25 ++++++++ .../luasrc/model/cbi/freifunk/widgets/widget.lua | 48 ++++++++++++++ .../cbi/freifunk/widgets/widgets_overview.lua | 75 ++++++++++++++++++++++ 7 files changed, 273 insertions(+) create mode 100644 applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua create mode 100644 applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua create mode 100644 applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua create mode 100644 applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua create mode 100644 applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua create mode 100644 applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua create mode 100644 applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua (limited to 'applications/luci-app-freifunk-widgets/luasrc/model') diff --git a/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua new file mode 100644 index 0000000000..b572187bdd --- /dev/null +++ b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua @@ -0,0 +1,26 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2012 Manuel Munz + +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 map, section = ... + +local width = wdg:option(Value, "width", translate("Width")) +width.rmempty = true + +--[[ +local height = wdg:option(Value, "height", translate("Height")) +height.rmempty = true +height.optional = true +]]-- + +local pr = wdg:option(Value, "paddingright", translate("Padding right")) +pr.rmempty = true diff --git a/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua new file mode 100644 index 0000000000..367e8a269e --- /dev/null +++ b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua @@ -0,0 +1,41 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2012 Manuel Munz + +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 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-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua new file mode 100644 index 0000000000..b9cbcaee56 --- /dev/null +++ b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua @@ -0,0 +1,23 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2012 Manuel Munz + +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 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-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua new file mode 100644 index 0000000000..5df5a346fe --- /dev/null +++ b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua @@ -0,0 +1,35 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2012 Manuel Munz + +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 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-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua new file mode 100644 index 0000000000..735dc7cdff --- /dev/null +++ b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua @@ -0,0 +1,25 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2012 Manuel Munz + +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 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-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua new file mode 100644 index 0000000000..5adfc8f850 --- /dev/null +++ b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua @@ -0,0 +1,48 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2012 Manuel Munz + +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 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-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua new file mode 100644 index 0000000000..50771d7e0d --- /dev/null +++ b/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua @@ -0,0 +1,75 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2012 Manuel Munz + +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 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 whose config has 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 -- cgit v1.2.3