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])