Files
NodeBB/src/controllers/admin/groups.js

64 lines
1.6 KiB
JavaScript
Raw Normal View History

2017-02-18 01:56:23 -07:00
'use strict';
2016-10-31 13:52:26 +03:00
var async = require('async');
2015-07-09 14:01:06 -04:00
2016-10-31 13:52:26 +03:00
var db = require('../../database');
var groups = require('../../groups');
var meta = require('../../meta');
var pagination = require('../../pagination');
2017-06-22 19:03:49 -04:00
var groupsController = module.exports;
groupsController.list = function (req, res, next) {
2015-07-09 14:01:06 -04:00
var page = parseInt(req.query.page, 10) || 1;
var groupsPerPage = 20;
var pageCount = 0;
async.waterfall([
function (next) {
2017-06-22 18:12:35 -04:00
db.getSortedSetRange('groups:createtime', 0, -1, next);
2015-07-09 14:01:06 -04:00
},
function (groupNames, next) {
groupNames = groupNames.filter(function (name) {
2015-07-09 14:01:06 -04:00
return name.indexOf(':privileges:') === -1 && name !== 'registered-users';
});
pageCount = Math.ceil(groupNames.length / groupsPerPage);
var start = (page - 1) * groupsPerPage;
var stop = start + groupsPerPage - 1;
2015-07-09 14:01:06 -04:00
groupNames = groupNames.slice(start, stop + 1);
groups.getGroupsData(groupNames, next);
},
2017-06-22 19:03:49 -04:00
function (groupData) {
res.render('admin/manage/groups', {
groups: groupData,
pagination: pagination.create(page, pageCount),
yourid: req.uid,
});
2017-02-17 19:31:21 -07:00
},
2017-06-22 19:03:49 -04:00
], next);
};
groupsController.get = function (req, res, callback) {
var groupName = req.params.name;
async.waterfall([
function (next) {
groups.exists(groupName, next);
},
function (exists, next) {
if (!exists) {
2015-08-28 14:31:35 -04:00
return callback();
}
2017-02-18 12:30:49 -07:00
groups.get(groupName, { uid: req.uid, truncateUserList: true, userListCount: 20 }, next);
2017-02-17 19:31:21 -07:00
},
2017-06-22 19:03:49 -04:00
function (group) {
group.isOwner = true;
res.render('admin/manage/group', {
group: group,
allowPrivateGroups: parseInt(meta.config.allowPrivateGroups, 10) === 1,
});
},
], callback);
};