summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--libs/cbi/luasrc/cbi.lua8
-rw-r--r--modules/admin-full/luasrc/controller/admin/system.lua44
-rw-r--r--modules/admin-full/luasrc/model/cbi/admin_system/ipkg.lua36
-rw-r--r--modules/admin-full/luasrc/view/admin_system/editor.htm28
-rw-r--r--modules/admin-full/luasrc/view/admin_system/ipkg.htm30
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>