Merge branch 'dev-v7-contenttypeeditor' of https://github.com/umbraco/Umbraco-CMS into dev-v7-contenttypeeditor

This commit is contained in:
Shannon
2015-06-08 18:22:52 +02:00
7 changed files with 112 additions and 79 deletions

View File

@@ -36,7 +36,6 @@ namespace Umbraco.Web.Models.Mapping
config.CreateMap<IMediaType, ContentTypeBasic>();
config.CreateMap<IContentType, ContentTypeBasic>();
config.CreateMap<ContentTypeDisplay, IContentType>()
.ConstructUsing((ContentTypeDisplay source) => new ContentType(source.ParentId))
@@ -56,7 +55,8 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dto => dto.PropertyGroups, expression => expression.Ignore())
.AfterMap((source, dest) =>
{
foreach (var groupDisplay in source.Groups.Where(x => x.Name.IsNullOrWhiteSpace() == false ) )
//get all properties from groups that are not generic properties (-666 id)
foreach (var groupDisplay in source.Groups.Where(x => x.Id != -666))
{
//use underlying logic to add the property group which should wire most things up for us
dest.AddPropertyGroup(groupDisplay.Name);
@@ -70,6 +70,15 @@ namespace Umbraco.Web.Models.Mapping
//dest.PropertyGroups.Add(Mapper.Map<PropertyGroup>(groupDisplay));
}
//add generic properties
var genericProperties = source.Groups.FirstOrDefault(x => x.Id == -666);
if(genericProperties != null){
foreach (var propertyTypeDisplay in genericProperties.Properties)
{
dest.AddPropertyType(Mapper.Map<PropertyType>(propertyTypeDisplay));
}
}
//Sync allowed child types
var allowedTypes = source.AllowedContentTypes.Select((t, i) => new ContentTypeSort(t, i));

View File

@@ -39,6 +39,50 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(
dto => dto.Groups,
expression => expression.ResolveUsing(new PropertyTypeGroupResolver(applicationContext, _propertyEditorResolver)));
config.CreateMap<MemberTypeDisplay, IMemberType>()
.ConstructUsing((MemberTypeDisplay source) => new MemberType(source.ParentId))
//only map id if set to something higher then zero
.ForMember(dto => dto.Id, expression => expression.Condition(display => (Convert.ToInt32(display.Id) > 0)))
.ForMember(dto => dto.Id, expression => expression.MapFrom(display => Convert.ToInt32(display.Id)))
.ForMember(dto => dto.CreatorId, expression => expression.Ignore())
.ForMember(dto => dto.Level, expression => expression.Ignore())
.ForMember(dto => dto.SortOrder, expression => expression.Ignore())
//mapped in aftermap
.ForMember(dto => dto.AllowedContentTypes, expression => expression.Ignore())
//ignore, we'll do this in after map
.ForMember(dto => dto.PropertyGroups, expression => expression.Ignore())
.AfterMap((source, dest) =>
{
//get all properties from groups that are not generic properties (-666 id)
foreach (var groupDisplay in source.Groups.Where(x => x.Id != -666))
{
//use underlying logic to add the property group which should wire most things up for us
dest.AddPropertyGroup(groupDisplay.Name);
//now update that group with the values from the display object
Mapper.Map(groupDisplay, dest.PropertyGroups[groupDisplay.Name]);
foreach (var propertyTypeDisplay in groupDisplay.Properties)
{
dest.AddPropertyType(Mapper.Map<PropertyType>(propertyTypeDisplay), groupDisplay.Name);
}
//dest.PropertyGroups.Add(Mapper.Map<PropertyGroup>(groupDisplay));
}
//add generic properties
var genericProperties = source.Groups.FirstOrDefault(x => x.Id == -666);
if (genericProperties != null)
{
foreach (var propertyTypeDisplay in genericProperties.Properties)
{
dest.AddPropertyType(Mapper.Map<PropertyType>(propertyTypeDisplay));
}
}
});
}
}
}

View File

@@ -90,12 +90,13 @@ namespace Umbraco.Web.Models.Mapping
//get all generic properties not already mapped to the generic props collection
var ownGenericProperties = source.CompositionPropertyTypes.Where(x => x.PropertyGroupId == null && genericProperties.Any(y => y.Id == x.Id));
var ownGenericProperties = source.CompositionPropertyTypes.Where(x => x.PropertyGroupId == null && !genericProperties.Any(y => y.Id == x.Id));
genericProperties.AddRange(MapProperties(ownGenericProperties, source, 0, false));
if (genericProperties.Any())
{
var genericTab = new PropertyGroupDisplay() { Id = 0, Name = "Generic properties", ParentGroupId = 0, ContentTypeId = source.Id, SortOrder = 999, Inherited = false };
var genericTab = new PropertyGroupDisplay() { Id = -666, Name = "Generic properties", ParentGroupId = 0, ContentTypeId = source.Id, SortOrder = 999, Inherited = false };
genericTab.Properties = genericProperties;
groups.Add(0, genericTab);
}
@@ -145,7 +146,7 @@ namespace Umbraco.Web.Models.Mapping
private IEnumerable<PropertyTypeDisplay> MapProperties(IEnumerable<PropertyType> properties, IContentTypeBase contentType, int groupId, bool inherited)
{
var mappedProperties = new List<PropertyTypeDisplay>();
foreach (var p in properties)
foreach (var p in properties.Where(x => x.DataTypeDefinitionId != 0) )
{
var editor = _propertyEditorResolver.Value.GetByAlias(p.PropertyEditorAlias);
var preVals = _applicationContext.Services.DataTypeService.GetPreValuesCollectionByDataTypeId(p.DataTypeDefinitionId);