Fix language inconsistencies management
This commit is contained in:
@@ -52,7 +52,12 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
sql.OrderBy<LanguageDto>(dto => dto.Id);
|
||||
|
||||
// get languages
|
||||
var languages = Database.Fetch<LanguageDto>(sql).Select(ConvertFromDto).ToList();
|
||||
var languages = Database.Fetch<LanguageDto>(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)
|
||||
|
||||
@@ -28,23 +28,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
{
|
||||
public IEnumerable<Language> Convert(IEnumerable<ILanguage> source, IEnumerable<Language> destination, ResolutionContext context)
|
||||
{
|
||||
var allLanguages = source.OrderBy(x => x.Id).ToList();
|
||||
var langs = new List<Language>(allLanguages.Select(x => context.Mapper.Map<ILanguage, Language>(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<ILanguage, Language>(x, null, context)).OrderBy(x => x.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user