ShareProjectModalController.coffee 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. define [
  2. "base"
  3. ], (App) ->
  4. App.controller "ShareProjectModalController", ["$scope", "$modalInstance", "$timeout", "projectMembers", "$modal", ($scope, $modalInstance, $timeout, projectMembers, $modal) ->
  5. $scope.inputs = {
  6. privileges: "readAndWrite"
  7. email: ""
  8. }
  9. $scope.state = {
  10. error: null
  11. inflight: false
  12. startedFreeTrial: false
  13. }
  14. $modalInstance.opened.then () ->
  15. $timeout () ->
  16. $scope.$broadcast "open"
  17. , 200
  18. INFINITE_COLLABORATORS = -1
  19. $scope.$watch "project.members.length", (noOfMembers) ->
  20. allowedNoOfMembers = $scope.project.features.collaborators
  21. $scope.canAddCollaborators = noOfMembers < allowedNoOfMembers or allowedNoOfMembers == INFINITE_COLLABORATORS
  22. $scope.addMembers = () ->
  23. return if !$scope.inputs.email? or $scope.inputs.email == ""
  24. emails = $scope.inputs.email.split(/,\s*/)
  25. $scope.inputs.email = ""
  26. $scope.state.error = null
  27. $scope.state.inflight = true
  28. do addNextMember = () ->
  29. if emails.length == 0 or !$scope.canAddCollaborators
  30. $scope.state.inflight = false
  31. $scope.$apply()
  32. return
  33. email = emails.shift()
  34. projectMembers
  35. .addMember(email, $scope.inputs.privileges)
  36. .success (data) ->
  37. if data?.user # data.user is false if collaborator limit is hit.
  38. $scope.project.members.push data.user
  39. setTimeout () ->
  40. # Give $scope a chance to update $scope.canAddCollaborators
  41. # with new collaborator information.
  42. addNextMember()
  43. , 0
  44. .error () ->
  45. $scope.state.inflight = false
  46. $scope.state.error = "Sorry, something went wrong :("
  47. $scope.removeMember = (member) ->
  48. $scope.state.error = null
  49. $scope.state.inflight = true
  50. projectMembers
  51. .removeMember(member)
  52. .success () ->
  53. $scope.state.inflight = false
  54. index = $scope.project.members.indexOf(member)
  55. return if index == -1
  56. $scope.project.members.splice(index, 1)
  57. .error () ->
  58. $scope.state.inflight = false
  59. $scope.state.error = "Sorry, something went wrong :("
  60. $scope.openMakePublicModal = () ->
  61. $modal.open {
  62. templateUrl: "makePublicModalTemplate"
  63. controller: "MakePublicModalController"
  64. scope: $scope
  65. }
  66. $scope.openMakePrivateModal = () ->
  67. $modal.open {
  68. templateUrl: "makePrivateModalTemplate"
  69. controller: "MakePrivateModalController"
  70. scope: $scope
  71. }
  72. $scope.done = () ->
  73. $modalInstance.close()
  74. $scope.cancel = () ->
  75. $modalInstance.dismiss()
  76. ]
  77. App.controller "MakePublicModalController", ["$scope", "$modalInstance", "settings", ($scope, $modalInstance, settings) ->
  78. $scope.inputs = {
  79. privileges: "readAndWrite"
  80. }
  81. $scope.makePublic = () ->
  82. $scope.project.publicAccesLevel = $scope.inputs.privileges
  83. settings.saveProjectSettings({publicAccessLevel: $scope.inputs.privileges})
  84. $modalInstance.close()
  85. $scope.cancel = () ->
  86. $modalInstance.dismiss()
  87. ]
  88. App.controller "MakePrivateModalController", ["$scope", "$modalInstance", "settings", ($scope, $modalInstance, settings) ->
  89. $scope.makePrivate = () ->
  90. $scope.project.publicAccesLevel = "private"
  91. settings.saveProjectSettings({publicAccessLevel: "private"})
  92. $modalInstance.close()
  93. $scope.cancel = () ->
  94. $modalInstance.dismiss()
  95. ]