Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
 }
Example #5
0
 private static string GetRenderingConfigurationName(RenderedPlaceholderElement element)
 {
     return((element as ExtensibleRenderedJsonRendering)?.RenderingConfigurationName ?? string.Empty);
 }