diff --git a/public/src/admin/manage/category.js b/public/src/admin/manage/category.js index 743fc2e1a4..c51dba4a01 100644 --- a/public/src/admin/manage/category.js +++ b/public/src/admin/manage/category.js @@ -184,24 +184,24 @@ define('admin/manage/category', [ privilege = checkboxEl.parent().attr('data-privilege'), state = checkboxEl.prop('checked'), rowEl = checkboxEl.parents('tr'), - member = rowEl.attr('data-group-name') || rowEl.attr('data-uid'); + member = rowEl.attr('data-group-name') || rowEl.attr('data-uid'), + isPrivate = parseInt(rowEl.attr('data-private') || 0, 10), + isGroup = rowEl.attr('data-group-name') !== undefined; if (member) { - socket.emit('admin.categories.setPrivilege', { - cid: ajaxify.variables.get('cid'), - privilege: privilege, - set: state, - member: member - }, function(err) { - if (err) { - return app.alertError(err.message); - } - - checkboxEl.replaceWith(''); - Category.refreshPrivilegeTable(); - }); + if (isGroup && privilege === 'groups:moderate' && !isPrivate && state) { + bootbox.confirm('Are you sure you wish to grant the moderation privilege to this user group? This group is public, and any users can join at will.', function(confirm) { + if (confirm) { + Category.setPrivilege(member, privilege, state, checkboxEl); + } else { + checkboxEl.prop('checked', checkboxEl.prop('checked') ^ 1); + } + }); + } else { + Category.setPrivilege(member, privilege, state, checkboxEl); + } } else { - app.alertError('No member or group was selected'); + app.alertError('[[error:invalid-data]]'); } }) }; @@ -220,6 +220,22 @@ define('admin/manage/category', [ }); }; + Category.setPrivilege = function(member, privilege, state, checkboxEl) { + socket.emit('admin.categories.setPrivilege', { + cid: ajaxify.variables.get('cid'), + privilege: privilege, + set: state, + member: member + }, function(err) { + if (err) { + return app.alertError(err.message); + } + + checkboxEl.replaceWith(''); + Category.refreshPrivilegeTable(); + }); + }; + Category.launchParentSelector = function() { socket.emit('categories.get', function(err, categories) { templates.parse('partials/category_list', { diff --git a/public/src/modules/helpers.js b/public/src/modules/helpers.js index 042075e6a3..04937895c5 100644 --- a/public/src/modules/helpers.js +++ b/public/src/modules/helpers.js @@ -108,7 +108,7 @@ } }; - helpers.spawnPrivilegeStates = function(privileges) { + helpers.spawnPrivilegeStates = function(member, privileges) { var states = []; for(var priv in privileges) { if (privileges.hasOwnProperty(priv)) { @@ -119,7 +119,7 @@ } } return states.map(function(priv) { - return '
You can configure the access control privileges for this category in this section. Privileges can be granted on a per-user or - a per-group basis. You can add a new user or group to this table by searching for them in the form below. + a per-group basis. You can add a new user to this table by searching for them in the form below.
Note: Privilege settings take effect immediately. It is not necessary to save the category after adjusting diff --git a/src/views/admin/partials/categories/privileges.tpl b/src/views/admin/partials/categories/privileges.tpl index c1f6aa8979..b6b33ac42b 100644 --- a/src/views/admin/partials/categories/privileges.tpl +++ b/src/views/admin/partials/categories/privileges.tpl @@ -11,7 +11,7 @@