diff --git a/src/Orchard.Tests.Packages/Users/Controllers/AdminControllerTests.cs b/src/Orchard.Tests.Packages/Users/Controllers/AdminControllerTests.cs index 1b3663433..09729baee 100644 --- a/src/Orchard.Tests.Packages/Users/Controllers/AdminControllerTests.cs +++ b/src/Orchard.Tests.Packages/Users/Controllers/AdminControllerTests.cs @@ -43,17 +43,17 @@ namespace Orchard.Tests.Packages.Users.Controllers { var manager = _container.Resolve(); - var userOne = manager.New("user").As(); + var userOne = manager.New("user"); userOne.Record = new UserRecord { UserName = "one" }; - manager.Create(userOne); + manager.Create(userOne.ContentItem); - var userTwo = manager.New("user").As(); + var userTwo = manager.New("user"); userTwo.Record = new UserRecord { UserName = "two" }; - manager.Create(userTwo); + manager.Create(userTwo.ContentItem); - var userThree = manager.New("user").As(); + var userThree = manager.New("user"); userThree.Record = new UserRecord { UserName = "three" }; - manager.Create(userThree); + manager.Create(userThree.ContentItem); _controller = _container.Resolve(); diff --git a/src/Orchard.Tests/Models/DefaultModelManagerTests.cs b/src/Orchard.Tests/Models/DefaultModelManagerTests.cs index 2199fa951..78605cb60 100644 --- a/src/Orchard.Tests/Models/DefaultModelManagerTests.cs +++ b/src/Orchard.Tests/Models/DefaultModelManagerTests.cs @@ -102,7 +102,7 @@ namespace Orchard.Tests.Models { public void GetByIdShouldDetermineTypeAndLoadParts() { var modelRecord = CreateModelRecord("alpha"); - var contentItem = _manager.Get(modelRecord.Id).ContentItem; + var contentItem = _manager.Get(modelRecord.Id); Assert.That(contentItem.ContentType, Is.EqualTo("alpha")); Assert.That(contentItem.Id, Is.EqualTo(modelRecord.Id)); } @@ -119,7 +119,7 @@ namespace Orchard.Tests.Models { // create a gamma record var gamma = new GammaRecord { - ContentItem = _container.Resolve>().Get(model.ContentItem.Id), + ContentItem = _container.Resolve>().Get(model.Id), Frap = "foo" }; @@ -130,11 +130,11 @@ namespace Orchard.Tests.Models { // re-fetch from database model = _manager.Get(modelRecord.Id); - Assert.That(model.ContentItem.ContentType, Is.EqualTo("gamma")); - Assert.That(model.ContentItem.Id, Is.EqualTo(modelRecord.Id)); + Assert.That(model.ContentType, Is.EqualTo("gamma")); + Assert.That(model.Id, Is.EqualTo(modelRecord.Id)); Assert.That(model.Is(), Is.True); Assert.That(model.As().Record, Is.Not.Null); - Assert.That(model.As().Record.ContentItem.Id, Is.EqualTo(model.ContentItem.Id)); + Assert.That(model.As().Record.ContentItem.Id, Is.EqualTo(model.Id)); } @@ -143,7 +143,7 @@ namespace Orchard.Tests.Models { var beta = _manager.New("beta"); _manager.Create(beta); - var modelRecord = _container.Resolve>().Get(beta.ContentItem.Id); + var modelRecord = _container.Resolve>().Get(beta.Id); Assert.That(modelRecord, Is.Not.Null); Assert.That(modelRecord.ContentType.Name, Is.EqualTo("beta")); } diff --git a/src/Orchard/Models/ContentExtensions.cs b/src/Orchard/Models/ContentExtensions.cs index 035efe260..710d36f9b 100644 --- a/src/Orchard/Models/ContentExtensions.cs +++ b/src/Orchard/Models/ContentExtensions.cs @@ -21,7 +21,7 @@ namespace Orchard.Models { return null; initialize(content); - manager.Create(content); + manager.Create(content.ContentItem); return content; } diff --git a/src/Orchard/Models/DefaultContentManager.cs b/src/Orchard/Models/DefaultContentManager.cs index d86c30a44..e18c28f12 100644 --- a/src/Orchard/Models/DefaultContentManager.cs +++ b/src/Orchard/Models/DefaultContentManager.cs @@ -31,7 +31,7 @@ namespace Orchard.Models { } } - public virtual IContent New(string contentType) { + public virtual ContentItem New(string contentType) { // create a new kernel for the model instance var context = new ActivatingContentContext { @@ -55,29 +55,27 @@ namespace Orchard.Models { return context2.ContentItem; } - public virtual IContent Get(int id) { + public virtual ContentItem Get(int id) { // obtain root record to determine the model type - var contentItemRecord = _contentItemRepository.Get(id); + var record = _contentItemRepository.Get(id); // no record of that id means content item doesn't exist - if (contentItemRecord == null) + if (record == null) return null; // allocate instance and set record property - var content = New(contentItemRecord.ContentType.Name); - content.ContentItem.Record = contentItemRecord; + var contentItem = New(record.ContentType.Name); + contentItem.Id = record.Id; + contentItem.Record = record; // create a context with a new instance to load var context = new LoadContentContext { - Id = contentItemRecord.Id, - ContentType = contentItemRecord.ContentType.Name, - ContentItemRecord = contentItemRecord, - ContentItem = content.ContentItem + Id = contentItem.Id, + ContentType = contentItem.ContentType, + ContentItemRecord = record, + ContentItem = contentItem, }; - // set the id - context.ContentItem.Id = context.Id; - // invoke drivers to acquire state, or at least establish lazy loading callbacks foreach (var driver in Drivers) { driver.Loading(context); @@ -89,18 +87,18 @@ namespace Orchard.Models { return context.ContentItem; } - public void Create(IContent content) { + public void Create(ContentItem contentItem) { // produce root record to determine the model id - var modelRecord = new ContentItemRecord { ContentType = AcquireContentTypeRecord(content.ContentItem.ContentType) }; + var modelRecord = new ContentItemRecord { ContentType = AcquireContentTypeRecord(contentItem.ContentType) }; _contentItemRepository.Create(modelRecord); - content.ContentItem.Record = modelRecord; + contentItem.Record = modelRecord; // build a context with the initialized instance to create var context = new CreateContentContext { Id = modelRecord.Id, ContentType = modelRecord.ContentType.Name, ContentItemRecord = modelRecord, - ContentItem = content.ContentItem + ContentItem = contentItem }; // set the id diff --git a/src/Orchard/Models/IContentManager.cs b/src/Orchard/Models/IContentManager.cs index 70e12dca0..ddffc3a5f 100644 --- a/src/Orchard/Models/IContentManager.cs +++ b/src/Orchard/Models/IContentManager.cs @@ -4,9 +4,10 @@ using Orchard.UI.Models; namespace Orchard.Models { public interface IContentManager : IDependency { - IContent New(string contentType); - IContent Get(int id); - void Create(IContent contentItem); + ContentItem New(string contentType); + void Create(ContentItem contentItem); + + ContentItem Get(int id); IEnumerable GetDisplays(IContent contentItem); IEnumerable GetEditors(IContent contentItem);