summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--contrib/media/cascade.css5
-rw-r--r--src/ffluci/controller/admin/system.lua28
-rw-r--r--src/ffluci/fs.lua12
-rw-r--r--src/ffluci/view/admin_system/editor.htm14
4 files changed, 50 insertions, 9 deletions
diff --git a/contrib/media/cascade.css b/contrib/media/cascade.css
index 8555e3f829..8fc11994e6 100644
--- a/contrib/media/cascade.css
+++ b/contrib/media/cascade.css
@@ -236,4 +236,9 @@ code {
.cbi-optionals option {
font-size: 0.8em;
+}
+
+.error {
+ color: red;
+ font-weight: bold;
} \ No newline at end of file
diff --git a/src/ffluci/controller/admin/system.lua b/src/ffluci/controller/admin/system.lua
index be2d9b6eb6..5e32041538 100644
--- a/src/ffluci/controller/admin/system.lua
+++ b/src/ffluci/controller/admin/system.lua
@@ -2,6 +2,8 @@ module("ffluci.controller.admin.system", package.seeall)
require("ffluci.sys")
require("ffluci.http")
+require("ffluci.util")
+require("ffluci.fs")
menu = {
descr = "System",
@@ -11,6 +13,32 @@ menu = {
}
}
+function action_editor()
+ local file = ffluci.http.formvalue("file")
+ local data = ffluci.http.formvalue("data")
+ local err = nil
+ local msg = nil
+ local stat = nil
+
+ if file and data then
+ stat, err = pcall(ffluci.fs.writefile, file, data)
+ end
+
+ if not stat then
+ err = ffluci.util.split(err, " ")
+ table.remove(err, 1)
+ msg = table.concat(err, " ")
+ end
+
+ local stat, cnt = pcall(ffluci.fs.readfile, fname)
+ if stat and cnt then
+ cnt = ffluci.util.pcdata(cnt)
+ else
+ cnt = nil
+ end
+ ffluci.template.render("admin_system/editor", {fn=file, cnt=cnt, msg=msg})
+end
+
function action_passwd()
local p1 = ffluci.http.formvalue("pwd1")
local p2 = ffluci.http.formvalue("pwd2")
diff --git a/src/ffluci/fs.lua b/src/ffluci/fs.lua
index 1896122798..e262caa3c3 100644
--- a/src/ffluci/fs.lua
+++ b/src/ffluci/fs.lua
@@ -84,14 +84,10 @@ function mtime(path)
end
-- basename wrapper
-function basename(path)
- return posix.basename(path)
-end
+basename = posix.basename
-- dirname wrapper
-function dirname(path)
- return posix.dirname(path)
-end
+dirname = posix.dirname
-- Diriterator - alias for lfs.dir - filter . and ..
function dir(path)
@@ -102,6 +98,4 @@ function dir(path)
end
-- Alias for lfs.mkdir
-function mkdir(...)
- return posix.mkdir(...)
-end \ No newline at end of file
+mkdir = posix.mkdir \ No newline at end of file
diff --git a/src/ffluci/view/admin_system/editor.htm b/src/ffluci/view/admin_system/editor.htm
new file mode 100644
index 0000000000..d4b3302efa
--- /dev/null
+++ b/src/ffluci/view/admin_system/editor.htm
@@ -0,0 +1,14 @@
+<%+header%>
+<h1><%:texteditor Texteditor%></h1>
+<form method="post" action="<%=controller%>/admin/system/editor">
+<div><%:file Datei%>: <input type="text" name="file" size="30" value="<%=fn%>" />
+<% if msg then %><span class="error"><%:error Fehler%>: <%=msg%></span><% end %></div>
+<br />
+<div><textarea style="width: 100%" rows="20" name="data"><%=(cnt or '')%></textarea></div>
+<br />
+<div>
+ <input type="submit" value="<%:save Speichern%>" />
+ <input type="reset" value="<%:reset Zurücksetzen%>" />
+</div>
+</form>
+<%+footer%> \ No newline at end of file