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:
@@ -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() {
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user