diff --git a/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs b/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs index 0e56342b8..2fef8bf75 100644 --- a/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs +++ b/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs @@ -138,6 +138,7 @@ namespace Orchard.Core.Tests.Common.Providers { Filters.Add(new ActivatingFilter("test-item")); Filters.Add(new ActivatingFilter>("test-item")); Filters.Add(new ActivatingFilter("User")); + Filters.Add(new ActivatingFilter("AlternateUser")); } } @@ -146,6 +147,11 @@ namespace Orchard.Core.Tests.Common.Providers { public string UserName { get { return "x"; } } public string Email { get { return "y"; } } } + class AlternateTestUser : ContentPart, IUser { + public new int Id { get { return 6655322; } } + public string UserName { get { return "y"; } } + public string Email { get { return "x"; } } + } [Test] public void OwnerShouldBeNullAndZeroByDefault() { @@ -359,14 +365,22 @@ namespace Orchard.Core.Tests.Common.Providers { public void EditingShouldSetModifiedUtc() { var contentManager = _container.Resolve(); + var user = contentManager.New("User"); + _authn.Setup(x => x.GetAuthenticatedUser()).Returns(user); + var createUtc = _clock.UtcNow; var item = contentManager.Create("test-item", VersionOptions.Draft, init => { }); contentManager.Publish(item.ContentItem); Assert.That(item.CreatedUtc, Is.EqualTo(createUtc)); Assert.That(item.ModifiedUtc, Is.EqualTo(createUtc)); + Assert.That(item.VersionModifiedBy, Is.EqualTo(user.UserName)); Assert.That(item.PublishedUtc, Is.EqualTo(createUtc)); + // Switch user + var secondUser = contentManager.New("AlternateUser"); + _authn.Setup(x => x.GetAuthenticatedUser()).Returns(secondUser); + _clock.Advance(TimeSpan.FromMinutes(1)); var editUtc = _clock.UtcNow; @@ -377,6 +391,7 @@ namespace Orchard.Core.Tests.Common.Providers { Assert.That(item.ModifiedUtc, Is.EqualTo(editUtc)); Assert.That(item.PublishedUtc, Is.EqualTo(createUtc)); Assert.That(updater.ModelErrors.Count, Is.EqualTo(0)); + Assert.That(item.VersionModifiedBy, Is.EqualTo(secondUser.UserName)); } [Test] diff --git a/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj b/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj index 27f2279bf..70dd09945 100644 --- a/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj +++ b/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj @@ -127,12 +127,12 @@ {9916839C-39FC-4CEB-A5AF-89CA7E87119F} Orchard.Core - false + True {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} Orchard.Framework - false + True diff --git a/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs b/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs index cfbc5deba..87470bcc1 100644 --- a/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs +++ b/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs @@ -176,7 +176,7 @@ namespace Orchard.Core.Common.Handlers { } private string GetUserName() { var user = _authenticationService.GetAuthenticatedUser(); - return (user == null) ? string.Empty : user.UserName; + return user == null ? string.Empty : user.UserName; } } } diff --git a/src/Orchard.Web/Core/Common/Migrations.cs b/src/Orchard.Web/Core/Common/Migrations.cs index c386aeded..6b106eef2 100644 --- a/src/Orchard.Web/Core/Common/Migrations.cs +++ b/src/Orchard.Web/Core/Common/Migrations.cs @@ -38,6 +38,7 @@ namespace Orchard.Core.Common { .Column("CreatedUtc") .Column("PublishedUtc") .Column("ModifiedUtc") + .Column("ModifiedBy") ); SchemaBuilder.CreateTable("IdentityPartRecord", @@ -58,7 +59,7 @@ namespace Orchard.Core.Common { .Attachable() .WithDescription("Automatically generates a unique identity for the content item, which is required in import/export scenarios where one content item references another.")); - return 4; + return 5; } public int UpdateFrom1() { diff --git a/src/Orchard.Web/Core/Common/Views/CommonMetadataLastModified.cshtml b/src/Orchard.Web/Core/Common/Views/CommonMetadataLastModified.cshtml new file mode 100644 index 000000000..1de01e391 --- /dev/null +++ b/src/Orchard.Web/Core/Common/Views/CommonMetadataLastModified.cshtml @@ -0,0 +1,13 @@ +@* + Model: + ContentPart +*@ + +@using Orchard.ContentManagement +@using Orchard.Core.Common.Models; +@{ + CommonPart commonPart = Model.ContentPart; + string lastModifiedBy = commonPart.As() == null ? null : commonPart.As().VersionModifiedBy; +} + +@T("By {0}", lastModifiedBy ?? T("unknown").ToString()) \ No newline at end of file diff --git a/src/Orchard.Web/Core/Common/Views/CommonMetadataOwner.cshtml b/src/Orchard.Web/Core/Common/Views/CommonMetadataOwner.cshtml deleted file mode 100644 index ba9029172..000000000 --- a/src/Orchard.Web/Core/Common/Views/CommonMetadataOwner.cshtml +++ /dev/null @@ -1,14 +0,0 @@ -@* - Model: - ContentPart -*@ - -@using Orchard.ContentManagement; -@using Orchard.Core.Common.Models; -@using Orchard.Security; -@{ - CommonPart commonPart = Model.ContentPart; - // owner isn't really who last modified this, is it? - IUser owner = commonPart.As() == null ? null : commonPart.As().Owner; -} -@T("By {0}", owner == null ? T("unknown").ToString() : Convert.ToString(Html.ItemDisplayText(owner))) \ No newline at end of file diff --git a/src/Orchard.Web/Core/Common/Views/Parts.Common.Metadata.SummaryAdmin.cshtml b/src/Orchard.Web/Core/Common/Views/Parts.Common.Metadata.SummaryAdmin.cshtml index 74a76a27d..8d6b38750 100644 --- a/src/Orchard.Web/Core/Common/Views/Parts.Common.Metadata.SummaryAdmin.cshtml +++ b/src/Orchard.Web/Core/Common/Views/Parts.Common.Metadata.SummaryAdmin.cshtml @@ -8,5 +8,5 @@
  • @if (modifiedUtc.HasValue) { @T("Last modified: {0}", Display.DateTimeRelative(DateTimeUtc: modifiedUtc.Value))} | 
  • -
  • @Display.CommonMetadataOwner(ContentPart: Model.ContentPart)
  • +
  • @Display.CommonMetadataLastModified(ContentPart: Model.ContentPart)
  • \ No newline at end of file diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj index 3f893b50a..365e9c74e 100644 --- a/src/Orchard.Web/Core/Orchard.Core.csproj +++ b/src/Orchard.Web/Core/Orchard.Core.csproj @@ -292,7 +292,7 @@ - + diff --git a/src/Orchard/ContentManagement/Aspects/ICommonPart.cs b/src/Orchard/ContentManagement/Aspects/ICommonPart.cs index c1776edb3..2d14235ce 100644 --- a/src/Orchard/ContentManagement/Aspects/ICommonPart.cs +++ b/src/Orchard/ContentManagement/Aspects/ICommonPart.cs @@ -13,5 +13,6 @@ namespace Orchard.ContentManagement.Aspects { DateTime? VersionCreatedUtc { get; set; } DateTime? VersionPublishedUtc { get; set; } DateTime? VersionModifiedUtc { get; set; } + string VersionModifiedBy { get; set; } } }