From d3fb614d259a284e827e2739138b39bf6b83c655 Mon Sep 17 00:00:00 2001 From: David Sheiles Date: Thu, 28 Feb 2019 17:29:40 +1100 Subject: [PATCH] Move logic to tree service and navigarion service --- .../src/common/services/navigation.service.js | 15 ++++++++++++++- .../src/common/services/tree.service.js | 3 +++ .../views/datatypes/datatype.delete.controller.js | 7 ------- .../src/views/documenttypes/delete.controller.js | 9 ++------- .../src/views/macros/macros.delete.controller.js | 8 -------- .../src/views/mediatypes/delete.controller.js | 6 ------ .../src/views/membertypes/delete.controller.js | 7 +------ .../views/partialviewmacros/delete.controller.js | 7 +------ .../src/views/partialviews/delete.controller.js | 8 +------- .../src/views/scripts/delete.controller.js | 8 +------- .../src/views/stylesheets/delete.controller.js | 8 +------- .../src/views/templates/delete.controller.js | 9 +-------- 12 files changed, 25 insertions(+), 70 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js b/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js index 76fcc2d1d8..5933d6b039 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/navigation.service.js @@ -13,7 +13,7 @@ * Section navigation and search, and maintain their state for the entire application lifetime * */ -function navigationService($routeParams, $location, $q, $timeout, $injector, eventsService, umbModelMapper, treeService, appState) { +function navigationService($routeParams, $location, $q, $timeout, $injector, eventsService, umbModelMapper, treeService, appState, editorState) { //the promise that will be resolved when the navigation is ready var navReadyPromise = $q.defer(); @@ -26,6 +26,19 @@ function navigationService($routeParams, $location, $q, $timeout, $injector, eve navReadyPromise.resolve(mainTreeApi); }); + eventsService.on("treeService.removeNode", function (e, args) { + //check to see if the current page has been removed + + + var currentEditorState = editorState.getCurrent() + console.log("currentEditorState", currentEditorState); + if (currentEditorState != null && currentEditorState.id === args.node.id) { + //current page is loaded, so navigate to root + var section = appState.getSectionState("currentSection"); + $location.path("/" + section); + } + }); + //A list of query strings defined that when changed will not cause a reload of the route var nonRoutingQueryStrings = ["mculture", "cculture", "lq"]; var retainedQueryStrings = ["mculture"]; diff --git a/src/Umbraco.Web.UI.Client/src/common/services/tree.service.js b/src/Umbraco.Web.UI.Client/src/common/services/tree.service.js index 4650458abc..6a15c0f553 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/tree.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/tree.service.js @@ -350,6 +350,9 @@ function treeService($q, treeResource, iconHelper, notificationsService, eventsS parent.children.splice(parent.children.indexOf(treeNode), 1); parent.hasChildren = parent.children.length !== 0; + + //Notify that the node has been removed + eventsService.emit("treeService.removeNode", { node: treeNode }); }, /** diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js index 256422a724..cef85aae48 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.delete.controller.js @@ -22,13 +22,6 @@ function DataTypeDeleteController($scope, $location, dataTypeResource, treeServi treeService.removeNode($scope.currentNode); navigationService.hideMenu(); }); - - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted DataType is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section); - } - }; $scope.performContainerDelete = function () { diff --git a/src/Umbraco.Web.UI.Client/src/views/documenttypes/delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/documenttypes/delete.controller.js index 6b6d25c7b3..919239a95d 100644 --- a/src/Umbraco.Web.UI.Client/src/views/documenttypes/delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/documenttypes/delete.controller.js @@ -6,8 +6,8 @@ * @description * The controller for deleting content */ -function DocumentTypesDeleteController($scope, $location, dataTypeResource, contentTypeResource, treeService, navigationService, appState) { - +function DocumentTypesDeleteController($scope, dataTypeResource, contentTypeResource, treeService, navigationService) { + $scope.performDelete = function() { //mark it for deletion (used in the UI) @@ -22,11 +22,6 @@ function DocumentTypesDeleteController($scope, $location, dataTypeResource, cont treeService.removeNode($scope.currentNode); navigationService.hideMenu(); - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted doctype is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section ); - } }); }; diff --git a/src/Umbraco.Web.UI.Client/src/views/macros/macros.delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/macros/macros.delete.controller.js index b674799058..7e09603dd9 100644 --- a/src/Umbraco.Web.UI.Client/src/views/macros/macros.delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/macros/macros.delete.controller.js @@ -18,14 +18,6 @@ function MacrosDeleteController($scope, $location, macroResource, navigationServ treeService.removeNode($scope.currentNode); navigationService.hideMenu(); - - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted Macro is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section); - } - - }); } diff --git a/src/Umbraco.Web.UI.Client/src/views/mediatypes/delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/mediatypes/delete.controller.js index bc18eaad20..33076c058a 100644 --- a/src/Umbraco.Web.UI.Client/src/views/mediatypes/delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/mediatypes/delete.controller.js @@ -21,12 +21,6 @@ function MediaTypesDeleteController($scope, $location, dataTypeResource, mediaTy // TODO: Need to sync tree, etc... treeService.removeNode($scope.currentNode); navigationService.hideMenu(); - - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted MediaType is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section); - } }); }; diff --git a/src/Umbraco.Web.UI.Client/src/views/membertypes/delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/membertypes/delete.controller.js index a4458461d0..a40f510703 100644 --- a/src/Umbraco.Web.UI.Client/src/views/membertypes/delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/membertypes/delete.controller.js @@ -6,7 +6,7 @@ * @description * The controller for deleting member types */ -function MemberTypesDeleteController($scope, $location, memberTypeResource, treeService, navigationService, appState) { +function MemberTypesDeleteController($scope, memberTypeResource, treeService, navigationService) { $scope.performDelete = function() { @@ -22,11 +22,6 @@ function MemberTypesDeleteController($scope, $location, memberTypeResource, tree treeService.removeNode($scope.currentNode); navigationService.hideMenu(); - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted MemberType is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section); - } }); }; diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/delete.controller.js index 07b5cca532..21e34e3cd9 100644 --- a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/delete.controller.js @@ -6,7 +6,7 @@ * @description * The controller for deleting partial view macros */ -function PartialViewMacrosDeleteController($scope, $location, codefileResource, treeService, navigationService, appState) { +function PartialViewMacrosDeleteController($scope, codefileResource, treeService, navigationService) { $scope.performDelete = function() { @@ -22,11 +22,6 @@ function PartialViewMacrosDeleteController($scope, $location, codefileResource, treeService.removeNode($scope.currentNode); navigationService.hideMenu(); - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted PartialViewMacro is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section); - } }); }; diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviews/delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/partialviews/delete.controller.js index 9419150181..dddfb1b293 100644 --- a/src/Umbraco.Web.UI.Client/src/views/partialviews/delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/partialviews/delete.controller.js @@ -6,7 +6,7 @@ * @description * The controller for deleting partial views */ -function PartialViewsDeleteController($scope, $location, codefileResource, treeService, navigationService, appState) { +function PartialViewsDeleteController($scope, codefileResource, treeService, navigationService) { $scope.performDelete = function() { @@ -25,12 +25,6 @@ function PartialViewsDeleteController($scope, $location, codefileResource, treeS treeService.removeNode($scope.currentNode); navigationService.hideMenu(); - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted PartialView is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section); - } - }, function (err) { $scope.currentNode.loading = false; $scope.error = err; diff --git a/src/Umbraco.Web.UI.Client/src/views/scripts/delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/scripts/delete.controller.js index 34d474cb12..f7db66f786 100644 --- a/src/Umbraco.Web.UI.Client/src/views/scripts/delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/scripts/delete.controller.js @@ -6,7 +6,7 @@ * @description * The controller for deleting scripts */ -function ScriptsDeleteController($scope, $location, codefileResource, treeService, navigationService, appState) { +function ScriptsDeleteController($scope, codefileResource, treeService, navigationService) { $scope.performDelete = function() { @@ -22,12 +22,6 @@ function ScriptsDeleteController($scope, $location, codefileResource, treeServic treeService.removeNode($scope.currentNode); navigationService.hideMenu(); - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted Script is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section); - } - }); }; diff --git a/src/Umbraco.Web.UI.Client/src/views/stylesheets/delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/stylesheets/delete.controller.js index 2b26a05d05..cdfe92d105 100644 --- a/src/Umbraco.Web.UI.Client/src/views/stylesheets/delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/stylesheets/delete.controller.js @@ -6,7 +6,7 @@ * @description * The controller for deleting stylesheets */ -function StyleSheetsDeleteController($scope, $location, codefileResource, treeService, navigationService, appState) { +function StyleSheetsDeleteController($scope, codefileResource, treeService, navigationService) { $scope.performDelete = function() { @@ -18,12 +18,6 @@ function StyleSheetsDeleteController($scope, $location, codefileResource, treeSe $scope.currentNode.loading = false; treeService.removeNode($scope.currentNode); navigationService.hideMenu(); - - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted StyleSheet is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section); - } }); }; diff --git a/src/Umbraco.Web.UI.Client/src/views/templates/delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/templates/delete.controller.js index 33a4d00ee8..bed7a43bae 100644 --- a/src/Umbraco.Web.UI.Client/src/views/templates/delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/templates/delete.controller.js @@ -6,7 +6,7 @@ * @description * The controller for the template delete dialog */ -function TemplatesDeleteController($scope, $location, templateResource, treeService, navigationService, appState) { +function TemplatesDeleteController($scope, templateResource, treeService, navigationService) { $scope.performDelete = function() { @@ -26,13 +26,6 @@ function TemplatesDeleteController($scope, $location, templateResource, treeServ treeService.removeNode($scope.currentNode); navigationService.hideMenu(); - if ("/" + $scope.currentNode.routePath.toLowerCase() === $location.path().toLowerCase()) { - //The deleted Template is open, so redirect - var section = appState.getSectionState("currentSection"); - $location.path("/" + section); - } - - }, function (err) { $scope.currentNode.loading = false; $scope.error = err;