mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-08 06:55:46 +01:00
adding concept of group slugs, #2588. ping @barisusakli for downstream plugin changes
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
/* globals app, define, ajaxify, socket, bootbox */
|
/* globals app, define, ajaxify, socket, bootbox, utils */
|
||||||
|
|
||||||
define('forum/groups/list', function() {
|
define('forum/groups/list', function() {
|
||||||
var Groups = {};
|
var Groups = {};
|
||||||
@@ -10,7 +10,7 @@ define('forum/groups/list', function() {
|
|||||||
groupsEl.on('click', '.list-cover', function() {
|
groupsEl.on('click', '.list-cover', function() {
|
||||||
var groupName = $(this).parents('[data-group]').attr('data-group');
|
var groupName = $(this).parents('[data-group]').attr('data-group');
|
||||||
|
|
||||||
ajaxify.go('groups/' + encodeURIComponent(groupName));
|
ajaxify.go('groups/' + utils.slugify(groupName));
|
||||||
});
|
});
|
||||||
|
|
||||||
// Group creation
|
// Group creation
|
||||||
@@ -21,7 +21,7 @@ define('forum/groups/list', function() {
|
|||||||
name: name
|
name: name
|
||||||
}, function(err) {
|
}, function(err) {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
ajaxify.go('groups/' + encodeURIComponent(name));
|
ajaxify.go('groups/' + utils.slugify(name));
|
||||||
} else {
|
} else {
|
||||||
app.alertError(err.message);
|
app.alertError(err.message);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ groupsController.details = function(req, res, next) {
|
|||||||
|
|
||||||
async.parallel({
|
async.parallel({
|
||||||
group: function(next) {
|
group: function(next) {
|
||||||
groups.get(req.params.name, {
|
groups.getByGroupslug(req.params.slug, {
|
||||||
expand: true,
|
expand: true,
|
||||||
uid: uid
|
uid: uid
|
||||||
}, next);
|
}, next);
|
||||||
|
|||||||
@@ -193,8 +193,10 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, function (err, results) {
|
}, function (err, results) {
|
||||||
if (err || !results.base) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
|
} else if (!results.base) {
|
||||||
|
return callback(new Error('[[error:no-group]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default image
|
// Default image
|
||||||
@@ -224,6 +226,18 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Groups.getByGroupslug = function(slug, options, callback) {
|
||||||
|
db.getObjectField('groupslug:groupname', slug, function(err, groupName) {
|
||||||
|
if (err) {
|
||||||
|
return callback(err);
|
||||||
|
} else if (!groupName) {
|
||||||
|
return callback(new Error('[[error:no-group]]'));
|
||||||
|
}
|
||||||
|
|
||||||
|
Groups.get.call(Groups, groupName, options, callback);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
Groups.getGroupFields = function(groupName, fields, callback) {
|
Groups.getGroupFields = function(groupName, fields, callback) {
|
||||||
db.getObjectFields('group:' + groupName, fields, callback);
|
db.getObjectFields('group:' + groupName, fields, callback);
|
||||||
};
|
};
|
||||||
@@ -413,8 +427,10 @@ var async = require('async'),
|
|||||||
return callback(new Error('[[error:group-already-exists]]'));
|
return callback(new Error('[[error:group-already-exists]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
var groupData = {
|
var slug = utils.slugify(data.name),
|
||||||
|
groupData = {
|
||||||
name: data.name,
|
name: data.name,
|
||||||
|
slug: slug,
|
||||||
userTitle: data.name,
|
userTitle: data.name,
|
||||||
description: data.description || '',
|
description: data.description || '',
|
||||||
deleted: '0',
|
deleted: '0',
|
||||||
@@ -432,6 +448,10 @@ var async = require('async'),
|
|||||||
tasks.push(async.apply(db.setAdd, 'group:' + data.name + ':members', data.ownerUid));
|
tasks.push(async.apply(db.setAdd, 'group:' + data.name + ':members', data.ownerUid));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!data.hidden) {
|
||||||
|
tasks.push(async.apply(db.setObjectField, 'groupslug:groupname', slug, data.name));
|
||||||
|
}
|
||||||
|
|
||||||
async.parallel(tasks, function(err) {
|
async.parallel(tasks, function(err) {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
plugins.fireHook('action:group.create', groupData);
|
plugins.fireHook('action:group.create', groupData);
|
||||||
@@ -567,6 +587,7 @@ var async = require('async'),
|
|||||||
async.apply(db.delete, 'group:' + groupName + ':members'),
|
async.apply(db.delete, 'group:' + groupName + ':members'),
|
||||||
async.apply(db.delete, 'group:' + groupName + ':pending'),
|
async.apply(db.delete, 'group:' + groupName + ':pending'),
|
||||||
async.apply(db.delete, 'group:' + groupName + ':owners'),
|
async.apply(db.delete, 'group:' + groupName + ':owners'),
|
||||||
|
async.apply(db.deleteObjectField, 'groupslug:groupname', utils.slugify(groupName)),
|
||||||
function(next) {
|
function(next) {
|
||||||
db.getSetMembers('groups', function(err, groups) {
|
db.getSetMembers('groups', function(err, groups) {
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -578,7 +599,7 @@ var async = require('async'),
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
], callback);
|
], callback);
|
||||||
})
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Groups.join = function(groupName, uid, callback) {
|
Groups.join = function(groupName, uid, callback) {
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ function groupRoutes(app, middleware, controllers) {
|
|||||||
var middlewares = [middleware.checkGlobalPrivacySettings];
|
var middlewares = [middleware.checkGlobalPrivacySettings];
|
||||||
|
|
||||||
setupPageRoute(app, '/groups', middleware, middlewares, controllers.groups.list);
|
setupPageRoute(app, '/groups', middleware, middlewares, controllers.groups.list);
|
||||||
setupPageRoute(app, '/groups/:name', middleware, middlewares, controllers.groups.details);
|
setupPageRoute(app, '/groups/:slug', middleware, middlewares, controllers.groups.details);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupPageRoute(router, name, middleware, middlewares, controller) {
|
function setupPageRoute(router, name, middleware, middlewares, controller) {
|
||||||
|
|||||||
Reference in New Issue
Block a user