Beispiel #1
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            //This is only here for legacy if people arent' using master pages...
            //TODO: We need to test that this still works!! Or do we ??
            if (!UmbracoSettings.UseAspNetMasterPages)
            {
                var args = new RequestInitEventArgs()
                {
                    Page    = _upage,
                    PageId  = _upage.PageID,
                    Context = Context
                };
                FireBeforeRequestInit(args);

                //if we are cancelling then return and don't proceed
                if (args.Cancel)
                {
                    return;
                }

                var pageHolder = new umbraco.layoutControls.umbracoPageHolder
                {
                    ID = "umbPageHolder"
                };
                Page.Controls.Add(pageHolder);
                _upage.RenderPage(_upage.Template);
                var umbPageHolder = (layoutControls.umbracoPageHolder)Page.FindControl("umbPageHolder");
                umbPageHolder.Populate(_upage);

                //fire the init finished event
                FireAfterRequestInit(args);
            }
        }
Beispiel #2
0
        protected override void OnInit(EventArgs e)
        {
            using (DisposableTimer.DebugDuration <UmbracoDefault>("Init"))
            {
                base.OnInit(e);

                //This is a special case for webforms since in some cases we may be POSTing to an MVC controller, adding TempData there and then redirecting
                // to a webforms handler. In that case we need to manually clear out the tempdata ourselves since this is normally the function of the base
                // MVC controller instance and since that is not executing, we'll deal with that here.
                //Unfortunately for us though, we can never know which TempDataProvider was used for the previous controller, by default it is the sessionstateprovider
                // but since the tempdataprovider is not a global mvc thing, it is only a per-controller thing, we can only just assume it will be the sessionstateprovider
                var provider = new SessionStateTempDataProvider();
                //We create a custom controller context, the only thing that is referenced from this controller context in the sessionstateprovider is the HttpContext.Session
                // so we just need to ensure that is set
                var ctx = new ControllerContext(new HttpContextWrapper(Context), new RouteData(), new TempDataController());
                provider.LoadTempData(ctx);

                //This is only here for legacy if people arent' using master pages...
                //TODO: We need to test that this still works!! Or do we ??
                if (!UmbracoConfig.For.UmbracoSettings().Templates.UseAspNetMasterPages)
                {
                    var args = new RequestInitEventArgs()
                    {
                        Page    = _upage,
                        PageId  = _upage.PageID,
                        Context = Context
                    };
                    FireBeforeRequestInit(args);

                    //if we are cancelling then return and don't proceed
                    if (args.Cancel)
                    {
                        return;
                    }

                    var pageHolder = new umbraco.layoutControls.umbracoPageHolder
                    {
                        ID = "umbPageHolder"
                    };
                    Page.Controls.Add(pageHolder);
                    _upage.RenderPage(_upage.Template);
                    var umbPageHolder = (layoutControls.umbracoPageHolder)Page.FindControl("umbPageHolder");
                    umbPageHolder.Populate(_upage);

                    //fire the init finished event
                    FireAfterRequestInit(args);
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Renders a template.
        /// </summary>
        /// <param name="PageId">The page id.</param>
        /// <param name="TemplateId">The template id.</param>
        /// <returns>The rendered template as a string</returns>
        public static string RenderTemplate(int PageId, int TemplateId)
        {
            if (UmbracoConfig.For.UmbracoSettings().Templates.UseAspNetMasterPages)
            {
                using (var sw = new StringWriter())
                {
                    try
                    {
                        var altTemplate = TemplateId == -1 ? null : (int?)TemplateId;
                        var templateRenderer = new TemplateRenderer(Umbraco.Web.UmbracoContext.Current, PageId, altTemplate);
                        templateRenderer.Render(sw);
                    }
                    catch (Exception ee)
                    {
                        sw.Write("<!-- Error rendering template with id {0}: '{1}' -->", PageId, ee);
                    }

                    return sw.ToString();
                }
            }
            else
            {

                var p = new page(((IHasXmlNode)GetXmlNodeById(PageId.ToString()).Current).GetNode());
                p.RenderPage(TemplateId);
                var c = p.PageContentControl;
                
				using (var sw = new StringWriter())
                using(var hw = new HtmlTextWriter(sw))
                {
					c.RenderControl(hw);
					return sw.ToString();    
                }
                
            }
        }
        private void initUmbracoPage()
        {
            RequestInitEventArgs e = new RequestInitEventArgs();

            e.Page = m_umbPage;

            if (m_umbPage != null)
            {
                e.PageId = m_umbPage.PageID;
            }

            e.Context = System.Web.HttpContext.Current;

            FireBeforeRequestInit(e);
            if (!e.Cancel)
            {
                if (!UmbracoSettings.EnableSplashWhileLoading || !content.Instance.isInitializing)
                {
                    if (m_umbPage != null)
                    {
                        // Add page elements to global items
                        try
                        {
                            System.Web.HttpContext.Current.Items.Add("pageElements", m_umbPage.Elements);
                        }
                        catch (ArgumentException)
                        {
                            System.Web.HttpContext.Current.Items.Remove("pageElements");
                            System.Web.HttpContext.Current.Items.Add("pageElements", m_umbPage.Elements);
                        }

                        string tempCulture = m_umbPage.GetCulture();
                        if (tempCulture != "")
                        {
                            System.Web.HttpContext.Current.Trace.Write("default.aspx", "Culture changed to " + tempCulture);
                            System.Threading.Thread.CurrentThread.CurrentCulture =
                                System.Globalization.CultureInfo.CreateSpecificCulture(tempCulture);
                            System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
                        }

                        if (!UmbracoSettings.UseAspNetMasterPages)
                        {
                            layoutControls.umbracoPageHolder pageHolder = new umbraco.layoutControls.umbracoPageHolder();
                            pageHolder.ID = "umbPageHolder";
                            Page.Controls.Add(pageHolder);
                            m_umbPage.RenderPage(m_umbPage.Template);
                            layoutControls.umbracoPageHolder umbPageHolder =
                                (layoutControls.umbracoPageHolder)Page.FindControl("umbPageHolder");
                            umbPageHolder.Populate(m_umbPage);
                        }
                    }
                    else
                    {
                        // If there's no published content, show friendly error
                        if (umbraco.content.Instance.XmlContent.SelectSingleNode("/root/*") == null)
                        {
                            Response.Redirect(IO.SystemDirectories.Config + "/splashes/noNodes.aspx");
                        }
                        else
                        {
                            GenerateNotFoundContent();
                        }
                    }
                }
                else
                {
                    Response.Redirect(IO.SystemDirectories.Config + "/splashes/booting.aspx?orgUrl=" + Request.Url);
                }

                FireAfterRequestInit(e);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Renders a template.
        /// </summary>
        /// <param name="PageId">The page id.</param>
        /// <param name="TemplateId">The template id.</param>
        /// <returns>The rendered template as a string</returns>
        public static string RenderTemplate(int PageId, int TemplateId)
        {
            if (UmbracoSettings.UseAspNetMasterPages)
            {
                if (!umbraco.presentation.UmbracoContext.Current.LiveEditingContext.Enabled)
                {
                    System.Collections.Generic.Dictionary<object, object> items = getCurrentContextItems();
                    HttpContext.Current.Items["altTemplate"] = null;

                    HttpContext Context = HttpContext.Current;
                    StringBuilder queryString = new StringBuilder();
                    const string ONE_QS_PARAM = "&{0}={1}";
                    foreach (object key in Context.Request.QueryString.Keys)
                    {
                        if (!key.ToString().ToLower().Equals("umbpageid") && !key.ToString().ToLower().Equals("alttemplate"))
                            queryString.Append(string.Format(ONE_QS_PARAM, key, Context.Request.QueryString[key.ToString()]));
                    }
                    StringWriter sw = new StringWriter();

                    try
                    {
                        Context.Server.Execute(
                            string.Format("~/default.aspx?umbPageID={0}&alttemplate={1}{2}",
                            PageId, new template(TemplateId).TemplateAlias, queryString), sw);

                    }
                    catch (Exception ee)
                    {
                        sw.Write("<!-- Error generating macroContent: '{0}' -->", ee);
                    }

                    // update the local page items again
                    updateLocalContextItems(items, Context);

                    return sw.ToString();

                }
                else
                {
                    return "RenderTemplate not supported in Canvas";
                }
            }
            else
            {
                page p = new page(((IHasXmlNode)GetXmlNodeById(PageId.ToString()).Current).GetNode());
                p.RenderPage(TemplateId);
                Control c = p.PageContentControl;
                StringWriter sw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(sw);
                c.RenderControl(hw);

                return sw.ToString();
            }
        }