diff options
Diffstat (limited to 'plugins/acl/acl.js')
-rw-r--r-- | plugins/acl/acl.js | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/plugins/acl/acl.js b/plugins/acl/acl.js index c4011a81c..aa9e06d3d 100644 --- a/plugins/acl/acl.js +++ b/plugins/acl/acl.js @@ -1,7 +1,7 @@ /** * ACL plugin script * - * @version 0.6.3 + * @version @package_version@ * @author Aleksander Machniak <alec@alec.pl> */ @@ -179,9 +179,8 @@ rcube_webmail.prototype.acl_get_usernames = function() if (this.env.acl_specials.length && $.inArray(selection[n], this.env.acl_specials) >= 0) { users.push(selection[n]); } - else { - row = list.rows[selection[n]].obj; - cell = $('td.user', row); + else if (row = list.rows[selection[n]]) { + cell = $('td.user', row.obj); if (cell.length == 1) users.push(cell.text()); } @@ -193,10 +192,17 @@ rcube_webmail.prototype.acl_get_usernames = function() // Removes ACL table row rcube_webmail.prototype.acl_remove_row = function(id) { - this.acl_list.remove_row(id); + var list = this.acl_list; + + list.remove_row(id); + list.clear_selection(); + // we don't need it anymore (remove id conflict) $('#rcmrow'+id).remove(); this.env.acl[id] = null; + + this.enable_command('acl-delete', list.selection.length > 0); + this.enable_command('acl-edit', list.selection.length == 1); } // Adds ACL table row @@ -259,7 +265,7 @@ rcube_webmail.prototype.acl_add_row = function(o, sel) // Initializes and shows ACL create/edit form rcube_webmail.prototype.acl_init_form = function(id) { - var ul, row, val = '', type = 'user', li_elements, body = $('body'), + var ul, row, td, val = '', type = 'user', li_elements, body = $('body'), adv_ul = $('#advancedrights'), sim_ul = $('#simplerights'), name_input = $('#acluser'); @@ -286,10 +292,11 @@ rcube_webmail.prototype.acl_init_form = function(id) li_elements = $(':checkbox', ul); li_elements.attr('checked', false); - if (id) { - row = this.acl_list.rows[id].obj; + if (id && (row = this.acl_list.rows[id])) { + row = row.obj; li_elements.map(function() { - var val = this.value, td = $('td.'+this.id, row); + val = this.value; + td = $('td.'+this.id, row); if (td && td.hasClass('enabled')) this.checked = true; }); @@ -299,6 +306,9 @@ rcube_webmail.prototype.acl_init_form = function(id) else type = id; } + // mark read (lrs) rights by default + else + li_elements.filter(function() { return this.id.match(/^acl([lrs]|read)$/); }).prop('checked', true); name_input.val(val); $('input[value='+type+']').prop('checked', true); |