From fd7733dfd7c9cc9e989ef2b55fac3cbc7718d6fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Tue, 22 Jul 2014 20:37:17 +0200 Subject: [PATCH] Directive to do a member administrator --- app/coffee/modules/admin/memberships.coffee | 54 +++++++++++++++++-- .../modules/admin/admin-membership-table.jade | 4 +- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/app/coffee/modules/admin/memberships.coffee b/app/coffee/modules/admin/memberships.coffee index cc69ff58..b25e1dcd 100644 --- a/app/coffee/modules/admin/memberships.coffee +++ b/app/coffee/modules/admin/memberships.coffee @@ -283,9 +283,57 @@ MembershipsMemberActionsDirective = ($log) -> html = render(member) $el.html(html) - return { - link: link - } + $scope.$on "$destroy", -> + $el.off() + + return {link: link} module.directive("tgMembershipsMemberActions", ["$log", MembershipsMemberActionsDirective]) + + +############################################################################# +## Member IsAdminCheckbox Directive +############################################################################# + +MembershipsMemberIsAdminCheckboxDirective = ($log, $repo, $confirm) -> + template = _.template(""" + + + """) # i18n + + render = (member) -> + ctx = {inputId: "is-admin-#{member.id}"} + + return template(ctx) + + link = ($scope, $el, $attrs) -> + if not $attrs.tgMembershipsMemberIsAdminCheckbox? + return $log.error "MembershipsMemberIsAdminCheckboxDirective: the directive need a member" + + member = $scope.$eval($attrs.tgMembershipsMemberIsAdminCheckbox) + html = render(member) + $el.html(html) + + if member.is_admin + $el.find(":checkbox").prop("checked", true) + + $el.on "click", ":checkbox", (event) => + onSuccess = -> + $confirm.notify("success") + + onError = -> + $confirm.notify("error") + + target = angular.element(event.currentTarget) + member.is_admin = target.prop("checked") + $repo.save(member).then(onSuccess, onError) + + $scope.$on "$destroy", -> + $el.off() + + return {link: link} + + +module.directive("tgMembershipsMemberIsAdminCheckbox", ["$log", "$tgRepo", "$tgConfirm", + MembershipsMemberIsAdminCheckboxDirective]) diff --git a/app/partials/views/modules/admin/admin-membership-table.jade b/app/partials/views/modules/admin/admin-membership-table.jade index 0a53b2fe..083a1ecc 100644 --- a/app/partials/views/modules/admin/admin-membership-table.jade +++ b/app/partials/views/modules/admin/admin-membership-table.jade @@ -7,9 +7,7 @@ section.admin-membership-table.basic-table div.row(ng-repeat="member in memberships") div.row-member(tg-memberships-member-avatar="member") - div.row-admin - input(type="checkbox", id="is-admin" ng-model="member.is_admin") - label(for="is-admin") Is admin? + div.row-admin(tg-memberships-member-is-admin-checkbox="member") div.row-role select(ng-model="member.role") option UX