Files
Umbraco-CMS/src/Umbraco.Web/Models/Mapping/LanguageMapDefinition.cs

59 lines
2.3 KiB
C#
Raw Normal View History

2019-03-24 12:01:23 +01:00
using System;
using System.Collections.Generic;
using System.Linq;
2019-03-24 12:01:23 +01:00
using Umbraco.Core.Mapping;
using Umbraco.Core.Models;
using Umbraco.Web.Models.ContentEditing;
using Language = Umbraco.Web.Models.ContentEditing.Language;
namespace Umbraco.Web.Models.Mapping
{
2019-04-03 10:39:49 +02:00
internal class LanguageMapDefinition : IMapDefinition
{
2019-04-03 10:39:49 +02:00
public void DefineMaps(UmbracoMapper mapper)
{
2019-03-26 10:39:50 +01:00
mapper.Define<ILanguage, EntityBasic>((source, context) => new EntityBasic(), Map);
mapper.Define<ILanguage, Language>((source, context) => new Language(), Map);
mapper.Define<IEnumerable<ILanguage>, IEnumerable<Language>>((source, context) => new List<Language>(), Map);
}
2019-03-24 12:01:23 +01:00
// Umbraco.Code.MapAll -Udi -Path -Trashed -AdditionalData -Icon
2019-03-26 10:39:50 +01:00
private static void Map(ILanguage source, EntityBasic target, MapperContext context)
{
2019-03-24 12:01:23 +01:00
target.Name = source.CultureName;
target.Key = source.Key;
target.ParentId = -1;
target.Alias = source.IsoCode;
target.Id = source.Id;
}
2019-03-24 12:01:23 +01:00
// Umbraco.Code.MapAll
2019-03-26 10:39:50 +01:00
private static void Map(ILanguage source, Language target, MapperContext context)
2019-03-24 12:01:23 +01:00
{
target.Id = source.Id;
target.IsoCode = source.IsoCode;
target.Name = source.CultureInfo.DisplayName;
target.IsDefault = source.IsDefault;
target.IsMandatory = source.IsMandatory;
target.FallbackLanguageId = source.FallbackLanguageId;
}
2019-03-26 10:39:50 +01:00
private static void Map(IEnumerable<ILanguage> source, IEnumerable<Language> target, MapperContext context)
2019-03-24 12:01:23 +01:00
{
2019-04-03 10:39:49 +02:00
if (target == null)
throw new ArgumentNullException(nameof(target));
2019-03-24 12:01:23 +01:00
if (!(target is List<Language> list))
throw new NotSupportedException($"{nameof(target)} must be a List<Language>.");
2019-04-08 10:05:21 +02:00
var temp = context.MapEnumerable<ILanguage, Language>(source);
2019-03-24 12:01:23 +01:00
//Put the default language first in the list & then sort rest by a-z
var defaultLang = temp.SingleOrDefault(x => x.IsDefault);
2019-03-24 12:01:23 +01:00
// insert default lang first, then remaining language a-z
list.Add(defaultLang);
list.AddRange(temp.Where(x => x != defaultLang).OrderBy(x => x.Name));
}
}
}