diff --git a/LinqToUmbraco/src/umbraco.Linq/Core/DocTypeBase.cs b/LinqToUmbraco/src/umbraco.Linq/Core/DocTypeBase.cs index 9355347efb..46966db7b3 100644 --- a/LinqToUmbraco/src/umbraco.Linq/Core/DocTypeBase.cs +++ b/LinqToUmbraco/src/umbraco.Linq/Core/DocTypeBase.cs @@ -64,9 +64,13 @@ namespace umbraco.Linq.Core { var attr = ReflectionAssistance.GetumbracoInfoAttribute(p); - var data = xml.Elements("data").Single(x => (string)x.Attribute("alias") == attr.Alias); + var data = xml.Elements("data").Single(x => (string)x.Attribute("alias") == attr.Alias).Value; + if (p.PropertyType == typeof(int) && string.IsNullOrEmpty(data)) + { + data = "-1"; + } // TODO: Address how Convert.ChangeType works in globalisation - p.SetValue(this, Convert.ChangeType(data.Value, p.PropertyType), null); + p.SetValue(this, Convert.ChangeType(data, p.PropertyType), null); } } diff --git a/LinqToUmbraco/src/umbraco.Linq/Core/Node/NodeDataProvider.cs b/LinqToUmbraco/src/umbraco.Linq/Core/Node/NodeDataProvider.cs index de51c1d158..c711cac9d1 100644 --- a/LinqToUmbraco/src/umbraco.Linq/Core/Node/NodeDataProvider.cs +++ b/LinqToUmbraco/src/umbraco.Linq/Core/Node/NodeDataProvider.cs @@ -85,7 +85,7 @@ namespace umbraco.Linq.Core.Node /// Initializes a new instance of the class using umbraco settings as XML path /// public NodeDataProvider() - : this(System.Web.HttpContext.Current.Server.MapPath(umbraco.GlobalSettings.Path)) + : this(umbraco.presentation.UmbracoContext.Current.Server.MapPath(umbraco.presentation.UmbracoContext.Current.Server.ContentXmlPath)) { } diff --git a/LinqToUmbraco/src/umbraco.Linq/Core/umbraco.Linq.Core.csproj b/LinqToUmbraco/src/umbraco.Linq/Core/umbraco.Linq.Core.csproj index 396f346046..964d11c249 100644 --- a/LinqToUmbraco/src/umbraco.Linq/Core/umbraco.Linq.Core.csproj +++ b/LinqToUmbraco/src/umbraco.Linq/Core/umbraco.Linq.Core.csproj @@ -16,12 +16,13 @@ SAK SAK SAK + ..\..\..\..\..\umbraco\presentation\bin true full false - bin\Debug\ + ..\..\..\..\umbraco\presentation\bin\ DEBUG;TRACE prompt 4 @@ -55,6 +56,11 @@ 3.0 + + False + ..\..\..\..\foreign dlls\System.Web.Abstractions.dll + 3.5 + 3.5 @@ -91,13 +97,16 @@ {E469A9CE-1BEC-423F-AC44-713CD72457EA} umbraco.businesslogic + + {651E1350-91B6-44B7-BD60-7207006D7003} + umbraco.presentation + - --> \ No newline at end of file diff --git a/umbraco/presentation/UmbracoContext.cs b/umbraco/presentation/UmbracoContext.cs index aacd1991da..9e1e669888 100644 --- a/umbraco/presentation/UmbracoContext.cs +++ b/umbraco/presentation/UmbracoContext.cs @@ -3,14 +3,51 @@ using System.Web; using umbraco.presentation.LiveEditing; using umbraco.BasePages; using umbraco.cms.businesslogic.web; +using System.Xml.Linq; namespace umbraco.presentation { + public class UmbracoServerUtility : HttpServerUtilityWrapper + { + private HttpServerUtility m_Server; + + public UmbracoServerUtility(HttpServerUtility server) : base(server) + { + m_Server = server; + } + + public string UmbracoPath + { + get + { + return GlobalSettings.Path; + } + } + + public string ContentXmlPath + { + get + { + return GlobalSettings.ContentXML; + } + } + + public XDocument ContentXml + { + get + { + return XDocument.Load(this.ContentXmlPath); + } + } + } /// /// Class that encapsulates Umbraco information of a specific HTTP request. /// public class UmbracoContext { + private UmbracoServerUtility m_Server; + private UmbracoRequest m_Request; + private UmbracoResponse m_Response; private HttpContext m_HttpContext; /// @@ -104,7 +141,11 @@ namespace umbraco.presentation { get { - return new UmbracoResponse(this.m_HttpContext.Response); + if (m_Response == null) + { + m_Response = new UmbracoResponse(this.m_HttpContext.Response); + } + return m_Response; } } @@ -116,7 +157,11 @@ namespace umbraco.presentation { get { - return new UmbracoRequest(this.m_HttpContext.Request); + if (m_Request == null) + { + m_Request = new UmbracoRequest(this.m_HttpContext.Request); + } + return m_Request; } } @@ -128,5 +173,17 @@ namespace umbraco.presentation { return this.Request.Url.GetLeftPart(UriPartial.Authority); } + + public virtual UmbracoServerUtility Server + { + get + { + if (m_Server == null) + { + m_Server = new UmbracoServerUtility(this.m_HttpContext.Server); + } + return m_Server; + } + } } } \ No newline at end of file diff --git a/umbraco/presentation/umbraco.presentation.csproj b/umbraco/presentation/umbraco.presentation.csproj index 7f435bda24..535017640d 100644 --- a/umbraco/presentation/umbraco.presentation.csproj +++ b/umbraco/presentation/umbraco.presentation.csproj @@ -1,6 +1,6 @@  - 9.0.21022 + 9.0.30729 2.0 {651E1350-91B6-44B7-BD60-7207006D7003} {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} @@ -354,8 +354,8 @@ editContent.aspx - ASPXCodeBehind preview.aspx + ASPXCodeBehind preview.aspx @@ -667,8 +667,8 @@ Boost.aspx - ASPXCodeBehind BrowseRepository.aspx + ASPXCodeBehind BrowseRepository.aspx @@ -689,8 +689,8 @@ editPackage.aspx - ASPXCodeBehind installedPackage.aspx + ASPXCodeBehind installedPackage.aspx @@ -710,8 +710,8 @@ SubmitPackage.aspx - ASPXCodeBehind editPython.aspx + ASPXCodeBehind editPython.aspx @@ -798,8 +798,8 @@ editMacro.aspx - ASPXCodeBehind emptyTrashcan.aspx + ASPXCodeBehind emptyTrashcan.aspx @@ -1199,8 +1199,8 @@ publishStatus.aspx - ASPXCodeBehind reindex.aspx + ASPXCodeBehind reindex.aspx