diff options
Diffstat (limited to 'vmail-listusers-html.lsp')
-rw-r--r-- | vmail-listusers-html.lsp | 107 |
1 files changed, 85 insertions, 22 deletions
diff --git a/vmail-listusers-html.lsp b/vmail-listusers-html.lsp index 1972dc5..6e621e0 100644 --- a/vmail-listusers-html.lsp +++ b/vmail-listusers-html.lsp @@ -12,13 +12,77 @@ html = require("acf.html") <script type="text/javascript"> if (typeof $.tablesorter == 'undefined') { document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery.tablesorter.js"><\/script>'); + document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery.tablesorter.widgets.js"><\/script>'); + document.write('<link href="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/jquery.tablesorter.pager.css" rel="stylesheet">'); + document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/widgets/widget-pager.js"><\/script>'); } </script> <script type="text/javascript"> $(document).ready(function() { - $("#list").tablesorter({headers: {0:{sorter: false}}, widgets: ['zebra']}); - $(".deleteuser").click(function(){ return confirm("Are you sure you want to delete this user?")}); + // The following is a hack to include a multiline string + var MultiString = function(f) { + return f.toString().split('\n').slice(1, -1).join('\n'); + } + var actions = MultiString(function() {/** + <% + local username = cfe({ type="hidden", value="REPLACEME" }) + local redir = cfe({ type="hidden", value=page_info.orig_action }) + if viewlibrary.check_permission("editusersettings") then + htmlviewfunctions.displayitem(cfe({type="link", value={username=username, redir=redir}, label="", option="Edit", action="editusersettings"}), page_info, -1) + end + if viewlibrary.check_permission("deleteuser") then + htmlviewfunctions.displayitem(cfe({type="form", value={username=username}, label="", option="Delete", action="deleteuser", class="deleteuser" }), page_info, -1) + end + %> + **/}); + + $("#list").tablesorter({headers: {0:{sorter: false}}, widgets: ['zebra', 'filter', 'pager'], widgetOptions: { + // Filtering is handled by the server + filter_serversideFiltering: true, + + // We can put the page number and size here, filtering and sorting handled by pager_customAjaxUrl + pager_ajaxUrl : '<%= html.html_escape(page_info.script .. page_info.orig_action) %>?viewtype=json&page={page+1}&pagesize={size}', + + // Modify the url after all processing has been applied to handle filtering and sorting + pager_customAjaxUrl: function(table, url) { + var columns = ["action", "username", "firstname", "lastname"]; + var directions = ["asc", "desc"]; + for (var s=0; s<table.config.sortList.length; s++) { + // 0=column number, 1=direction(0 is asc) + if ((table.config.sortList[s][0] < columns.length) && (table.config.sortList[s][1] < directions.length)) { + url += "&orderby."+(s+1)+".column="+columns[table.config.sortList[s][0]]+"&orderby."+(s+1)+".direction="+directions[table.config.sortList[s][1]] + } + } + for (var f=0; f<table.config.pager.currentFilters.length; f++) { + var filter = table.config.pager.currentFilters[f]; + if (filter.trim()) { + url += "&filter."+columns[f]+"="+encodeURIComponent(filter.trim()); + } + } + return url; + }, + + // process ajax so that the following information is returned: + // [ total_rows (number), rows (array of arrays), headers (array; optional) ] + pager_ajaxProcessing: function(data){ + if (data && data.value && data.value.result) { + rows = []; + for ( r=0; r<data.value.result.value.length; r++) { + row=[]; + row[0] = actions.replace(/REPLACEME/g, data.value.result.value[r].username); + row[1] = data.value.result.value[r].username; + row[2] = data.value.result.value[r].firstname; + row[3] = data.value.result.value[r].lastname; + rows.push(row); + } + return [ parseInt(data.value.rowcount.value), rows]; + } + } + }}) + .bind('pagerComplete', function(e, c){ + $(".deleteuser").click(function(){ return confirm("Are you sure you want to delete this user?")}); + }); }); </script> @@ -28,37 +92,36 @@ html = require("acf.html") <% local header_level2 = htmlviewfunctions.incrementheader(header_level) %> <table id="list" class="tablesorter"><thead> <tr> - <th>Action</th> + <th class="filter-false remove sorter-false">Action</th> <th>Extension</th> <th>First Name</th> <th>Last Name</th> </tr> </thead><tbody> -<% local username = cfe({ type="hidden", value="" }) %> -<% local redir = cfe({ type="hidden", value=page_info.orig_action }) %> -<% for k,v in ipairs( view.value ) do %> - <tr> - <td> - <% username.value = v.username %> - <% if viewlibrary.check_permission("editusersettings") then %> - <% htmlviewfunctions.displayitem(cfe({type="link", value={username=username, redir=redir}, label="", option="Edit", action="editusersettings"}), page_info, -1) %> - <% end %> - <% if viewlibrary.check_permission("deleteuser") then %> - <% htmlviewfunctions.displayitem(cfe({type="form", value={username=username}, label="", option="Delete", action="deleteuser", class="deleteuser" }), page_info, -1) %> - <% end %> - </td> - <td><%= html.html_escape(v.username) %></td> - <td><%= html.html_escape(v.firstname) %></td> - <td><%= html.html_escape(v.lastname) %></td> - </tr> -<% end %> </tbody> </table> +<div id="pager" class="pager"> + <form> + Page: <select class="gotoPage"></select> + <img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/first.png" class="first"/> + <img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/prev.png" class="prev"/> + <span class="pagedisplay"></span> <!-- this can be any element, including an input --> + <img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/next.png" class="next"/> + <img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/last.png" class="last"/> + <select class="pagesize"> + <option selected="selected" value="10">10</option> + <option value="20">20</option> + <option value="30">30</option> + <option value="40">40</option> + </select> + </form> +</div> + <% if view.errtxt then %> <p class="error"><%= html.html_escape(view.errtxt) %></p> <% end %> -<% if #view.value == 0 then %> +<% if #view.value.result.value == 0 then %> <p>No users found</p> <% end %> |