diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2014-12-03 15:17:05 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2015-01-08 16:26:20 +0100 |
commit | 1bb4822dca6113f73e3bc89e2acf15935e6f8e92 (patch) | |
tree | 35e16f100466e4e00657199b38bb3d87d52bf73f /applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed | |
parent | 9edd0e46c3f880727738ce8ca6ff1c8b85f99ef4 (diff) |
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 <jow@openwrt.org>
Diffstat (limited to 'applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed')
-rw-r--r-- | applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed/main.htm | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed/main.htm b/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed/main.htm new file mode 100644 index 0000000000..08fc550ecd --- /dev/null +++ b/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed/main.htm @@ -0,0 +1,84 @@ +<% +--[[ +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 sys = require "luci.sys" +local utl = require "luci.util" +local fs = require "luci.fs" +local i18n = require "luci.i18n" +local url = data.url +local title = data.title or i18n.translate("RSS") +local max = tonumber(data.max) or 10 +local rss +local pr = data.paddingright or "0" +local output = {} +local width = data.width or "100%" +if type(width) == "number" then + width = width .. "px" +end +local name = data['.name'] +local cachetime = tonumber(data.cache) or 3600 +cachefile = "/tmp/" .. name .. ".cache" +%> +<div id="<%=name%>" style="width:<%=width%>;float:left"> + <div style="padding-right: <%=pr%>"> + <h2><%=title%></h2> + + <% if not url then %> + <%:No url found in config%> + <% else + local mtime = luci.fs.mtime(cachefile) or 0 + local now = os.time() + expire = mtime + cachetime + + if not fs.access(cachefile) or expire < now then + rss = sys.httpget(url) + if #rss == 0 then + %> + <%:Could not get rss data from%> <a href="<%=url%>"><%=url%></a> + <% + else + local count = 0 + for item in string.gmatch(rss, "<item>(.-)</item>") do + if count < max then + local title = item:match("<title>(.-)</title>") + local link = item:match("<link>(.-)</link>") + local desc = item:match("<description>(.-)</description>") or "" + if title and link then + table.insert(output, { title = utl.pcdata(title), link = utl.pcdata(link) }) + end + count = count + 1 + end + end + if count > 0 then + local file = io.open(cachefile, "w") + file:write(utl.serialize_data(output)) + file:close() + end + end + else + local file = assert(io.open(cachefile)) + output = utl.restore_data(file:read'*a') + end + end + + if #output > 0 then + %> + <ul> + <% for k, v in ipairs(output) do %> + <li><a href="<%=v.link%>"><%=v.title%></a></li> + <% end %> + </ul> + <%end%> + </div> +</div> |