From f62920dc475f86efeee47011db226ccb4f3d3cd9 Mon Sep 17 00:00:00 2001 From: Claus Date: Fri, 8 Jan 2016 13:59:39 +0100 Subject: [PATCH] Removed adding compositions from parents as this breaks core functionality. Ignoring property in mappings where it isnt needed. Updating the LockedCompositionsResolver to get parent and use path instead of trying to use path which can be null on GetEmpty. --- .../Models/ContentTypeCompositionBase.cs | 5 ---- .../ContentTypeModelMapperExtensions.cs | 5 ++-- .../Mapping/LockedCompositionsResolver.cs | 23 ++++++++++++------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Core/Models/ContentTypeCompositionBase.cs b/src/Umbraco.Core/Models/ContentTypeCompositionBase.cs index 53018ce6c1..5ac21885d7 100644 --- a/src/Umbraco.Core/Models/ContentTypeCompositionBase.cs +++ b/src/Umbraco.Core/Models/ContentTypeCompositionBase.cs @@ -102,11 +102,6 @@ namespace Umbraco.Core.Models throw new InvalidCompositionException(Alias, contentType.Alias, conflictingPropertyTypeAliases.ToArray()); _contentTypeComposition.Add(contentType); - //Make sure to include the composition's compositions since this is possible with inheritance - foreach (var contentTypeComposition in contentType.ContentTypeComposition) - { - _contentTypeComposition.Add(contentTypeComposition); - } OnPropertyChanged(ContentTypeCompositionSelector); return true; } diff --git a/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapperExtensions.cs b/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapperExtensions.cs index a6a7e79942..5ad728ccab 100644 --- a/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapperExtensions.cs +++ b/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapperExtensions.cs @@ -54,10 +54,11 @@ namespace Umbraco.Web.Models.Mapping { return mapping .ForMember(dto => dto.CreateDate, expression => expression.Ignore()) - .ForMember(dto => dto.UpdateDate, expression => expression.Ignore()) + .ForMember(dto => dto.UpdateDate, expression => expression.Ignore()) .ForMember(dto => dto.ListViewEditorName, expression => expression.Ignore()) .ForMember(dto => dto.Notifications, expression => expression.Ignore()) - .ForMember(dto => dto.Errors, expression => expression.Ignore()); + .ForMember(dto => dto.Errors, expression => expression.Ignore()) + .ForMember(dto => dto.LockedCompositeContentTypes, exp => exp.Ignore()); } public static IMappingExpression MapBaseContentTypeEntityToDisplay( diff --git a/src/Umbraco.Web/Models/Mapping/LockedCompositionsResolver.cs b/src/Umbraco.Web/Models/Mapping/LockedCompositionsResolver.cs index 435947c5de..d3d692d10d 100644 --- a/src/Umbraco.Web/Models/Mapping/LockedCompositionsResolver.cs +++ b/src/Umbraco.Web/Models/Mapping/LockedCompositionsResolver.cs @@ -17,17 +17,24 @@ namespace Umbraco.Web.Models.Mapping protected override IEnumerable ResolveCore(IContentTypeComposition source) { - // get ancestor ids from path (exclude current node id) - var ancestorIds = source.Path.Substring(0, source.Path.LastIndexOf(',')).Split(',').Select(int.Parse); var aliases = new List(); - // loop through all content types and return ordered aliases of ancestors - var allContentTypes = _applicationContext.Services.ContentTypeService.GetAllContentTypes().ToArray(); - foreach (var ancestorId in ancestorIds) + // get ancestor ids from path of parent if not root + if (source.ParentId != Constants.System.Root) { - var ancestor = allContentTypes.FirstOrDefault(x => x.Id == ancestorId); - if (ancestor != null) + var parent = _applicationContext.Services.ContentTypeService.GetContentType(source.ParentId); + if (parent != null) { - aliases.Add(ancestor.Alias); + var ancestorIds = parent.Path.Split(',').Select(int.Parse); + // loop through all content types and return ordered aliases of ancestors + var allContentTypes = _applicationContext.Services.ContentTypeService.GetAllContentTypes().ToArray(); + foreach (var ancestorId in ancestorIds) + { + var ancestor = allContentTypes.FirstOrDefault(x => x.Id == ancestorId); + if (ancestor != null) + { + aliases.Add(ancestor.Alias); + } + } } } return aliases.OrderBy(x => x);