diff --git a/app/coffee/modules/common/components.coffee b/app/coffee/modules/common/components.coffee index 8b7acdbe..b3445b54 100644 --- a/app/coffee/modules/common/components.coffee +++ b/app/coffee/modules/common/components.coffee @@ -393,30 +393,34 @@ module.directive("tgBlockButton", ["$rootScope", "$tgLoading", BlockButtonDirect ## Delete Button directive ############################################################################# -DeleteButtonDirective = ($repo, $confirm, $navurls, $location) -> +DeleteButtonDirective = ($log, $repo, $confirm, $location) -> template = """ Delete - """ + """ #TODO: i18n link = ($scope, $el, $attrs, $model) -> - $scope.$on "$destroy", -> - $el.off() + if not $attrs.onDeleteGoToUrl + return $log.error "DeleteButtonDirective requires on-delete-go-to-url set in scope." + if not $attrs.onDeleteTitle + return $log.error "DeleteButtonDirective requires on-delete-title set in scope." $el.on "click", ".button", (event) -> - #TODO: i18n - title = "Delete User Story" + title = $scope.$eval($attrs.onDeleteTitle) subtitle = $model.$modelValue.subject - $confirm.ask(title, subtitle).then (finish) => + $confirm.askOnDelete(title, subtitle).then (finish) => promise = $repo.remove($model.$modelValue) promise.then => finish() - url = $navurls.resolve($attrs.onDeleteGoToUrl, {project: $attrs.projectSlug}) + url = $scope.$eval($attrs.onDeleteGoToUrl) $location.path(url) promise.then null, => finish(false) $confirm.notify("error") + $scope.$on "$destroy", -> + $el.off() + return { link: link restrict: "EA" @@ -424,7 +428,7 @@ DeleteButtonDirective = ($repo, $confirm, $navurls, $location) -> template: template } -module.directive("tgDeleteButton", ["$tgRepo", "$tgConfirm", "$tgNavUrls", "$tgLocation", DeleteButtonDirective]) +module.directive("tgDeleteButton", ["$log", "$tgRepo", "$tgConfirm", "$tgLocation", DeleteButtonDirective]) ############################################################################# diff --git a/app/coffee/modules/issues/detail.coffee b/app/coffee/modules/issues/detail.coffee index b4377fd6..a7ce0269 100644 --- a/app/coffee/modules/issues/detail.coffee +++ b/app/coffee/modules/issues/detail.coffee @@ -61,12 +61,12 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin) # On Success promise.then => @appTitle.set(@scope.issue.subject + " - " + @scope.project.name) + @.initializeOnDeleteGoToUrl() tgLoader.pageLoaded() # On Error promise.then null, @.onInitialDataError.bind(@) - initializeEventHandlers: -> @scope.$on "attachment:create", => @rootscope.$broadcast("history:reload") @@ -83,6 +83,13 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin) @rootscope.$broadcast("history:reload") @.loadIssue() + initializeOnDeleteGoToUrl: -> + ctx = {project: @scope.project.slug} + if @scope.project.is_issues_activated + @scope.onDeleteGoToUrl = @navUrls.resolve("project-issues", ctx) + else + @scope.onDeleteGoToUrl = @navUrls.resolve("project", ctx) + loadProject: -> return @rs.projects.get(@scope.projectId).then (project) => @scope.project = project diff --git a/app/coffee/modules/tasks/detail.coffee b/app/coffee/modules/tasks/detail.coffee index 8b00d75e..21690bc4 100644 --- a/app/coffee/modules/tasks/detail.coffee +++ b/app/coffee/modules/tasks/detail.coffee @@ -57,6 +57,7 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin) promise.then () => @appTitle.set(@scope.task.subject + " - " + @scope.project.name) + @.initializeOnDeleteGoToUrl() tgLoader.pageLoaded() promise.then null, @.onInitialDataError.bind(@) @@ -70,6 +71,21 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin) @scope.$on "attachment:delete", => @rootscope.$broadcast("history:reload") + initializeOnDeleteGoToUrl: -> + ctx = {project: @scope.project.slug} + @scope.onDeleteGoToUrl = @navUrls.resolve("project", ctx) + if @scope.project.is_backlog_activated + if @scope.task.milestone + ctx.sprint = @scope.sprint.slug + @scope.onDeleteGoToUrl = @navUrls.resolve("project-taskboard", ctx) + else if @scope.task.us + ctx.ref = @scope.us.ref + @scope.onDeleteGoToUrl = @navUrls.resolve("project-userstories-detail", ctx) + else if @scope.project.is_kanban_activated + if @scope.us + ctx.ref = @scope.us.ref + @scope.onDeleteGoToUrl = @navUrls.resolve("project-userstories-detail", ctx) + loadProject: -> return @rs.projects.get(@scope.projectId).then (project) => @scope.project = project diff --git a/app/coffee/modules/userstories/detail.coffee b/app/coffee/modules/userstories/detail.coffee index 24981e0c..150e8fe6 100644 --- a/app/coffee/modules/userstories/detail.coffee +++ b/app/coffee/modules/userstories/detail.coffee @@ -59,6 +59,7 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin) # On Success promise.then => @appTitle.set(@scope.us.subject + " - " + @scope.project.name) + @.initializeOnDeleteGoToUrl() tgLoader.pageLoaded() # On Error @@ -79,6 +80,18 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin) @scope.$on "attachment:delete", => @rootscope.$broadcast("history:reload") + initializeOnDeleteGoToUrl: -> + ctx = {project: @scope.project.slug} + @scope.onDeleteGoToUrl = @navUrls.resolve("project", ctx) + if @scope.project.is_backlog_activated + if @scope.us.milestone + ctx.sprint = @scope.sprint.slug + @scope.onDeleteGoToUrl = @navUrls.resolve("project-taskboard", ctx) + else + @scope.onDeleteGoToUrl = @navUrls.resolve("project-backlog", ctx) + else if @scope.project.is_kanban_activated + @scope.onDeleteGoToUrl = @navUrls.resolve("project-kanban", ctx) + loadProject: -> return @rs.projects.get(@scope.projectId).then (project) => @scope.project = project diff --git a/app/partials/issues-detail.jade b/app/partials/issues-detail.jade index 7d23f239..709cfdf9 100644 --- a/app/partials/issues-detail.jade +++ b/app/partials/issues-detail.jade @@ -56,8 +56,8 @@ block content tg-promote-issue-to-us-button(tg-check-permission="add_us", ng-model="issue") tg-block-button(tg-check-permission="modify_issue", ng-model="issue") tg-delete-button(tg-check-permission="delete_issue", - on-delete-go-to-url="project-issues", - project-slug="{{ project.slug }}", + on-delete-title="'Delete issue'", + on-delete-go-to-url="onDeleteGoToUrl", ng-model="issue") div.lightbox.lightbox-block.hidden(tg-lb-block, title="Blocking issue", ng-model="issue") diff --git a/app/partials/task-detail.jade b/app/partials/task-detail.jade index e8ef9969..a05e434d 100644 --- a/app/partials/task-detail.jade +++ b/app/partials/task-detail.jade @@ -54,10 +54,10 @@ block content section.us-detail-settings fieldset(tg-task-is-iocaine-button, tg-check-permission="modify_task", ng-model="task") - div(tg-block-button, tg-check-permission="modify_task", ng-model="task") - div(tg-delete-button, tg-check-permission="delete_task", - on-delete-go-to-url="project-backlog", - project-slug="{{ project.slug }}", + tg-block-button(tg-check-permission="modify_task", ng-model="task") + tg-delete-button(tg-check-permission="delete_task", + on-delete-title="'Delete Task'", + on-delete-go-to-url="onDeleteGoToUrl", ng-model="task") div.lightbox.lightbox-block.hidden(tg-lb-block, title="Blocking task", ng-model="task") diff --git a/app/partials/us-detail.jade b/app/partials/us-detail.jade index 3f257582..4319618b 100644 --- a/app/partials/us-detail.jade +++ b/app/partials/us-detail.jade @@ -63,8 +63,8 @@ block content tg-us-client-requirement-button(ng-model="us") tg-block-button(tg-check-permission="modify_us", ng-model="us") tg-delete-button(tg-check-permission="delete_us", - on-delete-go-to-url="project-backlog", - project-slug="{{ project.slug }}", + on-delete-title="'Delete User Story'", + on-delete-go-to-url="onDeleteGoToUrl", ng-model="us") div.lightbox.lightbox-block.hidden(tg-lb-block, title="Blocking us", ng-model="us")