summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xapp/acf-util/password-controller.lua2
-rwxr-xr-xapp/acf-util/password-status-html.lsp11
-rw-r--r--app/acf-util/roles-controller.lua4
-rw-r--r--app/acf-util/roles-viewroles-html.lsp5
-rw-r--r--app/acf_www-controller.lua9
-rw-r--r--app/filedetails-html.lsp9
-rw-r--r--app/status-html.lsp4
-rw-r--r--lib/controllerfunctions.lua15
-rw-r--r--lib/viewfunctions.lua35
9 files changed, 64 insertions, 30 deletions
diff --git a/app/acf-util/password-controller.lua b/app/acf-util/password-controller.lua
index bea4480..b2fab85 100755
--- a/app/acf-util/password-controller.lua
+++ b/app/acf-util/password-controller.lua
@@ -60,7 +60,7 @@ function newuser(self)
return self.model.read_user(self)
end, function(value)
return self.model.create_user(self, value)
- end, self.clientdata, "Save", "New User Settings", "Saved user", "status")
+ end, self.clientdata, "Save", "New User Settings", "Saved user")
end
function deleteuser(self)
diff --git a/app/acf-util/password-status-html.lsp b/app/acf-util/password-status-html.lsp
index 26416ce..d7db4e9 100755
--- a/app/acf-util/password-status-html.lsp
+++ b/app/acf-util/password-status-html.lsp
@@ -1,4 +1,4 @@
-<% local form, viewlibrary, pageinfo, session = ... %>
+<% local form, viewlibrary, page_info, session = ... %>
<% require("viewfunctions") %>
<%
--[[ DEBUG INFORMATION
@@ -8,11 +8,12 @@ io.write("</span>")
--]]
%>
-<% displaycommandresults({"deleteuser"}, session) %>
+<% displaycommandresults({"newuser", "edituser", "deleteuser"}, session) %>
<H1>User Accounts</H1>
<H2>Create new account</H2>
-<form action="newuser" method="POST">
+<form action="<%= page_info.script .. page_info.prefix .. page_info.controller %>/newuser" method="POST">
+<input class="hidden" type="hidden" name="redir" value="<%= page_info.orig_action %>" >
<dl><dt></dt><dd><input class="submit" type="submit" value="New User"></dd></dl>
</form>
<H2>Existing account</H2>
@@ -32,9 +33,9 @@ io.write("</span>")
</TR><TR>
<TD STYLE='border:none;'><B>Option</B></TD>
<TD STYLE='border:none;'>
- [<A HREF='edituser?userid=<%= name %>'>Edit this account</A>]
+ [<A HREF='edituser?userid=<%= name %>&redir=<%= page_info.orig_action %>'>Edit this account</A>]
[<A HREF='deleteuser?userid=<%= name %>'>Delete this account</A>]
- [<A HREF='<%= pageinfo.script %>/acf-util/roles/viewuserroles?userid=<%= name %>'>View roles for this account</A>]
+ [<A HREF='<%= page_info.script %>/acf-util/roles/viewuserroles?userid=<%= name %>'>View roles for this account</A>]
</TD>
</TR>
</TABLE></DD>
diff --git a/app/acf-util/roles-controller.lua b/app/acf-util/roles-controller.lua
index 91d4d9c..738f54f 100644
--- a/app/acf-util/roles-controller.lua
+++ b/app/acf-util/roles-controller.lua
@@ -47,14 +47,14 @@ newrole = function(self)
return controllerfunctions.handle_form(self,
function() return self.model.getpermissions(self) end,
function(value) return self.model.setpermissions(self, value, true) end,
- self.clientdata, "Save", "Create New Role", "New Role Created", "viewroles")
+ self.clientdata, "Save", "Create New Role", "New Role Created")
end
editrole = function(self)
return controllerfunctions.handle_form(self,
function() return self.model.getpermissions(self, self.clientdata.role) end,
function(value) return self.model.setpermissions(self, value, false) end,
- self.clientdata, "Save", "Edit Role", "Role Saved", "viewroles")
+ self.clientdata, "Save", "Edit Role", "Role Saved")
end
deleterole = function(self)
diff --git a/app/acf-util/roles-viewroles-html.lsp b/app/acf-util/roles-viewroles-html.lsp
index f5ca4d5..8b9a10f 100644
--- a/app/acf-util/roles-viewroles-html.lsp
+++ b/app/acf-util/roles-viewroles-html.lsp
@@ -5,11 +5,12 @@
io.write(html.cfe_unpack(view))
--]] %>
-<% displaycommandresults({"deleterole"}, session) %>
+<% displaycommandresults({"newrole", "editrole", "deleterole"}, session) %>
<H1>Roles</H1>
<H2>Create new role</H2>
<form action="<%= page_info.script .. page_info.prefix .. page_info.controller %>/newrole" method="POST">
+<input class="hidden" type="hidden" name="redir" value="<%= page_info.orig_action %>" >
<dl><dt></dt><dd><input class="submit" type="submit" value="New Role"></dd></dl>
</form>
@@ -31,7 +32,7 @@
<dt><img src='/static/tango/16x16/apps/system-users.png' height='16' width='16'> <%= role %></dt>
<dd>
[<a href='viewroleperms?role=<%= role %>'>View this role</a>]
- [<a href='editrole?role=<%= role %>'>Edit this role</a>]
+ [<a href='editrole?role=<%= role %>&redir=<%= page_info.orig_action %>'>Edit this role</a>]
[<a href='deleterole?role=<%= role %>'>Delete this role</a>]
</dd>
<% end %>
diff --git a/app/acf_www-controller.lua b/app/acf_www-controller.lua
index 5f5abcd..3587578 100644
--- a/app/acf_www-controller.lua
+++ b/app/acf_www-controller.lua
@@ -134,6 +134,7 @@ local dispatch_component = function(str, clientdata, suppress_view)
end
self.conf.component = true
self.conf.suppress_view = suppress_view
+ self.conf.orig_action = self.conf.orig_action or self.conf.prefix .. self.conf.controller .. "/" .. self.conf.action
local tempclientdata = self.clientdata
self.clientdata = clientdata or {}
self.clientdata.sessionid = tempclientdata.sessionid
@@ -200,7 +201,8 @@ local view_resolver = function(self)
script = self.conf.script,
appname = self.conf.appname,
skindir = self.conf.skindir or "",
- skin = self.conf.skin or ""
+ skin = self.conf.skin or "",
+ orig_action = self.conf.orig_action or self.conf.prefix .. self.conf.controller .. "/" .. self.conf.action
}
return func, viewlibrary, pageinfo, self.sessiondata
@@ -453,7 +455,10 @@ end
-- Cause a redirect to specified (or default) action
-- We use the self.conf table because it already has prefix,controller,etc
-- The actual redirection is defined in exception_handler above
-redirect = function (self, str)
+redirect = function (self, str, result)
+ if result then
+ self.sessiondata[self.conf.action.."result"] = result
+ end
local prefix, controller, action = self.parse_path_info("/" .. (str or ""))
if prefix ~= "/" then self.conf.prefix = prefix end
if controller ~= "" then self.conf.controller = controller end
diff --git a/app/filedetails-html.lsp b/app/filedetails-html.lsp
index 4c1f116..ccf7a0c 100644
--- a/app/filedetails-html.lsp
+++ b/app/filedetails-html.lsp
@@ -17,10 +17,11 @@ displayitem(form.value.mtime)
</DL>
<H3>File Content</H3>
-<% if form.descr then %><P CLASS='descr'><%= string.gsub(form.descr, "\n", "<BR>") %></P><% end %>
-<% if form.errtxt then %><P CLASS='error'><%= string.gsub(form.errtxt, "\n", "<BR>") %></P><% end %>
-<form action="<%= page_info.script .. page_info.prefix .. page_info.controller .. "/" .. page_info.action %>" method="POST">
+<% if form.type == "form" then %>
+<% form.action = page_info.script .. page_info.prefix .. page_info.controller .. "/" .. page_info.action %>
+<% displayformstart(form) %>
<input type="hidden" name="filename" value="<%= form.value.filename.value %>">
+<% end %>
<textarea name="filecontent">
<%= html.html_escape(form.value.filecontent.value) %>
</textarea>
@@ -29,6 +30,6 @@ displayitem(form.value.mtime)
<% if form.type == "form" then %>
<H3>Save</H3>
-<DL><DT>Submit and save above changes</DT><DD><input class="submit" type="submit" name="<%= form.option %>" value="<%= form.option %>"></DD></DL>
+<% displayformend(form) %>
<% end %>
</form>
diff --git a/app/status-html.lsp b/app/status-html.lsp
index d5bdad0..f1e4c5c 100644
--- a/app/status-html.lsp
+++ b/app/status-html.lsp
@@ -2,7 +2,7 @@
require("viewfunctions")
%>
-<% displaycommandresults({"install"}, session) %>
+<% displaycommandresults({"install","edit"}, session) %>
<H1>System Info</H1>
<DL>
@@ -19,6 +19,6 @@ end
displayitem(data.value.autostart)
if not (data.value.version and data.value.version.errtxt) and data.value.autostart and data.value.autostart.errtxt and session.permissions.rc and session.permissions.rc.edit then
%>
- <a href="<%= page_info.script .. "/alpine-baselayout/rc/edit?servicename="..data.value.autostart.name %>">Schedule autostart</a>
+ <a href="<%= page_info.script .. "/alpine-baselayout/rc/edit?servicename="..data.value.autostart.name.."&redir=".. page_info.orig_action %>">Schedule autostart</a>
<% end %>
</DL>
diff --git a/lib/controllerfunctions.lua b/lib/controllerfunctions.lua
index 5c3e559..90d31a4 100644
--- a/lib/controllerfunctions.lua
+++ b/lib/controllerfunctions.lua
@@ -43,7 +43,7 @@ function handle_clientdata(form, clientdata)
end
end
-function handle_form(self, getFunction, setFunction, clientdata, option, label, descr, redirectOnSuccess)
+function handle_form(self, getFunction, setFunction, clientdata, option, label, descr)
local form = getFunction()
if clientdata[option] then
@@ -53,11 +53,20 @@ function handle_form(self, getFunction, setFunction, clientdata, option, label,
if not form.errtxt and descr then
form.descr = descr
end
+
+ if clientdata.redir then
+ form.value.redir = cfe({ type="hidden", value=clientdata.redir, label="" })
+ end
form = self:redirect_to_referrer(form)
- if redirectOnSuccess and not form.errtxt then
- self:redirect(redirectOnSuccess)
+ if clientdata.redir and not form.errtxt then
+ form.value = form.descr -- make it a command result
+ form.descr = nil
+ self:redirect(clientdata.redir, form)
end
else
+ if clientdata.redir then
+ form.value.redir = cfe({ type="hidden", value=clientdata.redir, label="" })
+ end
form = self:redirect_to_referrer() or form
end
diff --git a/lib/viewfunctions.lua b/lib/viewfunctions.lua
index 19911a0..c3e4b6a 100644
--- a/lib/viewfunctions.lua
+++ b/lib/viewfunctions.lua
@@ -102,13 +102,15 @@ end
function displayformitem(myitem, name, viewtype)
if not myitem then return end
if name then myitem.name = name end
- io.write("<DT")
- if myitem.errtxt then
- myitem.class = "error"
- io.write(' class="error"')
+ if myitem.type ~= "hidden" then
+ io.write("<DT")
+ if myitem.errtxt then
+ myitem.class = "error"
+ io.write(' class="error"')
+ end
+ io.write(">" .. myitem.label .. "</DT>\n")
+ io.write("<DD></DD>\n")
end
- io.write(">" .. myitem.label .. "</DT>\n")
- io.write("<DD>")
if (viewtype == "viewonly") then
myitem.disabled = "true"
end
@@ -163,13 +165,21 @@ function displayformitem(myitem, name, viewtype)
io.write("</DD>\n")
end
-function displayform(myform, order, finishingorder)
+function displayformstart(myform)
if not myform then return end
if myform.descr then io.write('<P CLASS="descr">' .. string.gsub(myform.descr, "\n", "<BR>") .. "</P>\n") end
if myform.errtxt then io.write('<P CLASS="error">' .. string.gsub(myform.errtxt, "\n", "<BR>") .. "</P>\n") end
io.write('<form action="' .. (myform.action or "") .. '" method="POST">\n')
+ if myform.value.redir then
+ displayformitem(myform.value.redir, "redir")
+ end
+end
+
+function displayform(myform, order, finishingorder)
+ if not myform then return end
+ displayformstart(myform)
io.write('<DL>\n')
- local reverseorder= {}
+ local reverseorder= {["redir"]=0}
if order then
for x,name in ipairs(order) do
reverseorder[name] = x
@@ -199,6 +209,13 @@ function displayform(myform, order, finishingorder)
end
end
end
+ io.write('</DL>\n')
+ displayformend(myform)
+end
+
+function displayformend(myform)
+ if not myform then return end
+ io.write('<DL>\n')
io.write('<DT></DT><DD><input class="submit" type="submit" name="' .. myform.option .. '" value="' .. (myform.submit or myform.option) .. '"></DD>\n')
io.write('</DL>\n')
io.write('</FORM>')
@@ -215,7 +232,7 @@ function displaycommandresults(commands, session)
if #cmdresult > 0 then
io.write("<H1>Command Result</H1>\n<DL>\n")
for i,result in ipairs(cmdresult) do
- if result.value ~= "" then io.write(result.value:gsub("\n", "<BR>") .. "\n") end
+ if type(result.value) == "string" and result.value ~= "" then io.write(result.value:gsub("\n", "<BR>") .. "\n") end
if result.descr then io.write('<P CLASS="descr">' .. string.gsub(result.descr, "\n", "<BR>") .. "</P>\n") end
if result.errtxt then io.write('<P CLASS="error">' .. string.gsub(result.errtxt, "\n", "<BR>") .. "</P>\n") end
end