From 9c3e8b8e3c1de02b84e2a883c09fcba67b3dfb4d Mon Sep 17 00:00:00 2001 From: Stephan Date: Tue, 12 Jun 2018 11:11:16 +0200 Subject: [PATCH] Fix language inconsistencies management --- .../Implement/LanguageRepository.cs | 7 ++++++- .../Models/Mapping/LanguageMapperProfile.cs | 18 +----------------- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs index db2e1124a2..740015683a 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs @@ -52,7 +52,12 @@ namespace Umbraco.Core.Persistence.Repositories.Implement sql.OrderBy(dto => dto.Id); // get languages - var languages = Database.Fetch(sql).Select(ConvertFromDto).ToList(); + var languages = Database.Fetch(sql).Select(ConvertFromDto).OrderBy(x => x.Id).ToList(); + + // fix inconsistencies: there has to be a default language, and it has to be mandatory + var defaultLanguage = languages.FirstOrDefault(x => x.IsDefaultVariantLanguage) ?? languages.First(); + defaultLanguage.IsDefaultVariantLanguage = true; + defaultLanguage.Mandatory = true; // initialize the code-id map lock (_codeIdMap) diff --git a/src/Umbraco.Web/Models/Mapping/LanguageMapperProfile.cs b/src/Umbraco.Web/Models/Mapping/LanguageMapperProfile.cs index b00a0949ec..b305ee2824 100644 --- a/src/Umbraco.Web/Models/Mapping/LanguageMapperProfile.cs +++ b/src/Umbraco.Web/Models/Mapping/LanguageMapperProfile.cs @@ -28,23 +28,7 @@ namespace Umbraco.Web.Models.Mapping { public IEnumerable Convert(IEnumerable source, IEnumerable destination, ResolutionContext context) { - var allLanguages = source.OrderBy(x => x.Id).ToList(); - var langs = new List(allLanguages.Select(x => context.Mapper.Map(x, null, context))); - - //if there's only one language, by default it is the default - if (langs.Count == 1) - { - langs[0].IsDefaultVariantLanguage = true; - langs[0].Mandatory = true; - } - else if (allLanguages.All(x => !x.IsDefaultVariantLanguage)) - { - //if no language has the default flag, then the defaul language is the one with the lowest id - langs[0].IsDefaultVariantLanguage = true; - langs[0].Mandatory = true; - } - - return langs.OrderBy(x => x.Name); + return source.Select(x => context.Mapper.Map(x, null, context)).OrderBy(x => x.Name); } } }