From 016bed03ae9fb5a2658d6eefd2fcb46173344bbc Mon Sep 17 00:00:00 2001 From: elitsa Date: Fri, 11 Oct 2019 15:38:26 +0200 Subject: [PATCH 1/3] Deleting a language will set the selectedLanguage to the default language and update the mculture attribute in the url. --- .../src/navigation.controller.js | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/navigation.controller.js b/src/Umbraco.Web.UI.Client/src/navigation.controller.js index e4c94f3c66..b585d22e9f 100644 --- a/src/Umbraco.Web.UI.Client/src/navigation.controller.js +++ b/src/Umbraco.Web.UI.Client/src/navigation.controller.js @@ -212,6 +212,22 @@ function NavigationController($scope, $rootScope, $location, $log, $q, $routePar evts.push(eventsService.on("editors.languages.languageDeleted", function (e, args) { loadLanguages().then(function (languages) { $scope.languages = languages; + const defaultCulture = $scope.languages[0].culture; + + if (args.language.culture === $scope.selectedLanguage.culture) { + $scope.selectedLanguage = defaultCulture; + + if ($scope.languages.length > 1) { + $location.search("mculture", defaultCulture); + } else { + $location.search("mculture", null); + } + + var currentEditorState = editorState.getCurrent(); + if (currentEditorState && currentEditorState.path) { + $scope.treeApi.syncTree({ path: currentEditorState.path, activate: true }); + } + } }); })); @@ -255,7 +271,7 @@ function NavigationController($scope, $rootScope, $location, $log, $q, $routePar evts.push(eventsService.on("treeService.removeNode", function (e, args) { //check to see if the current page has been removed - var currentEditorState = editorState.getCurrent() + var currentEditorState = editorState.getCurrent(); if (currentEditorState && currentEditorState.id.toString() === args.node.id.toString()) { //current page is loaded, so navigate to root var section = appState.getSectionState("currentSection"); @@ -279,6 +295,9 @@ function NavigationController($scope, $rootScope, $location, $log, $q, $routePar //select the current language if set in the query string if (mainCulture && $scope.languages && $scope.languages.length > 1) { var found = _.find($scope.languages, function (l) { + if (mainCulture === true) { + return false; + } return l.culture.toLowerCase() === mainCulture.toLowerCase(); }); if (found) { @@ -348,7 +367,7 @@ function NavigationController($scope, $rootScope, $location, $log, $q, $routePar return contentResource.allowsCultureVariation().then(function (b) { if (b === true) { - return languageResource.getAll() + return languageResource.getAll(); } else { return $q.when([]); //resolve an empty collection } From 175253a1a62bf86ca76b37afdc9a9b549cc3fa7e Mon Sep 17 00:00:00 2001 From: elitsa Date: Fri, 11 Oct 2019 15:40:55 +0200 Subject: [PATCH 2/3] Clear Cache and remove mculture from the url if the last non-default language is deleted --- .../src/common/services/navigation.service.js | 4 +++- src/Umbraco.Web/Cache/LanguageCacheRefresher.cs | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) 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 1c28654a1a..ca89f7824b 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 @@ -225,8 +225,10 @@ function navigationService($routeParams, $location, $q, $injector, eventsService retainQueryStrings: function (currRouteParams, nextRouteParams) { var toRetain = angular.copy(nextRouteParams); var updated = false; + _.each(retainedQueryStrings, function (r) { - if (currRouteParams[r] && !nextRouteParams[r]) { + // if mculture is set to null in nextRouteParams, the value will be undefined and we will not retain any query string that has a value of "null" + if (currRouteParams[r] && nextRouteParams[r] !== undefined && !nextRouteParams[r]) { toRetain[r] = currRouteParams[r]; updated = true; } diff --git a/src/Umbraco.Web/Cache/LanguageCacheRefresher.cs b/src/Umbraco.Web/Cache/LanguageCacheRefresher.cs index 9093124609..b3df913ad6 100644 --- a/src/Umbraco.Web/Cache/LanguageCacheRefresher.cs +++ b/src/Umbraco.Web/Cache/LanguageCacheRefresher.cs @@ -45,6 +45,8 @@ namespace Umbraco.Web.Cache ClearAllIsolatedCacheByEntityType(); //if a language is removed, then all dictionary cache needs to be removed ClearAllIsolatedCacheByEntityType(); + // clear since each IContent contains a reference to a string culture + ClearAllIsolatedCacheByEntityType(); RefreshDomains(id); base.Remove(id); } From 913db213503021f74578333bc6f8ab53412812d8 Mon Sep 17 00:00:00 2001 From: elitsa Date: Fri, 11 Oct 2019 15:41:16 +0200 Subject: [PATCH 3/3] Added missing ; --- .../src/views/languages/overview.controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/languages/overview.controller.js b/src/Umbraco.Web.UI.Client/src/views/languages/overview.controller.js index d1b984ed5b..90d418cf77 100644 --- a/src/Umbraco.Web.UI.Client/src/views/languages/overview.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/languages/overview.controller.js @@ -85,7 +85,7 @@ overlayService.open(dialog); }); - event.preventDefault() + event.preventDefault(); event.stopPropagation(); }