diff --git a/src/Orchard.Web/Core/Common/Models/BodyPart.cs b/src/Orchard.Web/Core/Common/Models/BodyPart.cs index 5a3501fbb..f644880cc 100644 --- a/src/Orchard.Web/Core/Common/Models/BodyPart.cs +++ b/src/Orchard.Web/Core/Common/Models/BodyPart.cs @@ -1,10 +1,14 @@ using Orchard.ContentManagement; +using Orchard.ContentManagement.FieldStorage.InfosetStorage; namespace Orchard.Core.Common.Models { public class BodyPart : ContentPart { public string Text { - get { return Record.Text; } - set { Record.Text = value; } + get { return this.As().Get("Text"); } + set { + this.As().Set("Text", value); + Record.Text = value; + } } } } diff --git a/src/Orchard.Web/Core/Common/Models/CommonPart.cs b/src/Orchard.Web/Core/Common/Models/CommonPart.cs index bccf97127..9256e6e1f 100644 --- a/src/Orchard.Web/Core/Common/Models/CommonPart.cs +++ b/src/Orchard.Web/Core/Common/Models/CommonPart.cs @@ -1,4 +1,6 @@ using System; +using System.Xml; +using Orchard.ContentManagement.FieldStorage.InfosetStorage; using Orchard.Core.Common.Utilities; using Orchard.ContentManagement; using Orchard.ContentManagement.Aspects; @@ -22,20 +24,41 @@ namespace Orchard.Core.Common.Models { get { return _container.Value; } set { _container.Value = value; } } - + public DateTime? CreatedUtc { - get { return Record.CreatedUtc; } - set { Record.CreatedUtc = value; } + get { + var dateTime = this.As().Get("CreatedUtc"); + return dateTime == "" ? (DateTime?)null : XmlConvert.ToDateTime(dateTime, XmlDateTimeSerializationMode.Utc); + } + set { + string dateTime = value.HasValue ? XmlConvert.ToString(value.Value, XmlDateTimeSerializationMode.Utc) : ""; + this.As().Set("CreatedUtc", dateTime); + Record.CreatedUtc = value; + } } public DateTime? PublishedUtc { - get { return Record.PublishedUtc; } - set { Record.PublishedUtc = value; } + get { + var dateTime = this.As().Get("PublishedUtc"); + return dateTime == "" ? (DateTime?)null : XmlConvert.ToDateTime(dateTime, XmlDateTimeSerializationMode.Utc); + } + set { + string dateTime = value.HasValue ? XmlConvert.ToString(value.Value, XmlDateTimeSerializationMode.Utc) : ""; + this.As().Set("PublishedUtc", dateTime); + Record.PublishedUtc = value; + } } public DateTime? ModifiedUtc { - get { return Record.ModifiedUtc; } - set { Record.ModifiedUtc = value; } + get { + var dateTime = this.As().Get("ModifiedUtc"); + return dateTime == "" ? (DateTime?)null : XmlConvert.ToDateTime(dateTime, XmlDateTimeSerializationMode.Utc); + } + set { + string dateTime = value.HasValue ? XmlConvert.ToString(value.Value, XmlDateTimeSerializationMode.Utc) : ""; + this.As().Set("ModifiedUtc", dateTime); + Record.ModifiedUtc = value; + } } CommonPartVersionRecord PartVersionRecord { @@ -47,9 +70,12 @@ namespace Orchard.Core.Common.Models { public DateTime? VersionCreatedUtc { get { - return PartVersionRecord == null ? CreatedUtc : PartVersionRecord.CreatedUtc; + var dateTime = this.As().Get>("CreatedUtc"); + return dateTime == "" ? (DateTime?)null : XmlConvert.ToDateTime(dateTime, XmlDateTimeSerializationMode.Utc); } set { + string dateTime = value.HasValue ? XmlConvert.ToString(value.Value, XmlDateTimeSerializationMode.Utc) : ""; + this.As().Set>("CreatedUtc", dateTime); if (PartVersionRecord != null) PartVersionRecord.CreatedUtc = value; } @@ -57,9 +83,12 @@ namespace Orchard.Core.Common.Models { public DateTime? VersionPublishedUtc { get { - return PartVersionRecord == null ? PublishedUtc : PartVersionRecord.PublishedUtc; + var dateTime = this.As().Get>("PublishedUtc"); + return dateTime == "" ? (DateTime?)null : XmlConvert.ToDateTime(dateTime, XmlDateTimeSerializationMode.Utc); } set { + string dateTime = value.HasValue ? XmlConvert.ToString(value.Value, XmlDateTimeSerializationMode.Utc) : ""; + this.As().Set>("PublishedUtc", dateTime); if (PartVersionRecord != null) PartVersionRecord.PublishedUtc = value; } @@ -67,12 +96,16 @@ namespace Orchard.Core.Common.Models { public DateTime? VersionModifiedUtc { get { - return PartVersionRecord == null ? ModifiedUtc : PartVersionRecord.ModifiedUtc; + var dateTime = this.As().Get>("ModifiedUtc"); + return dateTime == "" ? (DateTime?)null : XmlConvert.ToDateTime(dateTime, XmlDateTimeSerializationMode.Utc); } set { + string dateTime = value.HasValue ? XmlConvert.ToString(value.Value, XmlDateTimeSerializationMode.Utc) : ""; + this.As().Set>("ModifiedUtc", dateTime); if (PartVersionRecord != null) PartVersionRecord.ModifiedUtc = value; } } + } } diff --git a/src/Orchard.Web/Core/Common/Models/IdentityPart.cs b/src/Orchard.Web/Core/Common/Models/IdentityPart.cs index 2c34ab5e6..58c44d626 100644 --- a/src/Orchard.Web/Core/Common/Models/IdentityPart.cs +++ b/src/Orchard.Web/Core/Common/Models/IdentityPart.cs @@ -1,10 +1,14 @@ using Orchard.ContentManagement; +using Orchard.ContentManagement.FieldStorage.InfosetStorage; namespace Orchard.Core.Common.Models { public class IdentityPart : ContentPart { public string Identifier { - get { return Record.Identifier; } - set { Record.Identifier = value; } + get { return this.As().Get("Identifier"); } + set { + this.As().Set("Identifier", value); + Record.Identifier = value; + } } } } diff --git a/src/Orchard.Web/Core/Title/Models/TitlePart.cs b/src/Orchard.Web/Core/Title/Models/TitlePart.cs index 2e06dffeb..cd820dc01 100644 --- a/src/Orchard.Web/Core/Title/Models/TitlePart.cs +++ b/src/Orchard.Web/Core/Title/Models/TitlePart.cs @@ -1,13 +1,17 @@ using System.ComponentModel.DataAnnotations; using Orchard.ContentManagement; using Orchard.ContentManagement.Aspects; +using Orchard.ContentManagement.FieldStorage.InfosetStorage; namespace Orchard.Core.Title.Models { public class TitlePart : ContentPart, ITitleAspect { [Required] public string Title { - get { return Record.Title; } - set { Record.Title = value; } + get { return this.As().Get("Title"); } + set { + this.As().Set("Title", value); + Record.Title = value; + } } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Models/AutoroutePart.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/Models/AutoroutePart.cs index 6bbd710f4..4c2610e6e 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Models/AutoroutePart.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Models/AutoroutePart.cs @@ -1,22 +1,32 @@ using Orchard.ContentManagement; using Orchard.ContentManagement.Aspects; +using Orchard.ContentManagement.FieldStorage.InfosetStorage; namespace Orchard.Autoroute.Models { public class AutoroutePart : ContentPart, IAliasAspect { public string CustomPattern { - get { return Record.CustomPattern; } - set { Record.CustomPattern = value; } + get { return this.As().Get("CustomPattern"); } + set { + this.As().Set("CustomPattern", value); + Record.CustomPattern = value; + } } public bool UseCustomPattern { - get { return Record.UseCustomPattern; } - set { Record.UseCustomPattern = value; } + get { return bool.Parse(this.As().Get("UseCustomPattern")); } + set { + this.As().Set("UseCustomPattern", value.ToString()); + Record.UseCustomPattern = value; + } } public string DisplayAlias { - get { return Record.DisplayAlias; } - set { Record.DisplayAlias = value; } + get { return this.As().Get("DisplayAlias"); } + set { + this.As().Set("DisplayAlias", value); + Record.DisplayAlias = value; + } } public string Path { diff --git a/src/Orchard/ContentManagement/ContentPart.cs b/src/Orchard/ContentManagement/ContentPart.cs index b25e763cc..e2ddebd33 100644 --- a/src/Orchard/ContentManagement/ContentPart.cs +++ b/src/Orchard/ContentManagement/ContentPart.cs @@ -76,7 +76,6 @@ namespace Orchard.ContentManagement { return true; } - } public class ContentPart : ContentPart { diff --git a/src/Orchard/ContentManagement/FieldStorage/InfosetStorage/InfosetPart.cs b/src/Orchard/ContentManagement/FieldStorage/InfosetStorage/InfosetPart.cs index f5431eb49..01be69ba3 100644 --- a/src/Orchard/ContentManagement/FieldStorage/InfosetStorage/InfosetPart.cs +++ b/src/Orchard/ContentManagement/FieldStorage/InfosetStorage/InfosetPart.cs @@ -25,18 +25,18 @@ namespace Orchard.ContentManagement.FieldStorage.InfosetStorage { } public string Get(string partName, string fieldName, string valueName) { - var partElement = Infoset.Element.Element(partName); + var partElement = Infoset.Element.Element(XmlConvert.EncodeName(partName)); if (partElement == null) { return null; } - var fieldElement = partElement.Element(fieldName); + var fieldElement = partElement.Element(XmlConvert.EncodeName(fieldName)); if (fieldElement == null) { return null; } if (string.IsNullOrEmpty(valueName)) { return fieldElement.Value; } - var valueAttribute = fieldElement.Attribute(XmlConvert.EncodeLocalName(valueName)); + var valueAttribute = fieldElement.Attribute(XmlConvert.EncodeName(valueName)); if (valueAttribute == null) { return null; } @@ -56,21 +56,21 @@ namespace Orchard.ContentManagement.FieldStorage.InfosetStorage { } public void Set(string partName, string fieldName, string valueName, string value) { - var partElement = Infoset.Element.Element(partName); + var partElement = Infoset.Element.Element(XmlConvert.EncodeName(partName)); if (partElement == null) { - partElement = new XElement(partName); + partElement = new XElement(XmlConvert.EncodeName(partName)); Infoset.Element.Add(partElement); } - var fieldElement = partElement.Element(fieldName); + var fieldElement = partElement.Element(XmlConvert.EncodeName(fieldName)); if (fieldElement == null) { - fieldElement = new XElement(fieldName); + fieldElement = new XElement(XmlConvert.EncodeName(fieldName)); partElement.Add(fieldElement); } if (string.IsNullOrEmpty(valueName)) { fieldElement.Value = value ?? ""; } else { - fieldElement.SetAttributeValue(XmlConvert.EncodeLocalName(valueName), value ?? ""); + fieldElement.SetAttributeValue(XmlConvert.EncodeName(valueName), value); } } }