From 56200b0fdfe0bccc1ca11f66e8cc806b418684a8 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 20 Jan 2015 20:55:22 -0500 Subject: [PATCH 1/4] defining module name in iconSelect module --- public/src/modules/iconSelect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/modules/iconSelect.js b/public/src/modules/iconSelect.js index 88ab1903ed..f21bd76e1f 100644 --- a/public/src/modules/iconSelect.js +++ b/public/src/modules/iconSelect.js @@ -2,7 +2,7 @@ /* globals define, bootbox */ -define(function() { +define('iconSelect', function() { var iconSelect = {}; iconSelect.init = function(el, onModified) { From dd38ee96faed8dc68786fd67743bb33a5d69d823 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 21 Jan 2015 13:46:40 -0500 Subject: [PATCH 2/4] return cover:url in user groups --- src/groups.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/groups.js b/src/groups.js index 939d8fa5c6..07266af711 100644 --- a/src/groups.js +++ b/src/groups.js @@ -775,7 +775,7 @@ var async = require('async'), return 'group:' + groupName; }); - db.getObjectsFields(groupKeys, ['name', 'slug', 'hidden', 'userTitle', 'icon', 'labelColor'], function(err, groupData) { + db.getObjects(groupKeys, function(err, groupData) { if (err) { return callback(err); } @@ -786,6 +786,12 @@ var async = require('async'), var groupSets = groupData.map(function(group) { group.labelColor = group.labelColor || '#000000'; + + if (!group['cover:url']) { + group['cover:url'] = nconf.get('relative_path') + '/images/cover-default.png'; + group['cover:position'] = '50% 50%'; + } + return 'group:' + group.name + ':members'; }); From fa27461abc5b764a56cc267268cd75932cf26d48 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 21 Jan 2015 14:41:28 -0500 Subject: [PATCH 3/4] upgrading administrator groups as well --- src/upgrade.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/upgrade.js b/src/upgrade.js index b28158d826..b957adbe7d 100644 --- a/src/upgrade.js +++ b/src/upgrade.js @@ -695,6 +695,10 @@ Upgrade.upgrade = function(callback) { tasks.push(async.apply(db.setObjectField, 'groupslug:groupname', Utils.slugify(groupObj.name), groupObj.name)); }); + // Administrator group + tasks.push(async.apply(db.setObjectField, 'group:administrators', 'slug', 'administrators')); + tasks.push(async.apply(db.setObjectField, 'groupslug:groupname', 'administrators', 'administrators')); + async.parallel(tasks, function(err) { if (err) { winston.error('[2015/01/19] Error encountered while Generating group slugs'); From 6502dd256112386ee8747ec0f55629b4a68ff604 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 21 Jan 2015 15:43:05 -0500 Subject: [PATCH 4/4] group searching --- public/src/client/groups/list.js | 28 +++++++++++++++++++++++++++- src/groups.js | 19 +++++++++++++++++++ src/socket.io/groups.js | 8 ++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/public/src/client/groups/list.js b/public/src/client/groups/list.js index d11eb7c8e6..5fac3e7c22 100644 --- a/public/src/client/groups/list.js +++ b/public/src/client/groups/list.js @@ -1,5 +1,5 @@ "use strict"; -/* globals app, define, ajaxify, socket, bootbox, utils */ +/* globals app, define, ajaxify, socket, bootbox, utils, templates */ define('forum/groups/list', function() { var Groups = {}; @@ -29,6 +29,32 @@ define('forum/groups/list', function() { } }); }); + + // Group searching + $('#search-text').on('keydown', function(e) { + if (e.keyCode === 13) { Groups.search($(this).val()); } + }); + + $('#search-button').on('click', function() { + Groups.search($(this).siblings('input').val()); + }); + }; + + Groups.search = function(query) { + var groupsEl = $('.groups.row'); + + socket.emit('groups.search', { + query: query, + options: { + expand: true + } + }, function(err, groups) { + templates.parse('partials/group_list', { + groups: groups + }, function(html) { + groupsEl.empty().append(html); + }); + }); }; return Groups; diff --git a/src/groups.js b/src/groups.js index 07266af711..87e6070757 100644 --- a/src/groups.js +++ b/src/groups.js @@ -898,4 +898,23 @@ var async = require('async'), db.setRemove('group:' + groupName + ':owners', toUid, callback); }; + Groups.search = function(query, options, callback) { + if (!query || !query.length) { + return callback(null, []); + } + + async.waterfall([ + async.apply(db.getObjectValues, 'groupslug:groupname'), + function(groupNames, next) { + groupNames = groupNames.filter(function(name) { + return name.match(new RegExp(query, 'i')); + }); + + async.mapLimit(groupNames, 5, function(groupName, next) { + Groups.get(groupName, options || {}, next); + }, next); + } + ], callback); + }; + }(module.exports)); diff --git a/src/socket.io/groups.js b/src/socket.io/groups.js index c4b4535e82..902041d6ec 100644 --- a/src/socket.io/groups.js +++ b/src/socket.io/groups.js @@ -126,6 +126,14 @@ SocketGroups.delete = function(socket, data, callback) { }); }; +SocketGroups.search = function(socket, data, callback) { + if (!data || !data.query) { + return callback(null, []); + } + + groups.search(data.query, data.options || {}, callback); +}; + SocketGroups.cover = {}; SocketGroups.cover.get = function(socket, data, callback) {