You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
1.8 KiB
JavaScript

"use strict";
var async = require('async');
var db = require('../../database');
var groups = require('../../groups');
var meta = require('../../meta');
var pagination = require('../../pagination');
var helpers = require('../helpers');
var groupsController = {};
groupsController.list = function (req, res, next) {
var page = parseInt(req.query.page, 10) || 1;
var groupsPerPage = 20;
var pageCount = 0;
async.waterfall([
function (next) {
db.getSortedSetRevRange('groups:createtime', 0, -1, next);
},
function (groupNames, next) {
groupNames = groupNames.filter(function (name) {
return name.indexOf(':privileges:') === -1 && name !== 'registered-users';
});
pageCount = Math.ceil(groupNames.length / groupsPerPage);
var start = (page - 1) * groupsPerPage;
var stop = start + groupsPerPage - 1;
groupNames = groupNames.slice(start, stop + 1);
groups.getGroupsData(groupNames, next);
},
function (groupData, next) {
next(null, {groups: groupData, pagination: pagination.create(page, pageCount)});
},
], function (err, data) {
if (err) {
return next(err);
}
res.render('admin/manage/groups', {
groups: data.groups,
pagination: data.pagination,
yourid: req.uid,
});
});
};
groupsController.get = function (req, res, callback) {
var groupName = req.params.name;
async.waterfall([
function (next) {
groups.exists(groupName, next);
},
function (exists, next) {
if (!exists) {
return callback();
}
groups.get(groupName, {uid: req.uid, truncateUserList: true, userListCount: 20}, next);
},
], function (err, group) {
if (err) {
return callback(err);
}
group.isOwner = true;
res.render('admin/manage/group', {group: group, allowPrivateGroups: parseInt(meta.config.allowPrivateGroups, 10) === 1});
});
};
module.exports = groupsController;