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); } }
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); } } }
/// <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); } }
/// <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(); } }