diff --git a/src/Umbraco.Core/Logging/LogHelper.cs b/src/Umbraco.Core/Logging/LogHelper.cs index 4d91ea88f2..964a9f3b9c 100644 --- a/src/Umbraco.Core/Logging/LogHelper.cs +++ b/src/Umbraco.Core/Logging/LogHelper.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; +using System.Web; using log4net; namespace Umbraco.Core.Logging @@ -190,7 +191,7 @@ namespace Umbraco.Core.Logging } /// - /// Debugs a message, only generating the message if tracing is actually enabled. Use this method to avoid calling any long-running methods such as "ToDebugString" if logging is disabled. + /// Debugs a message, only generating the message if debug is actually enabled. Use this method to avoid calling any long-running methods such as "ToDebugString" if logging is disabled. /// /// /// The generate message format. @@ -200,6 +201,22 @@ namespace Umbraco.Core.Logging { Debug(typeof(T), generateMessageFormat, formatItems); } + + /// + /// Debugs a message and also writes to the TraceContext specified, useful for when you would like the debug + /// output also displayed in the Http trace output. + /// + /// + /// + /// + /// + public static void Debug(string generateMessageFormat, TraceContext trace, params Func[] formatItems) + { + if (trace == null) throw new ArgumentNullException("trace"); + trace.Write(string.Format(generateMessageFormat, formatItems.Select(x => x()))); + Debug(typeof(T), generateMessageFormat, formatItems); + } + #endregion } diff --git a/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs b/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs index b2760d4f94..8dc6b37091 100644 --- a/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs +++ b/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs @@ -59,6 +59,18 @@ namespace Umbraco.Tests.DynamicDocument } + [Test] + public void HasValue() + { + var asDynamic = GetDynamicNode(1173); + + var hasValue = asDynamic.HasValue("umbracoUrlAlias"); + var noValue = asDynamic.HasValue("blahblahblah"); + + Assert.IsTrue(hasValue); + Assert.IsFalse(noValue); + } + [Test] public void Take() { diff --git a/src/Umbraco.Web/umbraco.presentation/default.aspx b/src/Umbraco.Web/umbraco.presentation/default.aspx deleted file mode 100644 index 458dc34d73..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/default.aspx +++ /dev/null @@ -1,2 +0,0 @@ -<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="True" Inherits="umbraco.UmbracoDefault" trace="true" validateRequest="false" %> - diff --git a/src/Umbraco.Web/umbraco.presentation/default.aspx.cs b/src/Umbraco.Web/umbraco.presentation/default.aspx.cs index f5d8698001..4b0c63f25a 100644 --- a/src/Umbraco.Web/umbraco.presentation/default.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/default.aspx.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using System.Web; using System.Web.Routing; @@ -6,6 +6,7 @@ using System.Web.UI; using System.IO; using System.Xml; using System.Text.RegularExpressions; +using Umbraco.Core.Logging; using Umbraco.Web; using Umbraco.Web.Routing; using Umbraco.Core.Configuration; @@ -16,17 +17,18 @@ using umbraco.cms.businesslogic; namespace umbraco { /// - /// Summary description for WebForm1. + /// The codebehind class for the main default.aspx page that does the webforms rendering in Umbraco /// - /// - public partial class UmbracoDefault : Page + /// + /// We would move this to the UI project but there is a public API property and some protected properties which people may be using so + /// we cannot move it. + /// + public class UmbracoDefault : Page { private page _upage = null; private DocumentRequest _docRequest = null; bool _validateRequest = true; - const string TraceCategory = "UmbracoDefault"; - /// /// To turn off request validation set this to false before the PageLoad event. This equivalent to the validateRequest page directive /// and has nothing to do with "normal" validation controls. Default value is true. @@ -40,8 +42,7 @@ namespace umbraco // fixme - switch over to OnPreInit override void Page_PreInit(Object sender, EventArgs e) { - Trace.Write(TraceCategory, "Begin PreInit"); - + //TODO: This still a bunch of routing stuff being handled here, this all needs to be handled in the HttpModule instead // get the document request @@ -111,12 +112,10 @@ namespace umbraco } // reset the friendly path so it's used by forms, etc. - Trace.Write(TraceCategory, string.Format("Reset url to \"{0}\"", UmbracoContext.Current.RequestUrl)); + LogHelper.Debug(string.Format("Reset url to \"{0}\"", UmbracoContext.Current.RequestUrl)); Context.RewritePath(UmbracoContext.Current.RequestUrl.PathAndQuery); Context.Items.Add("pageElements", _upage.Elements); // legacy - fixme - - Trace.Write(TraceCategory, "End PreInit"); } void OnPreInitLegacy() @@ -153,7 +152,7 @@ namespace umbraco if (cultureAlias != null) { - UmbracoContext.Current.HttpContext.Trace.Write("default.aspx", "Culture changed to " + cultureAlias); + LogHelper.Debug("Culture changed to " + cultureAlias, Context.Trace); var culture = new System.Globalization.CultureInfo(cultureAlias); Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture = culture; } @@ -191,7 +190,7 @@ namespace umbraco // filter / add preview banner if (UmbracoContext.Current.InPreviewMode) { - Trace.Write("Runtime Engine", "Umbraco is running in preview mode."); + LogHelper.Debug("Umbraco is running in preview mode.", Context.Trace); if (Response.ContentType == "text/HTML") // ASP.NET default value { @@ -200,8 +199,8 @@ namespace umbraco { string htmlBadge = String.Format(UmbracoSettings.PreviewBadge, - umbraco.IO.IOHelper.ResolveUrl(umbraco.IO.SystemDirectories.Umbraco), - umbraco.IO.IOHelper.ResolveUrl(umbraco.IO.SystemDirectories.Umbraco_client), + IOHelper.ResolveUrl(SystemDirectories.Umbraco), + IOHelper.ResolveUrl(SystemDirectories.UmbracoClient), Server.UrlEncode(UmbracoContext.Current.HttpContext.Request.Path)); text = text.Substring(0, pos) + htmlBadge + text.Substring(pos, text.Length - pos); diff --git a/src/Umbraco.Web/umbraco.presentation/default.aspx.designer.cs b/src/Umbraco.Web/umbraco.presentation/default.aspx.designer.cs deleted file mode 100644 index 95c38cf310..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/default.aspx.designer.cs +++ /dev/null @@ -1,22 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.1434 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace umbraco { - - - /// - /// UmbracoDefault class. - /// - /// - /// Auto-generated class. - /// - public partial class UmbracoDefault { - } -}