diff --git a/app/coffee/modules/admin/memberships.coffee b/app/coffee/modules/admin/memberships.coffee
index da5792fe..2286d771 100644
--- a/app/coffee/modules/admin/memberships.coffee
+++ b/app/coffee/modules/admin/memberships.coffee
@@ -257,72 +257,6 @@ MembershipsRowAvatarDirective = ($log) ->
module.directive("tgMembershipsRowAvatar", ["$log", MembershipsRowAvatarDirective])
-#############################################################################
-## Member Actions Directive
-#############################################################################
-
-MembershipsRowActionsDirective = ($log, $repo, $confirm) ->
- activedTemplate = _.template("""
-
- Active
-
-
-
-
- """) # i18n
-
- pendingTemplate = _.template("""
-
- Pending
-
-
-
-
-
- """) # i18n
-
- link = ($scope, $el, $attrs) ->
- render = (member) ->
- if member.user
- html = activedTemplate()
- else
- html = pendingTemplate()
-
- $el.html(html)
-
- if not $attrs.tgMembershipsRowActions?
- return $log.error "MembershipsRowActionsDirective: the directive need a member"
-
- $ctrl = $el.controller()
- member = $scope.$eval($attrs.tgMembershipsRowActions)
- render(member)
-
- $el.on "click", ".pending", (event) ->
- event.preventDefault()
- #TODO: Re-send the invitation
- console.log "re-sending the invitation to #{member.email}"
-
- $el.on "click", ".delete", (event) ->
- event.preventDefault()
-
- title = "Delete member" # i18n
- subtitle = if member.user then member.full_name else "the invitation to #{member.email}" # i18n
-
- $confirm.ask(title, subtitle).then ->
- $repo.remove(member).then ->
- $ctrl.loadMembers()
- $confirm.notify("success", null, "We've deleted #{subtitle}.") # i18n
-
- $scope.$on "$destroy", ->
- $el.off()
-
- return {link: link}
-
-
-module.directive("tgMembershipsRowActions", ["$log", "$tgRepo", "$tgConfirm",
- MembershipsRowActionsDirective])
-
-
#############################################################################
## Member IsAdminCheckbox Directive
#############################################################################
@@ -421,4 +355,75 @@ MembershipsRowRoleSelectorDirective = ($log, $repo, $confirm) ->
module.directive("tgMembershipsRowRoleSelector", ["$log", "$tgRepo", "$tgConfirm",
- MembershipsRowRoleSelectorDirective])
+ MembershipsRowRoleSelectorDirective])
+
+
+#############################################################################
+## Member Actions Directive
+#############################################################################
+
+MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm) ->
+ activedTemplate = _.template("""
+
+ Active
+
+
+
+
+ """) # i18n
+
+ pendingTemplate = _.template("""
+
+ Pending
+
+
+
+
+
+ """) # i18n
+
+ link = ($scope, $el, $attrs) ->
+ render = (member) ->
+ if member.user
+ html = activedTemplate()
+ else
+ html = pendingTemplate()
+
+ $el.html(html)
+
+ if not $attrs.tgMembershipsRowActions?
+ return $log.error "MembershipsRowActionsDirective: the directive need a member"
+
+ $ctrl = $el.controller()
+ member = $scope.$eval($attrs.tgMembershipsRowActions)
+ render(member)
+
+ $el.on "click", ".pending", (event) ->
+ event.preventDefault()
+ onSuccess = ->
+ # i18n
+ $confirm.notify("success", "We've sent the invitationi again to '#{$scope.member.email}'.")
+ onError = ->
+ $confirm.notify("error", "We haven't sent the invitation.") # i18n
+
+ $rs.memberships.resendInvitation($scope.member.id).then(onSuccess, onError)
+
+ $el.on "click", ".delete", (event) ->
+ event.preventDefault()
+
+ title = "Delete member" # i18n
+ subtitle = if member.user then member.full_name else "the invitation to #{member.email}" # i18n
+
+ $confirm.ask(title, subtitle).then ->
+ $repo.remove(member).then ->
+ $ctrl.loadMembers()
+ $confirm.notify("success", null, "We've deleted #{subtitle}.") # i18n
+
+ $scope.$on "$destroy", ->
+ $el.off()
+
+ return {link: link}
+
+
+module.directive("tgMembershipsRowActions", ["$log", "$tgRepo", "$tgResources", "$tgConfirm",
+ MembershipsRowActionsDirective])
diff --git a/app/coffee/modules/resources/memberships.coffee b/app/coffee/modules/resources/memberships.coffee
index f9ab2b75..c5599d99 100644
--- a/app/coffee/modules/resources/memberships.coffee
+++ b/app/coffee/modules/resources/memberships.coffee
@@ -22,7 +22,7 @@
taiga = @.taiga
-resourceProvider = ($repo) ->
+resourceProvider = ($repo, $http, $urls) ->
service = {}
service.get = (id) ->
@@ -33,9 +33,13 @@ resourceProvider = ($repo) ->
params = _.extend({}, params, filters or {})
return $repo.queryPaginated("memberships", params)
+ service.resendInvitation = (id) ->
+ url = $urls.resolve("memberships")
+ return $http.post("#{url}/#{id}/resend_invitation", {})
+
return (instance) ->
instance.memberships = service
module = angular.module("taigaResources")
-module.factory("$tgMembershipsResourcesProvider", ["$tgRepo", resourceProvider])
+module.factory("$tgMembershipsResourcesProvider", ["$tgRepo", "$tgHttp", "$tgUrls", resourceProvider])