From 11eec044c69adf95835a48b81754ec27309ff4fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Thu, 18 Sep 2014 11:48:17 +0200 Subject: [PATCH 1/3] Make confirm methods independents --- app/coffee/modules/base/confirm.coffee | 83 +++++++++++++------------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/app/coffee/modules/base/confirm.coffee b/app/coffee/modules/base/confirm.coffee index a875ca64..e70184f1 100644 --- a/app/coffee/modules/base/confirm.coffee +++ b/app/coffee/modules/base/confirm.coffee @@ -44,53 +44,52 @@ class ConfirmService extends taiga.Service constructor: (@q, @lightboxService, @loading) -> _.bindAll(@) - hide: -> - if @.el - @lightboxService.close(@.el) + hide: (el)-> + if el + @lightboxService.close(el) - @.el.off(".confirm-dialog") - delete @.el + el.off(".confirm-dialog") ask: (title, subtitle, lightboxSelector=".lightbox_confirm-delete") -> - @.el = angular.element(lightboxSelector) + el = angular.element(lightboxSelector) # Render content - @.el.find("h2.title").html(title) - @.el.find("span.subtitle").html(subtitle) + el.find("h2.title").html(title) + el.find("span.subtitle").html(subtitle) defered = @q.defer() # Assign event handlers - @.el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) => + el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) => event.preventDefault() target = angular.element(event.currentTarget) @loading.start(target) defered.resolve => @loading.finish(target) - @.hide() + @.hide(el) - @.el.on "click.confirm-dialog", "a.button-red", (event) => + el.on "click.confirm-dialog", "a.button-red", (event) => event.preventDefault() defered.reject() - @.hide() + @.hide(el) - @lightboxService.open(@.el) + @lightboxService.open(el) return defered.promise askChoice: (title, subtitle, choices, lightboxSelector=".lightbox-ask-choice") -> - @.el = angular.element(lightboxSelector) + el = angular.element(lightboxSelector) # Render content - @.el.find("h2.title").html(title) - @.el.find("span.subtitle").html(subtitle) - choicesField = @.el.find("select.choices") + el.find("h2.title").html(title) + el.find("span.subtitle").html(subtitle) + choicesField = el.find("select.choices") choicesField.html('') _.each choices, (value, key) -> choicesField.append(angular.element("")) defered = @q.defer() # Assign event handlers - @.el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) => + el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) => event.preventDefault() target = angular.element(event.currentTarget) @loading.start(target) @@ -98,59 +97,59 @@ class ConfirmService extends taiga.Service selected: choicesField.val() finish: => @loading.finish(target) - @.hide() + @.hide(el) } - @.el.on "click.confirm-dialog", "a.button-red", (event) => + el.on "click.confirm-dialog", "a.button-red", (event) => event.preventDefault() defered.reject() - @.hide() + @.hide(el) - @lightboxService.open(@.el) + @lightboxService.open(el) return defered.promise error: (message) -> - @.el = angular.element(".lightbox-generic-error") + el = angular.element(".lightbox-generic-error") # Render content - @.el.find("h2.title").html(message) + el.find("h2.title").html(message) defered = @q.defer() # Assign event handlers - @.el.on "click.confirm-dialog", "a.button-green", (event) => + el.on "click.confirm-dialog", "a.button-green", (event) => event.preventDefault() defered.resolve() - @.hide() + @.hide(el) - @.el.on "click.confirm-dialog", "a.close", (event) => + el.on "click.confirm-dialog", "a.close", (event) => event.preventDefault() defered.resolve() - @.hide() + @.hide(el) - @lightboxService.open(@.el) + @lightboxService.open(el) return defered.promise success: (message) -> - @.el = angular.element(".lightbox-generic-success") + el = angular.element(".lightbox-generic-success") # Render content - @.el.find("h2.title").html(message) + el.find("h2.title").html(message) defered = @q.defer() # Assign event handlers - @.el.on "click.confirm-dialog", "a.button-green", (event) => + el.on "click.confirm-dialog", "a.button-green", (event) => event.preventDefault() defered.resolve() - @.hide() + @.hide(el) - @.el.on "click.confirm-dialog", "a.close", (event) => + el.on "click.confirm-dialog", "a.close", (event) => event.preventDefault() defered.resolve() - @.hide() + @.hide(el) - @lightboxService.open(@.el) + @lightboxService.open(el) return defered.promise @@ -160,17 +159,17 @@ class ConfirmService extends taiga.Service # Add default texts to NOTIFICATION_MSG for new notification types selector = ".notification-message-#{type}" - @.el = angular.element(selector) + el = angular.element(selector) if title - @.el.find("h4").html(title) + el.find("h4").html(title) else - @.el.find("h4").html(NOTIFICATION_MSG[type].title) + el.find("h4").html(NOTIFICATION_MSG[type].title) if message - @.el.find("p").html(message) + el.find("p").html(message) else - @.el.find("p").html(NOTIFICATION_MSG[type].message) + el.find("p").html(NOTIFICATION_MSG[type].message) body = angular.element("body") body.find(".notification-message .notification-light") @@ -193,7 +192,7 @@ class ConfirmService extends taiga.Service delete @.tsem - @.el.on "click", ".icon-delete", (event) => + el.on "click", ".icon-delete", (event) => body.find(selector) .removeClass('active') .addClass('inactive') From 0a2c673bb1a3c6d2630f241a8b69d53bf1da0e73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Thu, 18 Sep 2014 11:50:40 +0200 Subject: [PATCH 2/3] Move confirm module from base to common --- app/coffee/modules/{base => common}/confirm.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename app/coffee/modules/{base => common}/confirm.coffee (99%) diff --git a/app/coffee/modules/base/confirm.coffee b/app/coffee/modules/common/confirm.coffee similarity index 99% rename from app/coffee/modules/base/confirm.coffee rename to app/coffee/modules/common/confirm.coffee index e70184f1..933b45fc 100644 --- a/app/coffee/modules/base/confirm.coffee +++ b/app/coffee/modules/common/confirm.coffee @@ -198,5 +198,5 @@ class ConfirmService extends taiga.Service .addClass('inactive') -module = angular.module("taigaBase") +module = angular.module("taigaCommon") module.service("$tgConfirm", ConfirmService) From 72a54e43af9d84b1612a1d0d583176d4eef97239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Thu, 18 Sep 2014 16:53:21 +0200 Subject: [PATCH 3/3] Fix cases when action failed during confirm lightbox --- app/coffee/modules/admin/memberships.coffee | 1 + app/coffee/modules/backlog/lightboxes.coffee | 1 + app/coffee/modules/backlog/main.coffee | 1 + app/coffee/modules/common/attachments.coffee | 1 + app/coffee/modules/common/confirm.coffee | 5 +++-- app/coffee/modules/issues/detail.coffee | 1 + app/coffee/modules/issues/list.coffee | 6 ++++-- app/coffee/modules/tasks/detail.coffee | 1 + app/coffee/modules/userstories/detail.coffee | 1 + app/coffee/modules/wiki/main.coffee | 1 + app/coffee/modules/wiki/nav.coffee | 6 ++++-- 11 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/coffee/modules/admin/memberships.coffee b/app/coffee/modules/admin/memberships.coffee index ff07ddb0..f41c1e4b 100644 --- a/app/coffee/modules/admin/memberships.coffee +++ b/app/coffee/modules/admin/memberships.coffee @@ -437,6 +437,7 @@ MembershipsRowActionsDirective = ($log, $repo, $rs, $confirm) -> $confirm.notify("success", null, "We've deleted #{subtitle}.") # TODO: i18n onError = -> + finish(false) # TODO: i18in $confirm.notify("error", null, "We have not been able to delete #{subtitle}.") diff --git a/app/coffee/modules/backlog/lightboxes.coffee b/app/coffee/modules/backlog/lightboxes.coffee index 6fd41f6c..05dc87b4 100644 --- a/app/coffee/modules/backlog/lightboxes.coffee +++ b/app/coffee/modules/backlog/lightboxes.coffee @@ -89,6 +89,7 @@ CreateEditSprint = ($repo, $confirm, $rs, $rootscope, lightboxService, $loading) $rootscope.$broadcast("sprintform:remove:success") onError = -> + finish(false) $confirm.notify("error") $repo.remove($scope.sprint).then(onSuccess, onError) diff --git a/app/coffee/modules/backlog/main.coffee b/app/coffee/modules/backlog/main.coffee index 3e3c1e62..de7b422e 100644 --- a/app/coffee/modules/backlog/main.coffee +++ b/app/coffee/modules/backlog/main.coffee @@ -422,6 +422,7 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F finish() @.loadBacklog() promise.then null, => + finish(false) @confirm.notify("error") addNewUs: (type) -> diff --git a/app/coffee/modules/common/attachments.coffee b/app/coffee/modules/common/attachments.coffee index 39517bf1..1f928845 100644 --- a/app/coffee/modules/common/attachments.coffee +++ b/app/coffee/modules/common/attachments.coffee @@ -138,6 +138,7 @@ class AttachmentsController extends taiga.Controller @rootscope.$broadcast("attachment:delete") onError = => + finish(false) @confirm.notify("error", null, "We have not been able to delete #{subtitle}.") return @q.reject() diff --git a/app/coffee/modules/common/confirm.coffee b/app/coffee/modules/common/confirm.coffee index 933b45fc..b1c0e381 100644 --- a/app/coffee/modules/common/confirm.coffee +++ b/app/coffee/modules/common/confirm.coffee @@ -63,9 +63,10 @@ class ConfirmService extends taiga.Service event.preventDefault() target = angular.element(event.currentTarget) @loading.start(target) - defered.resolve => + defered.resolve (ok=true) => @loading.finish(target) - @.hide(el) + if ok + @.hide(el) el.on "click.confirm-dialog", "a.button-red", (event) => event.preventDefault() diff --git a/app/coffee/modules/issues/detail.coffee b/app/coffee/modules/issues/detail.coffee index 7045a4ff..2d9ae266 100644 --- a/app/coffee/modules/issues/detail.coffee +++ b/app/coffee/modules/issues/detail.coffee @@ -135,6 +135,7 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin) finish() @location.path(@navUrls.resolve("project-issues", {project: @scope.project.slug})) promise.then null, => + finish(false) @confirm.notify("error") module.controller("IssueDetailController", IssueDetailController) diff --git a/app/coffee/modules/issues/list.coffee b/app/coffee/modules/issues/list.coffee index 0ed87170..98690d0d 100644 --- a/app/coffee/modules/issues/list.coffee +++ b/app/coffee/modules/issues/list.coffee @@ -626,13 +626,15 @@ IssuesFiltersDirective = ($log, $location, $rs, $confirm) -> $confirm.ask(title, subtitle).then (finish) -> promise = $ctrl.deleteMyFilter(customFilterName) promise.then -> - $ctrl.loadMyFilters().then (filters) -> + promise = $ctrl.loadMyFilters() + promise.then (filters) -> finish() $scope.filters.myFilters = filters renderFilters($scope.filters.myFilters) - $ctrl.loadMyFilters().then null, -> + promise.then null, -> finish() promise.then null, -> + finish(false) $confirm.notify("error") diff --git a/app/coffee/modules/tasks/detail.coffee b/app/coffee/modules/tasks/detail.coffee index fd502b91..8dceb2ef 100644 --- a/app/coffee/modules/tasks/detail.coffee +++ b/app/coffee/modules/tasks/detail.coffee @@ -136,6 +136,7 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin) finish() @location.path(@navUrls.resolve("project-backlog", {project: @scope.project.slug})) promise.then null, => + finish(false) @confirm.notify("error") module.controller("TaskDetailController", TaskDetailController) diff --git a/app/coffee/modules/userstories/detail.coffee b/app/coffee/modules/userstories/detail.coffee index 6b8e0485..2c9d140c 100644 --- a/app/coffee/modules/userstories/detail.coffee +++ b/app/coffee/modules/userstories/detail.coffee @@ -145,6 +145,7 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin) finish() @location.path(@navUrls.resolve("project-backlog", {project: @scope.project.slug})) promise.then null, => + finish(false) $confirm.notify("error") module.controller("UserStoryDetailController", UserStoryDetailController) diff --git a/app/coffee/modules/wiki/main.coffee b/app/coffee/modules/wiki/main.coffee index faff5041..a9c4a4f2 100644 --- a/app/coffee/modules/wiki/main.coffee +++ b/app/coffee/modules/wiki/main.coffee @@ -147,6 +147,7 @@ class WikiDetailController extends mixOf(taiga.Controller, taiga.PageMixin) @confirm.notify("success") onError = => + finish(false) @confirm.notify("error") @repo.remove(@scope.wiki).then onSuccess, onError diff --git a/app/coffee/modules/wiki/nav.coffee b/app/coffee/modules/wiki/nav.coffee index d31d43ee..fbd0a13f 100644 --- a/app/coffee/modules/wiki/nav.coffee +++ b/app/coffee/modules/wiki/nav.coffee @@ -113,12 +113,14 @@ WikiNavDirective = ($tgrepo, $log, $location, $confirm, $navUrls) -> $confirm.ask(title, subtitle).then (finish) => promise = $tgrepo.remove($scope.wikiLinks[linkId]) promise.then -> - $ctrl.loadWikiLinks().then -> + promise = $ctrl.loadWikiLinks() + promise.then -> finish() render($scope.wikiLinks) - $ctrl.loadWikiLinks().then null, -> + promise.then null, -> finish() promise.then null, -> + finish(false) $confirm.notify("error") $el.on "keyup", ".new input", debounce 2000, (event) ->