Updates UI to allow updating a culture for a language and warn the user if they are changing it, updates the controller to be able to udpate a culture on a lang

This commit is contained in:
Shannon
2019-10-14 10:04:51 +02:00
committed by Bjarke Berg
parent a7eb693053
commit 37fce725ff
6 changed files with 2280 additions and 2211 deletions

View File

@@ -1,7 +1,7 @@
(function () {
"use strict";
function LanguagesEditController($scope, $timeout, $location, $routeParams, navigationService, notificationsService, localizationService, languageResource, contentEditingHelper, formHelper, eventsService) {
function LanguagesEditController($scope, $q, $timeout, $location, $routeParams, overlayService, navigationService, notificationsService, localizationService, languageResource, contentEditingHelper, formHelper, eventsService) {
var vm = this;
@@ -20,6 +20,8 @@
vm.toggleMandatory = toggleMandatory;
vm.toggleDefault = toggleDefault;
var currCulture = null;
function init() {
// localize labels
@@ -32,7 +34,8 @@
"languages_addLanguage",
"languages_noFallbackLanguageOption",
"languages_fallbackLanguageDescription",
"languages_fallbackLanguage"
"languages_fallbackLanguage",
"defaultdialogs_confirmSure"
];
localizationService.localizeMany(labelKeys).then(function (values) {
@@ -43,6 +46,7 @@
vm.labels.defaultLanguageHelp = values[4];
vm.labels.addLanguage = values[5];
vm.labels.noFallbackLanguageOption = values[6];
vm.labels.areYouSure = values[9];
$scope.properties = {
fallbackLanguage: {
@@ -53,46 +57,56 @@
};
if ($routeParams.create) {
vm.page.name = vm.labels.addLanguage;
languageResource.getCultures().then(function (culturesDictionary) {
var cultures = [];
angular.forEach(culturesDictionary, function (value, key) {
cultures.push({
name: key,
displayName: value
});
});
vm.availableCultures = cultures;
});
vm.page.name = vm.labels.addLanguage;
}
});
vm.loading = true;
languageResource.getAll().then(function (languages) {
var promises = [];
//load all culture/languages
promises.push(languageResource.getCultures().then(function (culturesDictionary) {
var cultures = [];
angular.forEach(culturesDictionary, function (value, key) {
cultures.push({
name: key,
displayName: value
});
});
vm.availableCultures = cultures;
}));
//load all possible fallback languages
promises.push(languageResource.getAll().then(function (languages) {
vm.availableLanguages = languages.filter(function (l) {
return $routeParams.id != l.id;
});
vm.loading = false;
});
}));
if (!$routeParams.create) {
vm.loading = true;
languageResource.getById($routeParams.id).then(function(lang) {
promises.push(languageResource.getById($routeParams.id).then(function(lang) {
vm.language = lang;
vm.page.name = vm.language.name;
/* we need to store the initial default state so we can disabel the toggle if it is the default.
/* we need to store the initial default state so we can disable the toggle if it is the default.
we need to prevent from not having a default language. */
vm.initIsDefault = angular.copy(vm.language.isDefault);
vm.loading = false;
makeBreadcrumbs();
});
//store to check if we are changing the lang culture
currCulture = vm.language.culture;
}));
}
$q.all(promises, function () {
vm.loading = false;
});
$timeout(function () {
navigationService.syncTree({ tree: "languages", path: "-1" });
});
@@ -103,31 +117,54 @@
if (formHelper.submitForm({ scope: $scope })) {
vm.page.saveButtonState = "busy";
languageResource.save(vm.language).then(function (lang) {
//check if the culture is being changed
if (currCulture && vm.language.culture !== currCulture) {
formHelper.resetForm({ scope: $scope });
const changeCultureAlert = {
title: vm.labels.areYouSure,
view: "views/languages/overlays/change.html",
submitButtonLabelKey: "general_continue",
submit: function (model) {
saveLanguage();
overlayService.close();
},
close: function () {
overlayService.close();
vm.page.saveButtonState = "init";
}
};
vm.language = lang;
vm.page.saveButtonState = "success";
localizationService.localize("speechBubbles_languageSaved").then(function(value){
notificationsService.success(value);
});
// emit event when language is created or updated/saved
var args = { language: lang, isNew: $routeParams.create ? true : false };
eventsService.emit("editors.languages.languageSaved", args);
back();
}, function (err) {
vm.page.saveButtonState = "error";
formHelper.handleError(err);
});
overlayService.open(changeCultureAlert);
}
else {
saveLanguage();
}
}
}
function saveLanguage() {
languageResource.save(vm.language).then(function (lang) {
formHelper.resetForm({ scope: $scope });
vm.language = lang;
vm.page.saveButtonState = "success";
localizationService.localize("speechBubbles_languageSaved").then(function (value) {
notificationsService.success(value);
});
// emit event when language is created or updated/saved
var args = { language: lang, isNew: $routeParams.create ? true : false };
eventsService.emit("editors.languages.languageSaved", args);
back();
}, function (err) {
vm.page.saveButtonState = "error";
formHelper.handleError(err);
});
}
function back() {

View File

@@ -0,0 +1,7 @@
<div>
<div class="umb-alert umb-alert--warning mb2">
<localize key="defaultdialogs_languageChangeWarning">Changing the culture for a language may be an expensive operation and will result in the content cache and indexes being rebuilt</localize>.
</div>
</div>