Fix/Refactor tg-delete-button

stable
David Barragán Merino 2014-10-24 16:06:19 +02:00
parent d251b07be0
commit 0e355f59cb
7 changed files with 58 additions and 18 deletions

View File

@ -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])
#############################################################################

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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")

View File

@ -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")

View File

@ -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")