diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/Makefile | 1 | ||||
-rw-r--r-- | app/acf-util/acf-util.roles | 4 | ||||
-rw-r--r-- | app/acf-util/roles-editrole-html.lsp | 62 | ||||
-rw-r--r-- | app/acf-util/roles-model.lua | 7 | ||||
-rw-r--r-- | app/acf-util/roles-viewroles-html.lsp | 5 |
5 files changed, 72 insertions, 7 deletions
diff --git a/app/Makefile b/app/Makefile index b840e75..49f3ec0 100644 --- a/app/Makefile +++ b/app/Makefile @@ -1,6 +1,7 @@ include ../config.mk APP_DIST= \ + acf-util/acf-util.roles \ acf-util/logon-controller.lua \ acf-util/logon-html.lsp \ acf-util/logon-model.lua \ diff --git a/app/acf-util/acf-util.roles b/app/acf-util/acf-util.roles new file mode 100644 index 0000000..b31297c --- /dev/null +++ b/app/acf-util/acf-util.roles @@ -0,0 +1,4 @@ +GUEST=logon:logon,logon:logout,logon:status,welcome:read +USER=password:editme,roles:read +EXPERT= +ADMIN=logon:logon,logon:logout,logon:status,password:editme,password:status,password:edituser,password:newuser,password:deleteuser,roles:read,roles:getpermslist,roles:viewuserroles,roles:viewroleperms,roles:viewroles,roles:editrole,roles:deleterole,roles:newrole,welcome:read,password:status,password:edituser,password:newuser,password:deleteuser,roles:getpermslist,roles:viewuserroles,roles:viewroleperms,roles:viewroles,roles:editrole,roles:deleterole,roles:newrole diff --git a/app/acf-util/roles-editrole-html.lsp b/app/acf-util/roles-editrole-html.lsp index 5f106fc..0a32839 100644 --- a/app/acf-util/roles-editrole-html.lsp +++ b/app/acf-util/roles-editrole-html.lsp @@ -7,11 +7,67 @@ <H1><%= form.label %></H1> <% - form.action = page_info.script .. page_info.prefix .. page_info.controller .. "/" .. page_info.action + displayformstart(form, page_info) -- If editing existing role, disable role if page_info.action ~= "newrole" then form.value.role.contenteditable = false end - local order = { "role", "permissions" } - displayform(form, order) + io.write("<DL>\n") + displayformitem(form.value.role, "role") + + -- copied this code from viewfunctions so we can disable the default boxes + local myitem = form.value.permissions + myitem.name = "permissions" + io.write("<DT") + if myitem.errtxt then + myitem.class = "error" + io.write(' class="error"') + end + io.write(">" .. myitem.label .. "</DT>\n") + io.write("<DD>") + -- FIXME multiple select doesn't work in haserl, so use series of checkboxes + myitem.class = nil + local tempname = myitem.name + local tempval = myitem.value or {} + local reversedefault = {} + for x,val in ipairs(myitem.default or {}) do + reversedefault[val] = x + end + local reverseval = {} + for x,val in ipairs(tempval) do + reverseval[val] = x + end + local reverseopt = {} + for x,val in ipairs(myitem.option) do + reverseopt[val] = x + myitem.value = val + myitem.checked = reverseval[val] + if reversedefault[val] then myitem.disabled = true else myitem.disabled = nil end + myitem.name = tempname .. "." .. x + io.write(html.form.checkbox(myitem) .. val .. "<br>\n") + end + -- Check for values not in options + if myitem.errtxt then + myitem.class = "error" + io.write('<p class="error">\n') + end + for x,val in ipairs(tempval) do + if not reverseopt[val] then + myitem.value = val + myitem.checked = true + io.write(html.form.checkbox(myitem) .. val .. "<br>\n") + end + end + if myitem.errtxt then + io.write('</p>\n') + end + myitem.name = tempname + myitem.value = tempval + + if myitem.descr then io.write('<P CLASS="descr">' .. string.gsub(myitem.descr, "\n", "<BR>") .. "</P>\n") end + if myitem.errtxt then io.write('<P CLASS="error">' .. string.gsub(myitem.errtxt, "\n", "<BR>") .. "</P>\n") end + io.write("</DD>\n") + + io.write("</DL>\n") + displayformend(form) %> diff --git a/app/acf-util/roles-model.lua b/app/acf-util/roles-model.lua index bdfe20d..79c1b14 100644 --- a/app/acf-util/roles-model.lua +++ b/app/acf-util/roles-model.lua @@ -58,10 +58,13 @@ end getpermissions = function(self, role) local my_perms = {} + local default_perms = {} if role then - tmp, my_perms = roles.get_role_perm(self, role) + local tmp + tmp, my_perms, default_perms = roles.get_role_perm(self, role) my_perms = my_perms or {} + default_perms = default_perms or {} else role = "" end @@ -69,7 +72,7 @@ getpermissions = function(self, role) local tmp, all_perms = get_all_permissions(self) table.sort(all_perms) - local permissions_cfe = cfe({ type="multi", value=my_perms, option=all_perms, label="Role permissions" }) + local permissions_cfe = cfe({ type="multi", value=my_perms, option=all_perms, label="Role permissions", default=default_perms }) local role_cfe = cfe({ value=role, label="Role" }) return cfe({ type="table", value={role=role_cfe, permissions=permissions_cfe} }) diff --git a/app/acf-util/roles-viewroles-html.lsp b/app/acf-util/roles-viewroles-html.lsp index 8b9a10f..0334499 100644 --- a/app/acf-util/roles-viewroles-html.lsp +++ b/app/acf-util/roles-viewroles-html.lsp @@ -18,9 +18,10 @@ <% if view.value.default_roles then %> <dl> <% for x,role in pairs(view.value.default_roles.value) do %> - <dt><img src='/static/tango/16x16/categories/applications-system.png' height='16' width='16'> <%= role %></dt> + <dt><img src='/skins/static/tango/16x16/categories/applications-system.png' height='16' width='16'> <%= role %></dt> <dd> [<a href='viewroleperms?role=<%= role %>'>View this role</a>] + [<a href='editrole?role=<%= role %>&redir=<%= page_info.orig_action %>'>Edit this role</a>] </dd> <% end %> </dl> @@ -29,7 +30,7 @@ <dl> <% table.sort(view.value.defined_roles.value) %> <% for x,role in pairs(view.value.defined_roles.value) do %> - <dt><img src='/static/tango/16x16/apps/system-users.png' height='16' width='16'> <%= role %></dt> + <dt><img src='/skins/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 %>&redir=<%= page_info.orig_action %>'>Edit this role</a>] |