Просмотр исходного кода

Support adding groups to projects via share modal

James Allen 11 лет назад
Родитель
Сommit
b0895cc6aa

+ 24 - 16
services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee

@@ -4,7 +4,7 @@ define [
 	App.controller "ShareProjectModalController", ($scope, $modalInstance, $timeout, projectMembers, $modal, $http) ->
 		$scope.inputs = {
 			privileges: "readAndWrite"
-			email: ""
+			contacts: []
 		}
 		$scope.state = {
 			error: null
@@ -54,32 +54,40 @@ define [
 			$timeout -> # Give email list a chance to update
 				return if $scope.inputs.contacts.length == 0
 
-				console.warn "Ignoring groups for now"
-				emails = $scope.inputs.contacts.filter (contact) -> contact.type == "user"
-				emails = emails.map (contact) -> contact.email
+				members = $scope.inputs.contacts
 				$scope.inputs.contacts = []
 				$scope.state.error = null
 				$scope.state.inflight = true
 				
-				console.log "Adding emails", emails
+				console.log "Adding members", members
 
 				do addNextMember = () ->
-					if emails.length == 0 or !$scope.canAddCollaborators
+					if members.length == 0 or !$scope.canAddCollaborators
 						$scope.state.inflight = false
 						$scope.$apply()
 						return
 					
-					email = emails.shift()
-					projectMembers
-						.addMember(email, $scope.inputs.privileges)
+					member = members.shift()
+					if member.type == "user"
+						request = projectMembers.addMember(member.email, $scope.inputs.privileges)
+					else if member.type == "group"
+						request = projectMembers.addGroup(member.id, $scope.inputs.privileges)
+					
+					request
 						.success (data) ->
-							if data?.user # data.user is false if collaborator limit is hit.
-								$scope.project.members.push data.user
-								setTimeout () ->
-									# Give $scope a chance to update $scope.canAddCollaborators
-									# with new collaborator information.
-									addNextMember()
-								, 0
+							if data.users?
+								users = data.users
+							else if data.user?
+								users = [data.user]
+							else
+								users = []
+								
+							$scope.project.members.push users...
+							setTimeout () ->
+								# Give $scope a chance to update $scope.canAddCollaborators
+								# with new collaborator information.
+								addNextMember()
+							, 0
 						.error () ->
 							$scope.state.inflight = false
 							$scope.state.error = "Sorry, something went wrong :("

+ 8 - 0
services/web/public/coffee/ide/share/services/projectMembers.coffee

@@ -17,5 +17,13 @@ define [
 					privileges: privileges
 					_csrf: window.csrfToken
 				})
+			
+			addGroup: (group_id, privileges) ->
+				$http.post("/project/#{ide.project_id}/group", {
+					group_id: group_id
+					privileges: privileges
+					_csrf: window.csrfToken
+				})
+				
 		}
 	]