mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-07-07 15:51:46 +02:00
closes #5175
This commit is contained in:
@@ -153,22 +153,18 @@
|
||||
|
||||
// Groups helpers
|
||||
helpers.membershipBtn = function (groupObj) {
|
||||
if (groupObj.name === 'administrators') {
|
||||
return '';
|
||||
if (groupObj.isMember && groupObj.name !== 'administrators') {
|
||||
return '<button class="btn btn-danger" data-action="leave" data-group="' + groupObj.displayName + '"><i class="fa fa-times"></i> [[groups:membership.leave-group]]</button>';
|
||||
}
|
||||
|
||||
if (groupObj.isMember) {
|
||||
return '<button class="btn btn-danger" data-action="leave" data-group="' + groupObj.displayName + '"><i class="fa fa-times"></i> [[groups:membership.leave-group]]</button>';
|
||||
if (groupObj.isPending && groupObj.name !== 'administrators') {
|
||||
return '<button class="btn btn-warning disabled"><i class="fa fa-clock-o"></i> [[groups:membership.invitation-pending]]</button>';
|
||||
} else if (groupObj.isInvited) {
|
||||
return '<button class="btn btn-link" data-action="rejectInvite" data-group="' + groupObj.displayName + '">[[groups:membership.reject]]</button><button class="btn btn-success" data-action="acceptInvite" data-group="' + groupObj.name + '"><i class="fa fa-plus"></i> [[groups:membership.accept-invitation]]</button>';
|
||||
} else if (!groupObj.disableJoinRequests && groupObj.name !== 'administrators') {
|
||||
return '<button class="btn btn-success" data-action="join" data-group="' + groupObj.displayName + '"><i class="fa fa-plus"></i> [[groups:membership.join-group]]</button>';
|
||||
} else {
|
||||
if (groupObj.isPending) {
|
||||
return '<button class="btn btn-warning disabled"><i class="fa fa-clock-o"></i> [[groups:membership.invitation-pending]]</button>';
|
||||
} else if (groupObj.isInvited) {
|
||||
return '<button class="btn btn-link" data-action="rejectInvite" data-group="' + groupObj.displayName + '">[[groups:membership.reject]]</button><button class="btn btn-success" data-action="acceptInvite" data-group="' + groupObj.name + '"><i class="fa fa-plus"></i> [[groups:membership.accept-invitation]]</button>';
|
||||
} else if (!groupObj.disableJoinRequests) {
|
||||
return '<button class="btn btn-success" data-action="join" data-group="' + groupObj.displayName + '"><i class="fa fa-plus"></i> [[groups:membership.join-group]]</button>';
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -9,12 +9,13 @@ var db = require('../database');
|
||||
module.exports = function (Groups) {
|
||||
|
||||
Groups.create = function (data, callback) {
|
||||
var system = data.system === true || parseInt(data.system, 10) === 1 ||
|
||||
data.name === 'administrators' || data.name === 'registered-users' || data.name === 'Global Moderators' ||
|
||||
Groups.isPrivilegeGroup(data.name);
|
||||
var system = isSystemGroup(data);
|
||||
var groupData;
|
||||
var timestamp = data.timestamp || Date.now();
|
||||
|
||||
var disableJoinRequests = parseInt(data.disableJoinRequests, 10) === 1 ? 1 : 0;
|
||||
if (data.name === 'administrators') {
|
||||
disableJoinRequests = 1;
|
||||
}
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
validateGroupName(data.name, next);
|
||||
@@ -41,7 +42,7 @@ module.exports = function (Groups) {
|
||||
hidden: parseInt(data.hidden, 10) === 1 ? 1 : 0,
|
||||
system: system ? 1 : 0,
|
||||
private: isPrivate,
|
||||
disableJoinRequests: parseInt(data.disableJoinRequests, 10) === 1 ? 1 : 0
|
||||
disableJoinRequests: disableJoinRequests
|
||||
};
|
||||
plugins.fireHook('filter:group.create', {group: groupData, data: data}, next);
|
||||
},
|
||||
@@ -76,6 +77,12 @@ module.exports = function (Groups) {
|
||||
|
||||
};
|
||||
|
||||
function isSystemGroup(data) {
|
||||
return data.system === true || parseInt(data.system, 10) === 1 ||
|
||||
data.name === 'administrators' || data.name === 'registered-users' || data.name === 'Global Moderators' ||
|
||||
Groups.isPrivilegeGroup(data.name);
|
||||
}
|
||||
|
||||
function validateGroupName(name, callback) {
|
||||
if (!name) {
|
||||
return callback(new Error('[[error:group-name-too-short]]'));
|
||||
|
||||
Reference in New Issue
Block a user