Fix/Refactor tg-delete-button
parent
d251b07be0
commit
0e355f59cb
|
@ -393,30 +393,34 @@ module.directive("tgBlockButton", ["$rootScope", "$tgLoading", BlockButtonDirect
|
||||||
## Delete Button directive
|
## Delete Button directive
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
DeleteButtonDirective = ($repo, $confirm, $navurls, $location) ->
|
DeleteButtonDirective = ($log, $repo, $confirm, $location) ->
|
||||||
template = """
|
template = """
|
||||||
<a href="" class="button button-red">Delete</a>
|
<a href="" class="button button-red">Delete</a>
|
||||||
"""
|
""" #TODO: i18n
|
||||||
|
|
||||||
link = ($scope, $el, $attrs, $model) ->
|
link = ($scope, $el, $attrs, $model) ->
|
||||||
$scope.$on "$destroy", ->
|
if not $attrs.onDeleteGoToUrl
|
||||||
$el.off()
|
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) ->
|
$el.on "click", ".button", (event) ->
|
||||||
#TODO: i18n
|
title = $scope.$eval($attrs.onDeleteTitle)
|
||||||
title = "Delete User Story"
|
|
||||||
subtitle = $model.$modelValue.subject
|
subtitle = $model.$modelValue.subject
|
||||||
|
|
||||||
$confirm.ask(title, subtitle).then (finish) =>
|
$confirm.askOnDelete(title, subtitle).then (finish) =>
|
||||||
promise = $repo.remove($model.$modelValue)
|
promise = $repo.remove($model.$modelValue)
|
||||||
promise.then =>
|
promise.then =>
|
||||||
finish()
|
finish()
|
||||||
url = $navurls.resolve($attrs.onDeleteGoToUrl, {project: $attrs.projectSlug})
|
url = $scope.$eval($attrs.onDeleteGoToUrl)
|
||||||
$location.path(url)
|
$location.path(url)
|
||||||
promise.then null, =>
|
promise.then null, =>
|
||||||
finish(false)
|
finish(false)
|
||||||
$confirm.notify("error")
|
$confirm.notify("error")
|
||||||
|
|
||||||
|
$scope.$on "$destroy", ->
|
||||||
|
$el.off()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
link: link
|
link: link
|
||||||
restrict: "EA"
|
restrict: "EA"
|
||||||
|
@ -424,7 +428,7 @@ DeleteButtonDirective = ($repo, $confirm, $navurls, $location) ->
|
||||||
template: template
|
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
|
# On Success
|
||||||
promise.then =>
|
promise.then =>
|
||||||
@appTitle.set(@scope.issue.subject + " - " + @scope.project.name)
|
@appTitle.set(@scope.issue.subject + " - " + @scope.project.name)
|
||||||
|
@.initializeOnDeleteGoToUrl()
|
||||||
tgLoader.pageLoaded()
|
tgLoader.pageLoaded()
|
||||||
|
|
||||||
# On Error
|
# On Error
|
||||||
promise.then null, @.onInitialDataError.bind(@)
|
promise.then null, @.onInitialDataError.bind(@)
|
||||||
|
|
||||||
|
|
||||||
initializeEventHandlers: ->
|
initializeEventHandlers: ->
|
||||||
@scope.$on "attachment:create", =>
|
@scope.$on "attachment:create", =>
|
||||||
@rootscope.$broadcast("history:reload")
|
@rootscope.$broadcast("history:reload")
|
||||||
|
@ -83,6 +83,13 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
||||||
@rootscope.$broadcast("history:reload")
|
@rootscope.$broadcast("history:reload")
|
||||||
@.loadIssue()
|
@.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: ->
|
loadProject: ->
|
||||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||||
@scope.project = project
|
@scope.project = project
|
||||||
|
|
|
@ -57,6 +57,7 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
||||||
|
|
||||||
promise.then () =>
|
promise.then () =>
|
||||||
@appTitle.set(@scope.task.subject + " - " + @scope.project.name)
|
@appTitle.set(@scope.task.subject + " - " + @scope.project.name)
|
||||||
|
@.initializeOnDeleteGoToUrl()
|
||||||
tgLoader.pageLoaded()
|
tgLoader.pageLoaded()
|
||||||
|
|
||||||
promise.then null, @.onInitialDataError.bind(@)
|
promise.then null, @.onInitialDataError.bind(@)
|
||||||
|
@ -70,6 +71,21 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
||||||
@scope.$on "attachment:delete", =>
|
@scope.$on "attachment:delete", =>
|
||||||
@rootscope.$broadcast("history:reload")
|
@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: ->
|
loadProject: ->
|
||||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||||
@scope.project = project
|
@scope.project = project
|
||||||
|
|
|
@ -59,6 +59,7 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
||||||
# On Success
|
# On Success
|
||||||
promise.then =>
|
promise.then =>
|
||||||
@appTitle.set(@scope.us.subject + " - " + @scope.project.name)
|
@appTitle.set(@scope.us.subject + " - " + @scope.project.name)
|
||||||
|
@.initializeOnDeleteGoToUrl()
|
||||||
tgLoader.pageLoaded()
|
tgLoader.pageLoaded()
|
||||||
|
|
||||||
# On Error
|
# On Error
|
||||||
|
@ -79,6 +80,18 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
|
||||||
@scope.$on "attachment:delete", =>
|
@scope.$on "attachment:delete", =>
|
||||||
@rootscope.$broadcast("history:reload")
|
@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: ->
|
loadProject: ->
|
||||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||||
@scope.project = 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-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-block-button(tg-check-permission="modify_issue", ng-model="issue")
|
||||||
tg-delete-button(tg-check-permission="delete_issue",
|
tg-delete-button(tg-check-permission="delete_issue",
|
||||||
on-delete-go-to-url="project-issues",
|
on-delete-title="'Delete issue'",
|
||||||
project-slug="{{ project.slug }}",
|
on-delete-go-to-url="onDeleteGoToUrl",
|
||||||
ng-model="issue")
|
ng-model="issue")
|
||||||
|
|
||||||
div.lightbox.lightbox-block.hidden(tg-lb-block, title="Blocking issue", 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
|
section.us-detail-settings
|
||||||
fieldset(tg-task-is-iocaine-button, tg-check-permission="modify_task", ng-model="task")
|
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")
|
tg-block-button(tg-check-permission="modify_task", ng-model="task")
|
||||||
div(tg-delete-button, tg-check-permission="delete_task",
|
tg-delete-button(tg-check-permission="delete_task",
|
||||||
on-delete-go-to-url="project-backlog",
|
on-delete-title="'Delete Task'",
|
||||||
project-slug="{{ project.slug }}",
|
on-delete-go-to-url="onDeleteGoToUrl",
|
||||||
ng-model="task")
|
ng-model="task")
|
||||||
|
|
||||||
div.lightbox.lightbox-block.hidden(tg-lb-block, title="Blocking task", 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-us-client-requirement-button(ng-model="us")
|
||||||
tg-block-button(tg-check-permission="modify_us", ng-model="us")
|
tg-block-button(tg-check-permission="modify_us", ng-model="us")
|
||||||
tg-delete-button(tg-check-permission="delete_us",
|
tg-delete-button(tg-check-permission="delete_us",
|
||||||
on-delete-go-to-url="project-backlog",
|
on-delete-title="'Delete User Story'",
|
||||||
project-slug="{{ project.slug }}",
|
on-delete-go-to-url="onDeleteGoToUrl",
|
||||||
ng-model="us")
|
ng-model="us")
|
||||||
|
|
||||||
div.lightbox.lightbox-block.hidden(tg-lb-block, title="Blocking us", ng-model="us")
|
div.lightbox.lightbox-block.hidden(tg-lb-block, title="Blocking us", ng-model="us")
|
||||||
|
|
Loading…
Reference in New Issue