Save of fall-back language on create and update of language
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 });
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user