diff options
-rw-r--r-- | libs/cbi/luasrc/cbi.lua | 8 | ||||
-rw-r--r-- | modules/admin-full/luasrc/controller/admin/system.lua | 44 | ||||
-rw-r--r-- | modules/admin-full/luasrc/model/cbi/admin_system/ipkg.lua | 36 | ||||
-rw-r--r-- | modules/admin-full/luasrc/view/admin_system/editor.htm | 28 | ||||
-rw-r--r-- | modules/admin-full/luasrc/view/admin_system/ipkg.htm | 30 |
5 files changed, 48 insertions, 98 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 399f486752..8816b11b7b 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -140,6 +140,10 @@ function Template.__init__(self, template) self.template = template end +function Template.render(self) + luci.template.render(self.template, {self=self}) +end + --[[ Map - A map describing a configuration file @@ -260,7 +264,9 @@ function SimpleForm.parse(self, ...) local valid = true for i, v in ipairs(self.children) do - valid = valid and not v.tag_missing[1] and not v.tag_invalid[1] + valid = valid + and (not v.tag_missing or not v.tag_missing[1]) + and (not v.tag_invalid or not v.tag_invalid[1]) end local state = diff --git a/modules/admin-full/luasrc/controller/admin/system.lua b/modules/admin-full/luasrc/controller/admin/system.lua index cf39483cfb..a381803bb6 100644 --- a/modules/admin-full/luasrc/controller/admin/system.lua +++ b/modules/admin-full/luasrc/controller/admin/system.lua @@ -19,7 +19,7 @@ function index() entry({"admin", "system"}, template("admin_system/index"), i18n("system"), 30) entry({"admin", "system", "packages"}, call("action_packages"), i18n("a_s_packages"), 10) - entry({"admin", "system", "packages", "ipkg"}, call("action_ipkg"), i18n("a_s_p_ipkg")) + entry({"admin", "system", "packages", "ipkg"}, form("admin_system/ipkg"), i18n("a_s_p_ipkg")) entry({"admin", "system", "passwd"}, call("action_passwd"), i18n("a_s_changepw"), 20) entry({"admin", "system", "sshkeys"}, form("admin_system/sshkeys"), i18n("a_s_sshkeys"), 30) entry({"admin", "system", "system"}, cbi("admin_system/system"), i18n("system"), 40) @@ -30,48 +30,6 @@ function index() entry({"admin", "system", "reboot"}, call("action_reboot"), i18n("reboot"), 90) end -function action_editor() - local file = luci.http.formvalue("file", "") - local data = luci.http.formvalue("data") - local err = nil - local msg = nil - local stat = true - - if file and data then - stat, err = luci.fs.writefile(file, data) - end - - if not stat then - err = luci.util.split(err, " ") - table.remove(err, 1) - msg = table.concat(err, " ") - end - - local cnt, err = luci.fs.readfile(file) - if cnt then - cnt = luci.util.pcdata(cnt) - end - luci.template.render("admin_system/editor", {fn=file, cnt=cnt, msg=msg}) -end - -function action_ipkg() - local file = "/etc/ipkg.conf" - local data = luci.http.formvalue("data") - local stat = nil - local err = nil - - if data then - stat, err = luci.fs.writefile(file, data) - end - - local cnt = luci.fs.readfile(file) - if cnt then - cnt = luci.util.pcdata(cnt) - end - - luci.template.render("admin_system/ipkg", {cnt=cnt, msg=err}) -end - function action_packages() local ipkg = require("luci.model.ipkg") local void = nil diff --git a/modules/admin-full/luasrc/model/cbi/admin_system/ipkg.lua b/modules/admin-full/luasrc/model/cbi/admin_system/ipkg.lua new file mode 100644 index 0000000000..4e864df28d --- /dev/null +++ b/modules/admin-full/luasrc/model/cbi/admin_system/ipkg.lua @@ -0,0 +1,36 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth <steven@midlink.org> +Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> + +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 + +$Id$ +]]-- +local ipkgfile = "/etc/ipkg.conf" + +f = SimpleForm("ipkgconf", translate("a_s_p_ipkg")) + +t = f:field(TextValue, "lines") +t.rows = 10 +function t.cfgvalue() + return luci.fs.readfile(ipkgfile) or "" +end + +f:append(Template("admin_system/ipkg")) + +function f.handle(self, state, data) + if state == FORM_VALID then + if (luci.fs.readfile(ipkgfile) or "") ~= data.lines then + luci.fs.writefile(ipkgfile, data.keys) + end + end + return true +end + +return f diff --git a/modules/admin-full/luasrc/view/admin_system/editor.htm b/modules/admin-full/luasrc/view/admin_system/editor.htm deleted file mode 100644 index bac1729d04..0000000000 --- a/modules/admin-full/luasrc/view/admin_system/editor.htm +++ /dev/null @@ -1,28 +0,0 @@ -<%# -LuCI - Lua Configuration Interface -Copyright 2008 Steven Barth <steven@midlink.org> -Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> - -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 - -$Id$ - --%> -<%+header%> -<h1><%:texteditor%></h1> -<form method="post" action="<%=controller%>/admin/system/editor"> -<div><%:file%>: <input type="text" name="file" size="30" value="<%=fn%>" /> -<% if msg then %><span class="error"><%:error%>: <%=msg%></span><% end %></div> -<br /> -<div><textarea style="width: 100%" rows="20" name="data"><%=cnt%></textarea></div> -<br /> -<div> - <input type="submit" value="<%:save%>" /> - <input type="reset" value="<%:reset%>" /> -</div> -</form> -<%+footer%>
\ No newline at end of file diff --git a/modules/admin-full/luasrc/view/admin_system/ipkg.htm b/modules/admin-full/luasrc/view/admin_system/ipkg.htm index 0cd87d990b..7f6c0fb897 100644 --- a/modules/admin-full/luasrc/view/admin_system/ipkg.htm +++ b/modules/admin-full/luasrc/view/admin_system/ipkg.htm @@ -12,29 +12,7 @@ You may obtain a copy of the License at $Id$ -%> -<%+header%> -<h1><%:system%></h1> -<h2><%:a_s_p_ipkg%></h2> - -<br /> - -<div><strong><%:a_s_p_ipkg_pkglists%>:</strong><code>src <em>Name</em> <em>URL</em></code></div> -<div><strong><%:a_s_p_ipkg_targets%>:</strong><code>dest <em>Name</em> <em>Pfad</em></code></div> - -<br /> - -<form method="post" action="<%=REQUEST_URI%>"> - <div class="cbi-section-node" style="width: 100%"> - <div class="cbi-value"> - <div class="cbi-value-field"> - <textarea style="width: 100%" rows="10" name="data"><%=cnt%></textarea> - </div> - </div> - </div> - <div> - <input type="submit" value="<%:save%>" /> - <input type="reset" value="<%:reset%>" /> - </div> - <% if msg then %><br /><div class="error"><%:error%>: <%=msg%></div><% end %> -</form> -<%+footer%>
\ No newline at end of file +<ul> +<li><strong><%:a_s_p_ipkg_pkglists%>:</strong> <code>src <em>Name</em> <em>URL</em></code></li> +<li><strong><%:a_s_p_ipkg_targets%>:</strong> <code>dest <em>Name</em> <em>Pfad</em></code></li> +</ul> |