diff --git a/app/coffee/modules/admin/project-profile.coffee b/app/coffee/modules/admin/project-profile.coffee index c8adfe0c..70c38a19 100644 --- a/app/coffee/modules/admin/project-profile.coffee +++ b/app/coffee/modules/admin/project-profile.coffee @@ -78,6 +78,9 @@ class ProjectProfileController extends mixOf(taiga.Controller, taiga.PageMixin) return promise.then(=> @.loadProject()) + openDeleteLightbox: -> + @rootscope.$broadcast("deletelightbox:new", @scope.project) + module.controller("ProjectProfileController", ProjectProfileController) diff --git a/app/coffee/modules/projects/lightboxes.coffee b/app/coffee/modules/projects/lightboxes.coffee index 2041774c..d690d1c6 100644 --- a/app/coffee/modules/projects/lightboxes.coffee +++ b/app/coffee/modules/projects/lightboxes.coffee @@ -57,3 +57,41 @@ module.directive("tgLbCreateProject", [ "lightboxService", CreateProject ]) + +############################################################################# +## Delete Project Lightbox Directive +############################################################################# + +DeleteProjectDirective = ($repo, $rootscope, $auth, $location, lightboxService) -> + link = ($scope, $el, $attrs) -> + projectToDelete = null + $scope.$on "deletelightbox:new", (ctx, project)-> + lightboxService.open($el) + projectToDelete = project + + $scope.$on "$destroy", -> + $el.off() + + submit = -> + promise = $repo.remove(projectToDelete) + + promise.then (data) -> + lightboxService.close($el) + $location.path("/") + + # FIXME: error handling? + promise.then null, -> + console.log "FAIL" + + $el.on "click", ".button-red", (event) -> + event.preventDefault() + lightboxService.close($el) + + $el.on "click", ".button-green", (event) -> + event.preventDefault() + submit() + + return {link:link} + + +module.directive("tgLbDeleteProject", ["$tgRepo", "$rootScope", "$tgAuth", "$location", "lightboxService", DeleteProjectDirective]) diff --git a/app/partials/admin-project-profile.jade b/app/partials/admin-project-profile.jade index aa1e3bc8..7e8e1892 100644 --- a/app/partials/admin-project-profile.jade +++ b/app/partials/admin-project-profile.jade @@ -45,3 +45,7 @@ block content input(type="submit", class="hidden") a.button.button-green(href="") Save + a.delete-project(href="", title="Delete this project", ng-click="ctrl.openDeleteLightbox()") Delete this project + + div.lightbox.lightbox-delete-project.hidden(tg-lb-delete-project) + include views/modules/lightbox-delete-project diff --git a/app/partials/views/modules/lightbox-delete-project.jade b/app/partials/views/modules/lightbox-delete-project.jade new file mode 100644 index 00000000..63749499 --- /dev/null +++ b/app/partials/views/modules/lightbox-delete-project.jade @@ -0,0 +1,12 @@ +a.close(href="", title="close") + span.icon.icon-delete +form + h2.title Delete project + p + span.delete-question Are you sure you want to delete this project? + span.subtitle All project data US/Tasks/Issues/Sprints/WikiPages will be lost! :-( + div.delete-options + a.button.button-green(href="", title="Yes, I'm really sure") + span Yes, I'm really sure + a.button.button-red(href="", title="Cancel") + span Cancel diff --git a/app/styles/modules/admin/admin-project-profile.scss b/app/styles/modules/admin/admin-project-profile.scss index a4991b74..49cc7441 100644 --- a/app/styles/modules/admin/admin-project-profile.scss +++ b/app/styles/modules/admin/admin-project-profile.scss @@ -24,4 +24,9 @@ display: block; text-align: center; } + .delete-project { + @extend %small; + display: block; + margin-top: 1rem; + } } diff --git a/app/styles/modules/common/lightbox.scss b/app/styles/modules/common/lightbox.scss index 9bb4adbd..8105446c 100644 --- a/app/styles/modules/common/lightbox.scss +++ b/app/styles/modules/common/lightbox.scss @@ -371,6 +371,33 @@ } } +.lightbox-delete-project { + form { + @include table-flex-child(0, 420px, 0, 420px); + } + .delete-question, + .subtitle { + display: block; + line-height: 2rem; + text-align: center; + } + .subtitle { + @extend %large; + @extend %title; + } + .delete-options { + @include table-flex(); + a { + @include table-flex-child(1, 0, 0); + padding: 8px 0; + text-align: center; + &:first-child { + margin-right: .5rem; + } + } + } +} + .lightbox-generic-success, .lightbox-generic-error {