diff --git a/src/Umbraco.Core/Models/Content.cs b/src/Umbraco.Core/Models/Content.cs
index ec73e1ff5e..cef06ec4f7 100644
--- a/src/Umbraco.Core/Models/Content.cs
+++ b/src/Umbraco.Core/Models/Content.cs
@@ -274,6 +274,9 @@ namespace Umbraco.Core.Models
///
public bool HasPublishedVersion { get { return PublishedVersionGuid != default(Guid); } }
+ [IgnoreDataMember]
+ internal DateTime PublishedDate { get; set; }
+
///
/// Changes the Trashed state of the content object
///
diff --git a/src/Umbraco.Core/Models/Rdbms/DocumentPublishedReadOnlyDto.cs b/src/Umbraco.Core/Models/Rdbms/DocumentPublishedReadOnlyDto.cs
index 4a7e359d91..7c6507f499 100644
--- a/src/Umbraco.Core/Models/Rdbms/DocumentPublishedReadOnlyDto.cs
+++ b/src/Umbraco.Core/Models/Rdbms/DocumentPublishedReadOnlyDto.cs
@@ -19,5 +19,8 @@ namespace Umbraco.Core.Models.Rdbms
[Column("newest")]
public bool Newest { get; set; }
+
+ [Column("updateDate")]
+ public DateTime VersionDate { get; set; }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Persistence/Factories/ContentFactory.cs b/src/Umbraco.Core/Persistence/Factories/ContentFactory.cs
index 0532eab6b1..512f02e8b5 100644
--- a/src/Umbraco.Core/Persistence/Factories/ContentFactory.cs
+++ b/src/Umbraco.Core/Persistence/Factories/ContentFactory.cs
@@ -72,6 +72,9 @@ namespace Umbraco.Core.Persistence.Factories
content.PublishedVersionGuid = publishedDto == null
? (dto.DocumentPublishedReadOnlyDto == null ? default(Guid) : dto.DocumentPublishedReadOnlyDto.VersionId)
: publishedDto.VersionId;
+ content.PublishedDate = publishedDto == null
+ ? (dto.DocumentPublishedReadOnlyDto == null ? default(DateTime) : dto.DocumentPublishedReadOnlyDto.VersionDate)
+ : publishedDto.VersionDate;
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
index f95c295243..b5d3fb6986 100644
--- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
@@ -513,9 +513,10 @@ namespace Umbraco.Core.Persistence.Repositories
dto.DocumentPublishedReadOnlyDto = new DocumentPublishedReadOnlyDto
{
VersionId = dto.VersionId,
+ VersionDate = dto.UpdateDate,
Newest = true,
NodeId = dto.NodeId,
- Published = true
+ Published = true
};
((Content)entity).PublishedVersionGuid = dto.VersionId;
}
@@ -687,6 +688,7 @@ namespace Umbraco.Core.Persistence.Repositories
dto.DocumentPublishedReadOnlyDto = new DocumentPublishedReadOnlyDto
{
VersionId = dto.VersionId,
+ VersionDate = dto.UpdateDate,
Newest = true,
NodeId = dto.NodeId,
Published = true
@@ -698,6 +700,7 @@ namespace Umbraco.Core.Persistence.Repositories
dto.DocumentPublishedReadOnlyDto = new DocumentPublishedReadOnlyDto
{
VersionId = default(Guid),
+ VersionDate = default(DateTime),
Newest = false,
NodeId = dto.NodeId,
Published = false
@@ -974,7 +977,7 @@ order by umbracoNode.{2}, umbracoNode.parentID, umbracoNode.sortOrder",
}
//order by update date DESC, if there is corrupted published flags we only want the latest!
- var publishedSql = new Sql(@"SELECT cmsDocument.nodeId, cmsDocument.published, cmsDocument.versionId, cmsDocument.newest
+ var publishedSql = new Sql(@"SELECT cmsDocument.nodeId, cmsDocument.published, cmsDocument.versionId, cmsDocument.updateDate, cmsDocument.newest
FROM cmsDocument INNER JOIN cmsContentVersion ON cmsContentVersion.VersionId = cmsDocument.versionId
WHERE cmsDocument.published = 1 AND cmsDocument.nodeId IN
(" + parsedOriginalSql + @")
diff --git a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
index e179159e7c..b95fefe6f9 100644
--- a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
@@ -36,7 +36,7 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(display => display.IsContainer, expression => expression.MapFrom(content => content.ContentType.IsContainer))
.ForMember(display => display.IsChildOfListView, expression => expression.Ignore())
.ForMember(display => display.Trashed, expression => expression.MapFrom(content => content.Trashed))
- .ForMember(display => display.PublishDate, expression => expression.MapFrom(content => GetPublishedDate(content, applicationContext)))
+ .ForMember(display => display.PublishDate, expression => expression.MapFrom(content => ((Content)content).PublishedDate))
.ForMember(display => display.TemplateAlias, expression => expression.MapFrom(content => content.Template.Alias))
.ForMember(display => display.HasPublishedVersion, expression => expression.MapFrom(content => content.HasPublishedVersion))
.ForMember(display => display.Urls,
@@ -222,26 +222,6 @@ namespace Umbraco.Web.Models.Mapping
});
}
- ///
- /// Gets the published date value for the IContent object
- ///
- ///
- ///
- ///
- private static DateTime? GetPublishedDate(IContent content, ApplicationContext applicationContext)
- {
- if (content.Published)
- {
- return content.UpdateDate;
- }
- if (content.HasPublishedVersion)
- {
- var published = applicationContext.Services.ContentService.GetPublishedVersion(content.Id);
- return published.UpdateDate;
- }
- return null;
- }
-
///
/// Creates the list of action buttons allowed for this user - Publish, Send to publish, save, unpublish returned as the button's 'letter'
///