public override object TransformPlaceholderElement(RenderedPlaceholderElement element) { var transformedElement = base.TransformPlaceholderElement(element); var renderingConfigurationName = GetRenderingConfigurationName(element); var args = new TransformPlaceholderElementPipelineArgs(element, renderingConfigurationName, transformedElement); _pipelineManager.Run(PipelineName, args, GroupName); return(args.Result); }
private bool ContainsRecursiveRenderedRendering( Item item, RenderedPlaceholderElement renderedItemElement, IRenderingConfiguration renderingConfiguration, int nestingLevel = 0, bool itemRendered = false) { if (!(renderedItemElement is RenderedJsonRendering rendering) || string.IsNullOrEmpty(rendering.DataSource)) { return(false); } var datasourceId = GetIdFromDataSource(item, rendering); if (datasourceId == item.ID && nestingLevel > 1 || nestingLevel > 15) { return(true); } nestingLevel++; if (!string.IsNullOrEmpty(rendering.DataSource) && rendering.RenderingName == Constants.SnippetRenderingName && item.TemplateID == Constants.SnippedItemTemplateId && !itemRendered) { if (CheckSnippetsContainsRecursiveElements(item, renderingConfiguration, nestingLevel, rendering)) { return(true); } } if (rendering.Placeholders == null) { return(false); } foreach (var renderingPlaceholder in rendering.Placeholders) { if (renderingPlaceholder.Elements.Any( renderingPlaceholderElement => ContainsRecursiveRenderedRendering( item, renderingPlaceholderElement, renderingConfiguration, nestingLevel))) { return(true); } } return(false); }
private bool GetSnippetComponentCondition(Item item, RenderedPlaceholderElement element, Guid?parentItemId) { if (!(element is RenderedJsonRendering renderedJsonRendering) || string.IsNullOrEmpty(renderedJsonRendering.DataSource)) { return(false); } var datasourceId = GetIdFromDataSource(item, renderedJsonRendering); bool result = renderedJsonRendering.RenderingName == Constants.SnippetRenderingName && datasourceId != item.ID && (!parentItemId.HasValue || datasourceId != new ID(parentItemId.Value)); return(result); }
public TransformPlaceholderElementPipelineArgs(RenderedPlaceholderElement element, string renderingConfigurationName, dynamic transformedElement) { Element = element ?? throw new ArgumentNullException(nameof(element)); RenderingConfigurationName = renderingConfigurationName ?? throw new ArgumentNullException(nameof(renderingConfigurationName)); Result = transformedElement ?? throw new ArgumentNullException(nameof(transformedElement)); }
private static string GetRenderingConfigurationName(RenderedPlaceholderElement element) { return((element as ExtensibleRenderedJsonRendering)?.RenderingConfigurationName ?? string.Empty); }