2017-07-19 13:42:47 +02:00
using System.Collections.Generic ;
using System.Linq ;
using AutoMapper ;
using Umbraco.Core ;
using Umbraco.Core.Logging ;
using Umbraco.Core.Models ;
using Umbraco.Web.Composing ;
using Umbraco.Web.Models.ContentEditing ;
namespace Umbraco.Web.Models.Mapping
{
/// <summary>
/// Declares model mappings for macros.
/// </summary>
2017-09-20 20:06:46 +02:00
internal class MacroMapperProfile : Profile
2017-07-19 13:42:47 +02:00
{
2017-09-20 20:06:46 +02:00
public MacroMapperProfile ( )
2017-07-19 13:42:47 +02:00
{
//FROM IMacro TO EntityBasic
CreateMap < IMacro , EntityBasic > ( )
. ForMember ( x = > x . Udi , expression = > expression . MapFrom ( content = > Udi . Create ( Constants . UdiEntityType . Macro , content . Key ) ) )
. ForMember ( entityBasic = > entityBasic . Icon , expression = > expression . UseValue ( "icon-settings-alt" ) )
. ForMember ( dto = > dto . ParentId , expression = > expression . UseValue ( - 1 ) )
. ForMember ( dto = > dto . Path , expression = > expression . ResolveUsing ( macro = > "-1," + macro . Id ) )
. ForMember ( dto = > dto . Trashed , expression = > expression . Ignore ( ) )
. ForMember ( dto = > dto . AdditionalData , expression = > expression . Ignore ( ) ) ;
CreateMap < IMacro , IEnumerable < MacroParameter > > ( )
. ConvertUsing ( macro = > macro . Properties . Select ( Mapper . Map < MacroParameter > ) . ToList ( ) ) ;
CreateMap < IMacroProperty , MacroParameter > ( )
. ForMember ( x = > x . View , expression = > expression . Ignore ( ) )
. ForMember ( x = > x . Configuration , expression = > expression . Ignore ( ) )
. ForMember ( x = > x . Value , expression = > expression . Ignore ( ) )
. AfterMap ( ( property , parameter ) = >
{
//map the view and the config
// we need to show the depracated ones for backwards compatibility
var paramEditor = Current . ParameterEditors [ property . EditorAlias ] ; // fixme - include/filter deprecated?!
if ( paramEditor = = null )
{
//we'll just map this to a text box
2018-03-19 18:39:34 +01:00
paramEditor = Current . ParameterEditors [ Constants . PropertyEditors . Aliases . TextBox ] ;
2018-08-14 22:36:47 +01:00
Current . Logger . Warn < MacroMapperProfile > ( "Could not resolve a parameter editor with alias {PropertyEditorAlias}, a textbox will be rendered in it's place" , property . EditorAlias ) ;
2017-07-19 13:42:47 +02:00
}
2018-03-16 09:06:44 +01:00
parameter . View = paramEditor . GetValueEditor ( ) . View ;
2017-07-19 13:42:47 +02:00
//set the config
2018-02-16 12:00:45 +01:00
parameter . Configuration = paramEditor . DefaultConfiguration ;
2017-07-19 13:42:47 +02:00
} ) ;
}
}
2017-07-20 11:21:28 +02:00
}