예제 #1
0
 /// <summary>
 /// Processes the specified args.
 /// </summary>
 /// <param name="args">The arguments.</param>
 public override void Process(InsertRenderingsArgs args)
 {
   Assert.ArgumentNotNull(args, "args");
   var resolver = Context.Entity.Resolve<VirtualProductResolver>();
   var presentationItem = resolver.ProductPresentationItem;
   args.ContextItem = presentationItem ?? Sitecore.Context.Item;
 }
예제 #2
0
        /// <summary>
        /// Processes the specified args.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public override void Process(InsertRenderingsArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            var resolver         = Context.Entity.Resolve <VirtualProductResolver>();
            var presentationItem = resolver.ProductPresentationItem;

            args.ContextItem = presentationItem ?? Sitecore.Context.Item;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="args"></param>
        public override void Process(InsertRenderingsArgs args)
        {
            if (!args.HasRenderings) return;

            foreach (var rendering in args.Renderings)
            {
                SetRenderingDataSource(rendering);
            }
        }
예제 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="args"></param>
        public override void Process(InsertRenderingsArgs args)
        {
            if (!args.HasRenderings)
            {
                return;
            }

            foreach (var rendering in args.Renderings)
            {
                SetRenderingDataSource(rendering);
            }
        }
        public override void Process(InsertRenderingsArgs args)
        {
            //Get the merged item layout field value
            Field layoutField = args.ContextItem.Fields[FieldIDs.LayoutField];

            if (layoutField == null)
            {
                return;
            }

            string fieldValue = LayoutField.GetFieldValue(layoutField);

            if (string.IsNullOrEmpty(fieldValue))
            {
                return;
            }

            //Parse it for easier processing
            XDocument layout = XDocument.Parse(fieldValue);

            XmlBasedRenderingParser parser = new XmlBasedRenderingParser();

            //Build a shared page context
            Sitecore.Mvc.Presentation.PageContext pageCtx = new Sitecore.Mvc.Presentation.PageContext();

            HttpContextWrapper httpCtxWrapper = new HttpContextWrapper(HttpContext.Current);
            RouteData          routeData      = CreateRouteData();

            pageCtx.RequestContext = CreateRequestContext(httpCtxWrapper, routeData);

            string deviceId = Sitecore.Context.Device.ID.ToString();

            //Loop through the renderings
            foreach (RenderingReference renderingReference in args.Renderings)
            {
                string templateName = renderingReference.RenderingItem.InnerItem.TemplateName;

                //Only do the replacement for MVC renderings
                if (templateName == "View rendering" || templateName == "Controller rendering" || templateName == "Item rendering")
                {
                    XElement  renderingXml = layout.XPathSelectElement("/r/d[@id='" + deviceId + "']/r[@id='" + renderingReference.RenderingID + "']");
                    Rendering rendering    = parser.Parse(renderingXml, false);

                    renderingReference.SetControl(new RenderingWrapper(rendering, pageCtx));
                }
            }
        }
        public override void Process(InsertRenderingsArgs args)
        {
            //Get the merged item layout field value
            Field layoutField = args.ContextItem.Fields[FieldIDs.LayoutField];
            if (layoutField == null)
            {
                return;
            }

            string fieldValue = LayoutField.GetFieldValue(layoutField);
            if (string.IsNullOrEmpty(fieldValue))
            {
                return;
            }

            //Parse it for easier processing
            XDocument layout = XDocument.Parse(fieldValue);

            XmlBasedRenderingParser parser = new XmlBasedRenderingParser();

            //Build a shared page context
            Sitecore.Mvc.Presentation.PageContext pageCtx = new Sitecore.Mvc.Presentation.PageContext();

            HttpContextWrapper httpCtxWrapper = new HttpContextWrapper(HttpContext.Current);
            RouteData routeData = CreateRouteData();

            pageCtx.RequestContext = CreateRequestContext(httpCtxWrapper, routeData);

            string deviceId = Sitecore.Context.Device.ID.ToString();

            //Loop through the renderings
            foreach (RenderingReference renderingReference in args.Renderings)
            {
                string templateName = renderingReference.RenderingItem.InnerItem.TemplateName;

                //Only do the replacement for MVC renderings
                if (templateName == "View rendering" || templateName == "Controller rendering" || templateName == "Item rendering")
                {
                    XElement renderingXml = layout.XPathSelectElement("/r/d[@id='" + deviceId + "']/r[@id='" + renderingReference.RenderingID + "']");
                    Rendering rendering = parser.Parse(renderingXml, false);

                    renderingReference.SetControl(new RenderingWrapper(rendering, pageCtx));
                }
            }
        }
예제 #7
0
        public override void Process(InsertRenderingsArgs args)
        {
            Assert.ArgumentNotNull((object)args, "args");
            if (!args.HasRenderings || args.ContextItem == null)
            {
                return;
            }

            for (var i = args.Renderings.Count - 1; i >= 0; i--)
            {
                var name        = args.Renderings[i]?.RenderingItem?.DisplayName;
                var placeholder = args.Renderings[i]?.Placeholder;
                args.Renderings.Insert(i + 1, new RenderingReference(new CommentControl($"End rendering: {name ?? "unknown"}"))
                {
                    Placeholder = placeholder
                });
                args.Renderings.Insert(i, new RenderingReference(new CommentControl($"Begin rendering: {name ?? "unknown"}"))
                {
                    Placeholder = placeholder
                });
            }
        }