mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 19:15:58 +01:00 
			
		
		
		
	join, leave, accept, reject: handlers + UI, #2588
This commit is contained in:
		| @@ -1,15 +1,15 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| /* globals socket, ajaxify */ | /* globals define, socket, ajaxify, app */ | ||||||
|  |  | ||||||
| define('forum/groups/details', function() { | define('forum/groups/details', function() { | ||||||
| 	var Details = {}; | 	var Details = {}; | ||||||
|  |  | ||||||
| 	Details.init = function() { | 	Details.init = function() { | ||||||
| 		var memberList = $('.groups .members'); | 		var detailsPage = $('.groups'); | ||||||
|  |  | ||||||
| 		$('.latest-posts .content img').addClass('img-responsive'); | 		$('.latest-posts .content img').addClass('img-responsive'); | ||||||
|  |  | ||||||
| 		memberList.on('click', '[data-action]', function() { | 		detailsPage.on('click', '[data-action]', function() { | ||||||
| 			var btnEl = $(this), | 			var btnEl = $(this), | ||||||
| 				userRow = btnEl.parents('tr'), | 				userRow = btnEl.parents('tr'), | ||||||
| 				ownerFlagEl = userRow.find('.member-name i'), | 				ownerFlagEl = userRow.find('.member-name i'), | ||||||
| @@ -25,6 +25,24 @@ define('forum/groups/details', function() { | |||||||
| 					}, function(err) { | 					}, function(err) { | ||||||
| 						if (!err) { | 						if (!err) { | ||||||
| 							ownerFlagEl.toggleClass('invisible'); | 							ownerFlagEl.toggleClass('invisible'); | ||||||
|  | 						} else { | ||||||
|  | 							app.alertError(err); | ||||||
|  | 						} | ||||||
|  | 					}); | ||||||
|  | 					break; | ||||||
|  |  | ||||||
|  | 				case 'join':	// intentional fall-throughs! | ||||||
|  | 				case 'leave': | ||||||
|  | 				case 'accept': | ||||||
|  | 				case 'reject': | ||||||
|  | 					socket.emit('groups.' + action, { | ||||||
|  | 						toUid: uid, | ||||||
|  | 						groupName: ajaxify.variables.get('group_name') | ||||||
|  | 					}, function(err) { | ||||||
|  | 						if (!err) { | ||||||
|  | 							ajaxify.refresh(); | ||||||
|  | 						} else { | ||||||
|  | 							app.alertError(err); | ||||||
| 						} | 						} | ||||||
| 					}); | 					}); | ||||||
| 					break; | 					break; | ||||||
|   | |||||||
| @@ -558,12 +558,17 @@ var async = require('async'), | |||||||
| 		}); | 		}); | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	Groups.approveMembership = function(groupName, uid, callback) { | 	Groups.acceptMembership = function(groupName, uid, callback) { | ||||||
| 		// Note: For simplicity, this method intentially doesn't check the caller uid for ownership! | 		// Note: For simplicity, this method intentially doesn't check the caller uid for ownership! | ||||||
| 		db.setRemove('group:' + groupName + ':pending', uid, callback); | 		db.setRemove('group:' + groupName + ':pending', uid, callback); | ||||||
| 		Groups.join.apply(Groups, arguments); | 		Groups.join.apply(Groups, arguments); | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  | 	Groups.rejectMembership = function(groupName, uid, callback) { | ||||||
|  | 		// Note: For simplicity, this method intentially doesn't check the caller uid for ownership! | ||||||
|  | 		db.setRemove('group:' + groupName + ':pending', uid, callback); | ||||||
|  | 	}; | ||||||
|  |  | ||||||
| 	Groups.leave = function(groupName, uid, callback) { | 	Groups.leave = function(groupName, uid, callback) { | ||||||
| 		callback = callback || function() {}; | 		callback = callback || function() {}; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -59,4 +59,32 @@ SocketGroups.rescind = function(socket, data, callback) { | |||||||
| 	}); | 	}); | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | SocketGroups.accept = function(socket, data, callback) { | ||||||
|  | 	if (!data) { | ||||||
|  | 		return callback(new Error('[[error:invalid-data]]')); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	groups.ownership.isOwner(socket.uid, data.groupName, function(err, isOwner) { | ||||||
|  | 		if (!isOwner) { | ||||||
|  | 			return callback(new Error('[[error:no-privileges]]')); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		groups.acceptMembership(data.groupName, data.toUid, callback); | ||||||
|  | 	}); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | SocketGroups.reject = function(socket, data, callback) { | ||||||
|  | 	if (!data) { | ||||||
|  | 		return callback(new Error('[[error:invalid-data]]')); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	groups.ownership.isOwner(socket.uid, data.groupName, function(err, isOwner) { | ||||||
|  | 		if (!isOwner) { | ||||||
|  | 			return callback(new Error('[[error:no-privileges]]')); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		groups.rejectMembership(data.groupName, data.toUid, callback); | ||||||
|  | 	}); | ||||||
|  | }; | ||||||
|  |  | ||||||
| module.exports = SocketGroups; | module.exports = SocketGroups; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user