From 34c8f22dd75cb417fa14a1c96aec79e79c1d03b9 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 2 Sep 2015 12:20:37 +0100 Subject: [PATCH] Allow multiple collaborators to be added at once with a list of emails --- .../web/app/views/project/editor/share.jade | 6 ++-- .../ShareProjectModalController.coffee | 33 ++++++++++++++----- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/services/web/app/views/project/editor/share.jade b/services/web/app/views/project/editor/share.jade index 83e4c52f38..4b73c414c4 100644 --- a/services/web/app/views/project/editor/share.jade +++ b/services/web/app/views/project/editor/share.jade @@ -48,8 +48,8 @@ script(type='text/ng-template', id='shareProjectModalTemplate') .small #{translate("share_with_your_collabs")} .form-group input.form-control( - type="email" - placeholder="Enter email address..." + type="text" + placeholder="joe@example.com, sue@example.com, ..." ng-model="inputs.email" focus-on="open" ) @@ -64,7 +64,7 @@ script(type='text/ng-template', id='shareProjectModalTemplate') |    button.btn.btn-info( type="submit" - ng-click="addMember()" + ng-click="addMembers()" ) #{translate("share")} div.text-center(ng-hide="canAddCollaborators") p #{translate("need_to_upgrade_for_more_collabs")}. diff --git a/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee b/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee index 225a841a6a..e569a2fee8 100644 --- a/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee +++ b/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee @@ -22,19 +22,34 @@ define [ allowedNoOfMembers = $scope.project.features.collaborators $scope.canAddCollaborators = noOfMembers < allowedNoOfMembers or allowedNoOfMembers == INFINITE_COLLABORATORS - $scope.addMember = () -> + $scope.addMembers = () -> return if !$scope.inputs.email? or $scope.inputs.email == "" + + emails = $scope.inputs.email.split(/,\s*/) + $scope.inputs.email = "" $scope.state.error = null $scope.state.inflight = true - projectMembers - .addMember($scope.inputs.email, $scope.inputs.privileges) - .success (data) -> + + do addNextMember = () -> + if emails.length == 0 or !$scope.canAddCollaborators $scope.state.inflight = false - $scope.inputs.email = "" - $scope.project.members.push data?.user - .error () -> - $scope.state.inflight = false - $scope.state.error = "Sorry, something went wrong :(" + $scope.$apply() + return + + email = emails.shift() + projectMembers + .addMember(email, $scope.inputs.privileges) + .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 + .error () -> + $scope.state.inflight = false + $scope.state.error = "Sorry, something went wrong :(" $scope.removeMember = (member) ->