Save of fall-back language on create and update of language

This commit is contained in:
AndyButland
2018-07-06 15:23:21 +02:00
parent 660fe2d773
commit 53e96b25f6
6 changed files with 45 additions and 13 deletions

View File

@@ -18,7 +18,14 @@ namespace Umbraco.Core.Persistence.Factories
{
var dto = new LanguageDto { CultureName = entity.CultureName, IsoCode = entity.IsoCode, IsDefaultVariantLanguage = entity.IsDefaultVariantLanguage, Mandatory = entity.Mandatory };
if (entity.HasIdentity)
{
dto.Id = short.Parse(entity.Id.ToString(CultureInfo.InvariantCulture));
}
if (entity.FallbackLanguage != null)
{
dto.FallbackLanguageId = entity.FallbackLanguage.Id;
}
return dto;
}

View File

@@ -144,14 +144,12 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
IsolatedCache.ClearAllCache();
}
;
var dto = LanguageFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
entity.Id = id;
entity.ResetDirtyProperties();
}
protected override void PersistUpdatedItem(ILanguage entity)

View File

@@ -52,7 +52,7 @@
}
};
if($routeParams.create) {
if ($routeParams.create) {
vm.page.name = vm.labels.addLanguage;
languageResource.getCultures().then(function (culturesDictionary) {
var cultures = [];
@@ -65,7 +65,6 @@
vm.availableCultures = cultures;
});
}
});
vm.loading = true;
@@ -99,11 +98,26 @@
});
}
function setCultureForFallbackLanguage(lang) {
for (var i = 0; i < vm.availableLanguages.length; i++) {
if (vm.availableLanguages[i].id === lang.id) {
lang.culture = vm.availableLanguages[i].culture;
break;
}
}
}
function save() {
if (formHelper.submitForm({ scope: $scope })) {
vm.page.saveButtonState = "busy";
// We need to attach the ISO code to the fall-back language to pass
// server-side validation.
if (vm.language.fallbackLanguage) {
setCultureForFallbackLanguage(vm.language.fallbackLanguage);
}
languageResource.save(vm.language).then(function (lang) {
formHelper.resetForm({ scope: $scope });

View File

@@ -68,7 +68,6 @@
<div>
<select name="fallbackLanguage"
ng-model="vm.language.fallbackLanguage.id"
required
ng-options="l.id as l.name for l in vm.availableLanguages">
<option value="">{{vm.labels.noFallbackLanguageOption}}</option>
</select>

View File

@@ -34,7 +34,7 @@
vm.page.name = vm.labels.languages;
});
languageResource.getAll().then(function(languages) {
languageResource.getAll().then(function (languages) {
vm.languages = languages;
vm.loading = false;
});

View File

@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
@@ -8,8 +7,6 @@ using System.Web.Http;
using AutoMapper;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
using Umbraco.Web.Models;
using Umbraco.Web.Mvc;
using Umbraco.Web.WebApi;
using Umbraco.Web.WebApi.Filters;
@@ -136,21 +133,38 @@ namespace Umbraco.Web.Editors
}
//create it
var newLang = new Umbraco.Core.Models.Language(culture.Name)
var newLang = new Core.Models.Language(culture.Name)
{
CultureName = culture.DisplayName,
IsDefaultVariantLanguage = language.IsDefaultVariantLanguage,
Mandatory = language.Mandatory
Mandatory = language.Mandatory,
};
AssociateFallbackLanguage(language, newLang);
Services.LocalizationService.Save(newLang);
return Mapper.Map<Language>(newLang);
}
found.Mandatory = language.Mandatory;
found.IsDefaultVariantLanguage = language.IsDefaultVariantLanguage;
AssociateFallbackLanguage(language, found);
Services.LocalizationService.Save(found);
return Mapper.Map<Language>(found);
}
private static void AssociateFallbackLanguage(Language submittedLanguage, ILanguage languageToCreateOrUpdate)
{
if (submittedLanguage.FallbackLanguage == null)
{
return;
}
var fallbackLanguageCulture = CultureInfo.GetCultureInfo(submittedLanguage.FallbackLanguage.IsoCode);
languageToCreateOrUpdate.FallbackLanguage = new Core.Models.Language(fallbackLanguageCulture.Name)
{
Id = submittedLanguage.FallbackLanguage.Id,
CultureName = fallbackLanguageCulture.DisplayName
};
}
}
}