protected override void OnDisplaying(ContentPart element, ElementDisplayingContext context) { // Content is optional context, so if it's null, we can't render the part element. // This typically only happens when the layout editor is used outside the context of // a content item and still renders the various content part elements as part of the toolbox. if (context.Content == null) { return; } var contentItem = context.Content.ContentItem; var contentPartName = (string)element.Descriptor.StateBag["ElementTypeName"]; var contentPart = contentItem.Parts.FirstOrDefault(x => x.PartDefinition.Name == contentPartName); if ((contentItem.Id == 0 || context.DisplayType == "Design") && context.Updater != null) { // The content item hasn't been stored yet, so bind form values with the content part to represent actual state. var controller = (Controller)context.Updater; var oldValueProvider = controller.ValueProvider; controller.ValueProvider = context.Element.Data.ToValueProvider(_cultureAccessor.CurrentCulture); _contentPartDisplay.UpdateEditor(contentPart, context.Updater); _transactionManager.Cancel(); controller.ValueProvider = oldValueProvider; } var contentPartShape = _contentPartDisplay.BuildDisplay(contentPart, displayType: "Layout"); context.ElementShape.ContentPart = contentPart; context.ElementShape.Content = contentPartShape; }
private void IndexLayout(IndexContentContext context, LayoutPart part) { var layoutShape = _contentPartDisplay.BuildDisplay(part); var layoutHtml = _shapeDisplay.Display(layoutShape); context.DocumentIndex .Add("body", layoutHtml).RemoveTags().Analyze() .Add("format", "html").Store(); }