From 534b13e089d0b4595d9a99987da090eaeae86a70 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 10 Jul 2015 15:38:42 -0400 Subject: [PATCH] fixed bug where ephemeral groups and the registered-users group wouldn't show in in ACP/category details page for privileges. --- public/src/modules/autocomplete.js | 5 +---- src/groups.js | 17 +++++++++++++++-- src/groups/search.js | 7 +++++-- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/public/src/modules/autocomplete.js b/public/src/modules/autocomplete.js index 38c4a153b6..a66fff7264 100644 --- a/public/src/modules/autocomplete.js +++ b/public/src/modules/autocomplete.js @@ -45,10 +45,7 @@ define('autocomplete', function() { select: onselect, source: function(request, response) { socket.emit('groups.search', { - query: request.term, - options: { - filterHidden: true - } + query: request.term }, function(err, results) { if (err) { return app.alertError(err.message); diff --git a/src/groups.js b/src/groups.js index 73d2ee8718..f8bacf77d0 100644 --- a/src/groups.js +++ b/src/groups.js @@ -361,13 +361,26 @@ var async = require('async'), return callback(null, []); } 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) { if (err) { return callback(err); } + + if (ephemeralIdx.length) { + ephemeralIdx.forEach(function(idx) { + groupData[idx] = internals.getEphemeralGroup(groupNames[idx]); + }); + } + groupData.forEach(function(group) { if (group) { group.userTitle = validator.escape(group.userTitle) || validator.escape(group.name); diff --git a/src/groups/search.js b/src/groups/search.js index 6969b7b8cd..f7f0ba5a7e 100644 --- a/src/groups/search.js +++ b/src/groups/search.js @@ -3,7 +3,8 @@ var async = require('async'), user = require('../user'), - db = require('./../database'); + db = require('./../database'), + groups = module.parent.exports; module.exports = function(Groups) { @@ -15,8 +16,10 @@ module.exports = function(Groups) { async.waterfall([ async.apply(db.getObjectValues, 'groupslug:groupname'), 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) { - 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); Groups.getGroupsData(groupNames, next);