fixed bug where ephemeral groups and the registered-users group wouldn't show in in ACP/category details page for privileges.

v1.18.x
Julian Lam 10 years ago
parent 1229470bba
commit 534b13e089

@ -45,10 +45,7 @@ define('autocomplete', function() {
select: onselect, select: onselect,
source: function(request, response) { source: function(request, response) {
socket.emit('groups.search', { socket.emit('groups.search', {
query: request.term, query: request.term
options: {
filterHidden: true
}
}, function(err, results) { }, function(err, results) {
if (err) { if (err) {
return app.alertError(err.message); return app.alertError(err.message);

@ -361,13 +361,26 @@ var async = require('async'),
return callback(null, []); return callback(null, []);
} }
var keys = groupNames.map(function(groupName) { var keys = groupNames.map(function(groupName) {
return 'group:' + groupName; return 'group:' + groupName;
}); }),
ephemeralIdx = groupNames.reduce(function(memo, cur, idx) {
if (ephemeralGroups.indexOf(cur) !== -1) {
memo.push(idx);
}
return memo;
}, []);
db.getObjects(keys, function(err, groupData) { db.getObjects(keys, function(err, groupData) {
if (err) { if (err) {
return callback(err); return callback(err);
} }
if (ephemeralIdx.length) {
ephemeralIdx.forEach(function(idx) {
groupData[idx] = internals.getEphemeralGroup(groupNames[idx]);
});
}
groupData.forEach(function(group) { groupData.forEach(function(group) {
if (group) { if (group) {
group.userTitle = validator.escape(group.userTitle) || validator.escape(group.name); group.userTitle = validator.escape(group.userTitle) || validator.escape(group.name);

@ -3,7 +3,8 @@
var async = require('async'), var async = require('async'),
user = require('../user'), user = require('../user'),
db = require('./../database'); db = require('./../database'),
groups = module.parent.exports;
module.exports = function(Groups) { module.exports = function(Groups) {
@ -15,8 +16,10 @@ module.exports = function(Groups) {
async.waterfall([ async.waterfall([
async.apply(db.getObjectValues, 'groupslug:groupname'), async.apply(db.getObjectValues, 'groupslug:groupname'),
function(groupNames, next) { function(groupNames, next) {
// Ephemeral groups and the registered-users groups are searchable
groupNames = groups.getEphemeralGroups().concat(groupNames).concat('registered-users');
groupNames = groupNames.filter(function(name) { groupNames = groupNames.filter(function(name) {
return name.toLowerCase().indexOf(query) !== -1 && name !== 'administrators' && name !== 'registered-users' && !Groups.isPrivilegeGroup(name); return name.toLowerCase().indexOf(query) !== -1 && name !== 'administrators' && !Groups.isPrivilegeGroup(name);
}); });
groupNames = groupNames.slice(0, 100); groupNames = groupNames.slice(0, 100);
Groups.getGroupsData(groupNames, next); Groups.getGroupsData(groupNames, next);

Loading…
Cancel
Save