diff options
author | Ted Trask <ttrask01@yahoo.com> | 2015-06-22 11:47:25 -0400 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2015-06-22 11:47:25 -0400 |
commit | 367f4f733f76da068f4125d420c475e8d085cf49 (patch) | |
tree | ff552a8abe06c9f0987721191fa47f78dff00e17 | |
parent | a23996b6ea30c01edb424c77421ef2d64cf62fc7 (diff) | |
download | acf-freeswitch-vmail-367f4f733f76da068f4125d420c475e8d085cf49.tar.bz2 acf-freeswitch-vmail-367f4f733f76da068f4125d420c475e8d085cf49.tar.xz |
Add searchusers action and make editusers and listusers actually be different
-rw-r--r-- | vmail-controller.lua | 4 | ||||
-rw-r--r--[l---------] | vmail-editusers-html.lsp | 17 | ||||
-rw-r--r-- | vmail-listusers-html.lsp | 8 | ||||
-rw-r--r-- | vmail-model.lua | 39 | ||||
-rw-r--r-- | vmail-searchusers-html.lsp | 24 | ||||
-rw-r--r-- | vmail.menu | 1 | ||||
-rw-r--r-- | vmail.roles | 4 |
7 files changed, 84 insertions, 13 deletions
diff --git a/vmail-controller.lua b/vmail-controller.lua index 517664c..5c0c89a 100644 --- a/vmail-controller.lua +++ b/vmail-controller.lua @@ -10,8 +10,8 @@ mymodule.listusers = function( self ) return self.model.list_users() end -mymodule.editusers = function( self ) - return self.model.list_users() +mymodule.searchusers = function( self ) + return self.handle_form(self, self.model.get_search_options, self.model.search_users, self.clientdata, "Search", "Search Users") end mymodule.deleteuser = function( self ) diff --git a/vmail-editusers-html.lsp b/vmail-editusers-html.lsp index 215a6d3..0a708e9 120000..100644 --- a/vmail-editusers-html.lsp +++ b/vmail-editusers-html.lsp @@ -1 +1,16 @@ -vmail-listusers-html.lsp
\ No newline at end of file +<% local view, viewlibrary, page_info, session = ... +htmlviewfunctions = require("htmlviewfunctions") +%> + +<% if viewlibrary and viewlibrary.dispatch_component and viewlibrary.check_permission("listusers") then + viewlibrary.dispatch_component("listusers") +end %> + +<% local redir = cfe({ type="hidden", value=page_info.orig_action }) %> +<% if viewlibrary and viewlibrary.dispatch_component and viewlibrary.check_permission("createuser") then %> +<% htmlviewfunctions.displayitem(cfe({type="link", value={redir=redir}, label="Create New User", option="Create", action="createuser" }), page_info) %> +<% end %> + +<% if viewlibrary and viewlibrary.dispatch_component and viewlibrary.check_permission("createmanyusers") then %> +<% htmlviewfunctions.displayitem(cfe({type="link", value={redir=redir}, label="Create Multiple Users", option="Create", action="createmanyusers" }), page_info) %> +<% end %> diff --git a/vmail-listusers-html.lsp b/vmail-listusers-html.lsp index 1972dc5..877b382 100644 --- a/vmail-listusers-html.lsp +++ b/vmail-listusers-html.lsp @@ -62,12 +62,4 @@ html = require("acf.html") <p>No users found</p> <% end %> -<% if viewlibrary and viewlibrary.dispatch_component and viewlibrary.check_permission("createuser") then %> -<% htmlviewfunctions.displayitem(cfe({type="link", value={redir=redir}, label="Create New User", option="Create", action="createuser" }), page_info, header_level2) %> -<% end %> - -<% if viewlibrary and viewlibrary.dispatch_component and viewlibrary.check_permission("createmanyusers") then %> -<% htmlviewfunctions.displayitem(cfe({type="link", value={redir=redir}, label="Create Multiple Users", option="Create", action="createmanyusers" }), page_info, header_level2) %> -<% end %> - <% htmlviewfunctions.displaysectionend(header_level) %> diff --git a/vmail-model.lua b/vmail-model.lua index 51261cf..f3f7cac 100644 --- a/vmail-model.lua +++ b/vmail-model.lua @@ -751,6 +751,45 @@ mymodule.list_users = function() return cfe({ type="structure", value=users, label="Voicemail Users", errtxt=errtxt }) end +mymodule.get_search_options = function(self, clientdata) + retval = cfe({type="group", value={}, label="User Search"}) + retval.value.username = cfe({label="Extension", seq=1}) + retval.value.firstname = cfe({label="First Name", seq=2}) + retval.value.lastname = cfe({label="Last Name", seq=3}) + return retval +end + +mymodule.search_users = function(self, search) + -- No validation + local res, err = pcall(function() + local connected = vmaildb.databaseconnect() + local where = {} + if search.value.username.value ~= "" then + where[#where+1] = "u.username ~ '"..vmaildb.escape(search.value.username.value).."'" + end + if search.value.firstname.value ~= "" then + where[#where+1] = "v2.value ~ '"..vmaildb.escape(search.value.firstname.value).."'" + end + if search.value.lastname.value ~= "" then + where[#where+1] = "v1.value ~ '"..vmaildb.escape(search.value.lastname.value).."'" + end + -- This crazy query gets the username from voicemail_users, the firstname and lastname from two instances of voicemail_values (using voicemail_params to determine the corresponding nid values) drops usernames starting with "tempuser" and ordering by username + local sql = "SELECT u.username, v1.value lastname, v2.value firstname FROM voicemail_users u LEFT OUTER JOIN voicemail_values v1 ON u.uid = v1.uid AND v1.nid=(SELECT nid FROM voicemail_params WHERE name='lastname') LEFT OUTER JOIN voicemail_values v2 ON u.uid = v2.uid AND v2.nid=(SELECT nid FROM voicemail_params WHERE name='firstname')" + if #where then + sql = sql.." WHERE "..table.concat(where, " AND ") + end + sql = sql.." ORDER BY u.username" + local users = vmaildb.getselectresponse(sql) + search.value.result = cfe({ type="structure", value=users, label="Voicemail Users" }) + if connected then databasedisconnect() end + end) + if not res and err then + search.errtxt = err + end + + return search +end + mymodule.get_delete_user = function(self, clientdata) local result = {} result.username = cfe({ value=clientdata.username or "", label="User Name" }) diff --git a/vmail-searchusers-html.lsp b/vmail-searchusers-html.lsp new file mode 100644 index 0000000..92cd7fd --- /dev/null +++ b/vmail-searchusers-html.lsp @@ -0,0 +1,24 @@ +<% local form, viewlibrary, page_info, session = ... +htmlviewfunctions = require("htmlviewfunctions") +html = require("acf.html") +%> + +<script type="text/javascript"> + if (typeof jQuery == 'undefined') { + document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery-latest.js"><\/script>'); + } +</script> + +<% htmlviewfunctions.displaycommandresults({"createuser", "deleteuser", "editusersettings"}, session) %> + +<% +if form.value.result then + local func = haserl.loadfile(page_info.viewfile:gsub("searchusers", "listusers")) + func(form.value.result, viewlibrary, page_info, session) +end +%> + +<% + form.value.result = nil + htmlviewfunctions.displayitem(form, page_info) +%> @@ -1,5 +1,6 @@ # Prefix and controller are already known at this point # Cat Group Tab Action +Applications 88Voicemail Search searchusers Applications 88Voicemail Users editusers Applications 88Voicemail Voicemail listmessages Applications 88Voicemail Voicemail listmymessages diff --git a/vmail.roles b/vmail.roles index 43395b4..a4e728f 100644 --- a/vmail.roles +++ b/vmail.roles @@ -1,5 +1,5 @@ GUEST=vmail:processdialplanxml,vmail:processdirectoryxml -USER=vmail:listfolders,vmail:listusers,vmail:listmymessages,vmail:downloadmymessage,vmail:deletemymessage,vmail:editmyusersettings,vmail:forwardmymessage,vmail:movemymessage,vmail:emailmymessage,vmail:callbackmymessage +USER=vmail:listfolders,vmail:listusers,vmail:searchusers,vmail:listmymessages,vmail:downloadmymessage,vmail:deletemymessage,vmail:editmyusersettings,vmail:forwardmymessage,vmail:movemymessage,vmail:emailmymessage,vmail:callbackmymessage EDITOR=vmail:editusers,vmail:createuser,vmail:createmanyusers,vmail:deleteuser,vmail:editusersettings EXPERT=vmail:editconfig,vmail:listmessages,vmail:downloadmessage,vmail:deletemessage,vmail:forwardmessage,vmail:movemessage,vmail:emailmessage,vmail:callbackmessage -ADMIN=vmail:listmessages,vmail:downloadmessage,vmail:deletemessage,vmail:forwardmessage,vmail:movemessage,vmail:emailmessage,vmail:callbackmessage,vmail:editusersettings,vmail:listfolders,vmail:listusers,vmail:editusers,vmail:createuser,vmail:createmanyusers,vmail:deleteuser,vmail:editconfig +ADMIN=vmail:listmessages,vmail:downloadmessage,vmail:deletemessage,vmail:forwardmessage,vmail:movemessage,vmail:emailmessage,vmail:callbackmessage,vmail:editusersettings,vmail:listfolders,vmail:listusers,vmail:searchusers,vmail:editusers,vmail:createuser,vmail:createmanyusers,vmail:deleteuser,vmail:editconfig |