modules/freifunk: include widgets in indexpage when available
authorManuel Munz <freifunk@somakoma.de>
Mon, 17 Sep 2012 14:22:14 +0000 (14:22 +0000)
committerManuel Munz <freifunk@somakoma.de>
Mon, 17 Sep 2012 14:22:14 +0000 (14:22 +0000)
modules/freifunk/luasrc/view/freifunk/index.htm

index e13d7f9c2609dfcd6e280041d43238801ea797bd..d1862bd3a6d725c2b52e4c53baff8e205ca0eadd 100644 (file)
@@ -15,6 +15,8 @@ $Id$
 <%+header%>
 <% 
 local uci = require "luci.model.uci".cursor()
+local tpl = require "luci.template"
+local fs = require "luci.fs"
 local ff = {}
 local ff = uci:get_all("freifunk")
 
@@ -33,8 +35,7 @@ local co = "profile_" .. community
 local url = uci:get_first(co, "community", "homepage") or "http://www.freifunk.net"
 
 
-require("luci.fs")
-local usertext = luci.fs.readfile("/www/luci-static/index_user.html")
+local usertext = fs.readfile("/www/luci-static/index_user.html")
 
 if DefaultText ~= "disabled" then
 
@@ -69,4 +70,28 @@ end
 <%=defaulttext%>
 <%=usertext%>
 
+<%
+-- add custom widgets from view/freifunk/widgets
+local widgets = {}
+local dir = "/usr/lib/lua/luci/view/freifunk/widgets"
+
+uci:foreach("freifunk-widgets", "widget",
+                       function(s)
+                               if s.enabled == "1" then
+                                       local name = s[".name"] 
+                                       widgets[name] = s
+                               end
+                       end)
+
+local function cmp(a, b)
+       return (widgets[a].order or 100) > (widgets[b].order or 100)
+end
+
+for k, v in luci.util.spairs(widgets, function(a,b) return (tonumber(widgets[a].order) < tonumber(widgets[b].order)) end) do
+       if v['template'] and fs.access(dir .. "/" .. v['template'] .. "/main.htm") then
+               tpl.render("freifunk/widgets/" .. v['template'] .. "/main", { name = k, data = v })
+       end
+end
+
+%>
 <%+footer%>