diff --git a/src/Orchard/ContentManagement/Drivers/ContentFieldDriver.cs b/src/Orchard/ContentManagement/Drivers/ContentFieldDriver.cs index 353fa1ce9..c73d37cf6 100644 --- a/src/Orchard/ContentManagement/Drivers/ContentFieldDriver.cs +++ b/src/Orchard/ContentManagement/Drivers/ContentFieldDriver.cs @@ -148,7 +148,7 @@ namespace Orchard.ContentManagement.Drivers { var shapeType = metadata.Type; var fieldName = differentiator ?? String.Empty; - string partName = shape.ContentPart.PartDefinition.Name; + string partName = ctx.ContentPart.PartDefinition.Name; string contentType = shape.ContentItem.ContentType; // whether the content type has been created dynamically or not diff --git a/src/Orchard/ContentManagement/Drivers/ContentShapeResult.cs b/src/Orchard/ContentManagement/Drivers/ContentShapeResult.cs index 604367f0a..5843b5575 100644 --- a/src/Orchard/ContentManagement/Drivers/ContentShapeResult.cs +++ b/src/Orchard/ContentManagement/Drivers/ContentShapeResult.cs @@ -34,12 +34,16 @@ namespace Orchard.ContentManagement.Drivers { return; dynamic parentShape = context.Shape; + context.ContentPart = ContentPart; + var newShape = _shapeBuilder(context); + // add a ContentPart property to the final shape if (ContentPart != null && newShape.ContentPart == null) { newShape.ContentPart = ContentPart; } + // add a ContentField property to the final shape if (ContentField != null && newShape.ContentField == null) { newShape.ContentField = ContentField; } diff --git a/src/Orchard/ContentManagement/Handlers/BuildShapeContext.cs b/src/Orchard/ContentManagement/Handlers/BuildShapeContext.cs index 38c684c00..301d4ca8f 100644 --- a/src/Orchard/ContentManagement/Handlers/BuildShapeContext.cs +++ b/src/Orchard/ContentManagement/Handlers/BuildShapeContext.cs @@ -18,6 +18,7 @@ namespace Orchard.ContentManagement.Handlers { public ContentItem ContentItem { get; private set; } public dynamic New { get; private set; } public string GroupId { get; private set; } + public ContentPart ContentPart { get; set; } public Func FindPlacement { get; set; } }