Fix/Refactor tg-delete-button
parent
d251b07be0
commit
0e355f59cb
|
@ -393,30 +393,34 @@ module.directive("tgBlockButton", ["$rootScope", "$tgLoading", BlockButtonDirect
|
|||
## Delete Button directive
|
||||
#############################################################################
|
||||
|
||||
DeleteButtonDirective = ($repo, $confirm, $navurls, $location) ->
|
||||
DeleteButtonDirective = ($log, $repo, $confirm, $location) ->
|
||||
template = """
|
||||
<a href="" class="button button-red">Delete</a>
|
||||
"""
|
||||
""" #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])
|
||||
|
||||
|
||||
#############################################################################
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue