diff options
-rw-r--r-- | contrib/media/cascade.css | 5 | ||||
-rw-r--r-- | src/ffluci/controller/admin/system.lua | 28 | ||||
-rw-r--r-- | src/ffluci/fs.lua | 12 | ||||
-rw-r--r-- | src/ffluci/view/admin_system/editor.htm | 14 |
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 |