Esempio n. 1
0
        internal static void InitializePageContext(Page containerPage, ViewContext viewContext)
        {
            PageContext pageContext = global::Sitecore.Context.Page;

            if (pageContext == null)
            {
                return;
            }

            var exists = pageContext.Renderings != null && pageContext.Renderings.Count > 0;

            if (!exists)
            {
                //use the default initializer:
                pageContextInitializer.Invoke(pageContext, null);
                //viewContext.HttpContext.Items["_SITECORE_PLACEHOLDER_AVAILABLE"] = true;
            }
            else
            {
                //our own initializer (almost same as Initialize in PageContext, but we need to skip buildcontroltree, since that is already availabe)
                pageContext_page.SetValue(pageContext, containerPage);
                containerPage.PreRender += (sender, args) => pageContextOnPreRender.Invoke(pageContext, new[] { sender, args });
                switch (Settings.LayoutPageEvent)
                {
                case "preInit":
                    containerPage.PreInit += (o, args) => pageContext.Build();
                    break;

                case "init":
                    containerPage.Init += (o, args) => pageContext.Build();
                    break;

                case "load":
                    containerPage.Load += (o, args) => pageContext.Build();
                    break;
                }
            }
        }