diff --git a/src/Orchard.Web/Core/Common/Models/CommonAspect.cs b/src/Orchard.Web/Core/Common/Models/CommonAspect.cs index 0fa96e394..da5b3b79c 100644 --- a/src/Orchard.Web/Core/Common/Models/CommonAspect.cs +++ b/src/Orchard.Web/Core/Common/Models/CommonAspect.cs @@ -2,36 +2,41 @@ using Orchard.Core.Common.Records; using Orchard.Core.Common.Utilities; using Orchard.Models; +using Orchard.Models.Aspects; using Orchard.Security; namespace Orchard.Core.Common.Models { - public class CommonAspect : ContentPart { + public class CommonAspect : ContentPart, ICommonAspect { private readonly LazyField _owner = new LazyField(); private readonly LazyField _container = new LazyField(); - public IUser Owner { + public LazyField OwnerField { + get { return _owner; } + } + + public LazyField ContainerField { + get { return _container; } + } + + + DateTime? ICommonAspect.CreatedUtc { + get { return Record.CreatedUtc;} + set { Record.CreatedUtc = value;} + } + + DateTime? ICommonAspect.ModifiedUtc { + get { return Record.ModifiedUtc;} + set { Record.ModifiedUtc = value;} + } + + IUser ICommonAspect.Owner { get { return _owner.Value; } - set {_owner.Value = value;} + set { _owner.Value = value; } } - public IContent Container { + IContent ICommonAspect.Container { get { return _container.Value; } - set {_container.Value = value;} - } - - internal void OnGetOwner(Func loader) { - _owner.Loader(loader); - } - internal void OnSetOwner(Func setter) { - _owner.Setter(setter); - } - - - internal void OnGetContainer(Func loader) { - _container.Loader(loader); - } - internal void OnSetContainer(Func setter) { - _container.Setter(setter); + set { _container.Value = value; } } } } diff --git a/src/Orchard.Web/Core/Common/Providers/CommonAspectProvider.cs b/src/Orchard.Web/Core/Common/Providers/CommonAspectProvider.cs index 6b201ceac..31e9dda0e 100644 --- a/src/Orchard.Web/Core/Common/Providers/CommonAspectProvider.cs +++ b/src/Orchard.Web/Core/Common/Providers/CommonAspectProvider.cs @@ -2,6 +2,7 @@ using Orchard.Core.Common.Models; using Orchard.Core.Common.Records; using Orchard.Data; using Orchard.Models; +using Orchard.Models.Aspects; using Orchard.Models.Driver; using Orchard.Security; using Orchard.Services; @@ -22,10 +23,10 @@ namespace Orchard.Core.Common.Providers { _authenticationService = authenticationService; _contentManager = contentManager; - Filters.Add(new StorageFilter(repository)); + AddOnActivated(PropertySetHandlers); AddOnCreating(DefaultTimestampsAndOwner); AddOnLoaded(LazyLoadHandlers); - AddOnActivated(PropertySetHandlers); + Filters.Add(new StorageFilter(repository)); } void DefaultTimestampsAndOwner(CreateContentContext context, CommonAspect instance) { @@ -39,9 +40,7 @@ namespace Orchard.Core.Common.Providers { // and use the current user as Owner if (instance.Record.OwnerId == 0) { - instance.Owner = _authenticationService.GetAuthenticatedUser(); - if (instance.Owner != null) - instance.Record.OwnerId = instance.Owner.Id; + ((ICommonAspect)instance).Owner = _authenticationService.GetAuthenticatedUser(); } } diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/Controllers/PageController.cs b/src/Orchard.Web/Packages/Orchard.Sandbox/Controllers/PageController.cs index 2be952f1c..42479d4e0 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/Controllers/PageController.cs +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/Controllers/PageController.cs @@ -47,7 +47,6 @@ namespace Orchard.Sandbox.Controllers public ActionResult Create(PageCreateViewModel model) { var page = _contentManager.Create("sandboxpage", item => { item.Record.Name = model.Name; - item.As().Container = CurrentSite.ContentItem; }); return RedirectToAction("show", new { page.ContentItem.Id }); } diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj b/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj index 4e67a0171..786213836 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj +++ b/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj @@ -5,7 +5,7 @@ 9.0.30729 2.0 {5D0F00F0-26C9-4785-AD61-B85710C60EB0} - {F85E285D-A4E0-4152-9332-AB1D724D3325};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} Library Properties Orchard.Tags @@ -116,9 +116,8 @@ False - False - - + True + http://orchard.codeplex.com False diff --git a/src/Orchard/Models/Aspects/ICommonAspect.cs b/src/Orchard/Models/Aspects/ICommonAspect.cs new file mode 100644 index 000000000..1c5de4a1d --- /dev/null +++ b/src/Orchard/Models/Aspects/ICommonAspect.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Orchard.Security; + +namespace Orchard.Models.Aspects { + public interface ICommonAspect : IContent { + DateTime? CreatedUtc { get; set; } + DateTime? ModifiedUtc { get; set; } + IUser Owner { get; set; } + IContent Container { get; set; } + } +} diff --git a/src/Orchard/Orchard.csproj b/src/Orchard/Orchard.csproj index 185e1e8e4..d5098ab88 100644 --- a/src/Orchard/Orchard.csproj +++ b/src/Orchard/Orchard.csproj @@ -124,6 +124,7 @@ +