Exemplo n.º 1
0
        /// <summary>
        /// Get all renderings out of the layout definition
        /// </summary>
        /// <param name="layoutDefinition">xml of the layout definition</param>
        /// <returns>list of renderings</returns>
        protected virtual IEnumerable <Rendering> GetRenderings(XElement layoutDefinition)
        {
            XmlBasedRenderingParser parser = MvcSettings.GetRegisteredObject <XmlBasedRenderingParser>();

            foreach (XElement xelement in layoutDefinition.Elements("d"))
            {
                Guid deviceId = xelement.GetAttributeValueOrEmpty("id").ToGuid();
                Guid layoutId = xelement.GetAttributeValueOrEmpty("l").ToGuid();

                yield return(GetRendering(xelement, deviceId, layoutId, "Layout", parser));

                foreach (XElement renderingNode in xelement.Elements("r"))
                {
                    yield return(GetRendering(renderingNode, deviceId, layoutId, renderingNode.Name.LocalName, parser));
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets from layout.
        /// </summary>
        /// <param name="rendering">The rendering.</param>
        /// <param name="args">The args.</param>
        /// <returns></returns>
        protected virtual object GetFromLayout(Rendering rendering, GetModelArgs args)
        {
            string pathOrId = rendering.Properties["LayoutId"];

            if (pathOrId.IsWhiteSpaceOrNull())
            {
                return(null);
            }
            string model = MvcSettings.GetRegisteredObject <ItemLocator>().GetItem(pathOrId).ValueOrDefault(i => i["Model"]);

            if (model.IsWhiteSpaceOrNull())
            {
                return(null);
            }
            else
            {
                return(GetObject(model, rendering.Item.Database, rendering));
            }
        }
Exemplo n.º 3
0
        protected virtual object GetFromLayout(Rendering rendering, GetModelArgs args)
        {
            string pathOrId = rendering.Properties["LayoutId"];

            if (StringExtensions.IsWhiteSpaceOrNull(pathOrId))
            {
                return((object)null);
            }
            string model = ObjectExtensions.ValueOrDefault <Item, string>(MvcSettings.GetRegisteredObject <ItemLocator>().GetItem(pathOrId), (Func <Item, string>)(i => i["Model"]));

            if (StringExtensions.IsWhiteSpaceOrNull(model))
            {
                return((object)null);
            }
            else
            {
                return(GetObject(model));
            }
        }
        protected override IEnumerable <Rendering> GetRenderings(XElement layoutDefinition, BuildPageDefinitionArgs args)
        {
            var parser = MvcSettings.GetRegisteredObject <XmlBasedRenderingParser>();

            foreach (var node in layoutDefinition.Elements((XName)"d"))
            {
                var deviceNode = node;

                var deviceId = deviceNode.GetAttributeValueOrEmpty("id").ToGuid();
                var layoutId = deviceNode.GetAttributeValueOrEmpty("l").ToGuid();

                if (args.PageContext.RequestContext.HttpContext.IsAmpRequest())
                {
                    layoutId = new Guid(Sitecore.Configuration.Settings.GetSetting("MyProject.AmpLayoutId"));
                }

                yield return(this.GetRendering(deviceNode, deviceId, layoutId, "Layout", parser));

                foreach (var element2 in deviceNode.Elements((XName)"r"))
                {
                    yield return(this.GetRendering(element2, deviceId, layoutId, element2.Name.LocalName, parser));
                }
            }
        }