Continuing to refactor ModelDriver concept into ContentHandler

--HG--
extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4041352
This commit is contained in:
loudej
2009-11-19 05:31:39 +00:00
parent 50da138925
commit 40632265f7
44 changed files with 248 additions and 255 deletions

View File

@@ -28,7 +28,7 @@ namespace Orchard.Tests.Packages.Users.Controllers {
builder.Register<AdminController>(); builder.Register<AdminController>();
builder.Register<DefaultContentManager>().As<IContentManager>(); builder.Register<DefaultContentManager>().As<IContentManager>();
builder.Register<MembershipService>().As<IMembershipService>(); builder.Register<MembershipService>().As<IMembershipService>();
builder.Register<UserDriver>().As<IModelDriver>(); builder.Register<UserDriver>().As<IContentHandler>();
builder.Register(new Mock<INotifier>().Object); builder.Register(new Mock<INotifier>().Object);
} }

View File

@@ -58,7 +58,7 @@ namespace Orchard.Tests.Packages.Users.Services {
builder.RegisterModule(new ImplicitCollectionSupportModule()); builder.RegisterModule(new ImplicitCollectionSupportModule());
builder.Register<MembershipService>().As<IMembershipService>(); builder.Register<MembershipService>().As<IMembershipService>();
builder.Register<DefaultContentManager>().As<IContentManager>(); builder.Register<DefaultContentManager>().As<IContentManager>();
builder.Register<UserDriver>().As<IModelDriver>(); builder.Register<UserDriver>().As<IContentHandler>();
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)); builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
_session = _sessionFactory.OpenSession(); _session = _sessionFactory.OpenSession();
builder.Register(new TestSessionLocator(_session)).As<ISessionLocator>(); builder.Register(new TestSessionLocator(_session)).As<ISessionLocator>();

View File

@@ -38,11 +38,11 @@ namespace Orchard.Tests.Models {
var builder = new ContainerBuilder(); var builder = new ContainerBuilder();
builder.RegisterModule(new ImplicitCollectionSupportModule()); builder.RegisterModule(new ImplicitCollectionSupportModule());
builder.Register<DefaultContentManager>().As<IContentManager>(); builder.Register<DefaultContentManager>().As<IContentManager>();
builder.Register<AlphaDriver>().As<IModelDriver>(); builder.Register<AlphaDriver>().As<IContentHandler>();
builder.Register<BetaDriver>().As<IModelDriver>(); builder.Register<BetaDriver>().As<IContentHandler>();
builder.Register<GammaDriver>().As<IModelDriver>(); builder.Register<GammaDriver>().As<IContentHandler>();
builder.Register<FlavoredDriver>().As<IModelDriver>(); builder.Register<FlavoredDriver>().As<IContentHandler>();
builder.Register<StyledDriver>().As<IModelDriver>(); builder.Register<StyledDriver>().As<IContentHandler>();
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)); builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
@@ -139,7 +139,7 @@ namespace Orchard.Tests.Models {
} }
[Test] [Test]
public void CreateShouldMakeModelAndModelTypeRecords() { public void CreateShouldMakeModelAndContentTypeRecords() {
var beta = _manager.New("beta"); var beta = _manager.New("beta");
_manager.Create(beta); _manager.Create(beta);
@@ -148,13 +148,13 @@ namespace Orchard.Tests.Models {
Assert.That(modelRecord.ContentType.Name, Is.EqualTo("beta")); Assert.That(modelRecord.ContentType.Name, Is.EqualTo("beta"));
} }
private ContentItemRecord CreateModelRecord(string modelType) { private ContentItemRecord CreateModelRecord(string contentType) {
var modelRepository = _container.Resolve<IRepository<ContentItemRecord>>(); var contentItemRepository = _container.Resolve<IRepository<ContentItemRecord>>();
var modelTypeRepository = _container.Resolve<IRepository<ContentTypeRecord>>(); var contentTypeRepository = _container.Resolve<IRepository<ContentTypeRecord>>();
var modelRecord = new ContentItemRecord { ContentType = new ContentTypeRecord { Name = modelType } }; var modelRecord = new ContentItemRecord { ContentType = new ContentTypeRecord { Name = contentType } };
modelTypeRepository.Create(modelRecord.ContentType); contentTypeRepository.Create(modelRecord.ContentType);
modelRepository.Create(modelRecord); contentItemRepository.Create(modelRecord);
_session.Flush(); _session.Flush();
_session.Clear(); _session.Clear();

View File

@@ -14,7 +14,7 @@ namespace Orchard.Tests.Models.Drivers {
var part = new TestModelPart(); var part = new TestModelPart();
contentItem.Weld(part); contentItem.Weld(part);
((IModelDriver)modelDriver).Creating(new CreateModelContext { ContentItem = contentItem }); ((IContentHandler)modelDriver).Creating(new CreateContentContext { ContentItem = contentItem });
Assert.That(part.CreatingCalled, Is.True); Assert.That(part.CreatingCalled, Is.True);
} }
@@ -23,7 +23,7 @@ namespace Orchard.Tests.Models.Drivers {
var modelDriver = new TestModelDriver(); var modelDriver = new TestModelDriver();
var builder = new ContentItemBuilder("testing"); var builder = new ContentItemBuilder("testing");
((IModelDriver)modelDriver).Activating(new ActivatingModelContext { Builder = builder, ModelType = "testing" }); ((IContentHandler)modelDriver).Activating(new ActivatingContentContext { Builder = builder, ContentType = "testing" });
var model = builder.Build(); var model = builder.Build();
Assert.That(model.Is<TestModelPart>(), Is.True); Assert.That(model.Is<TestModelPart>(), Is.True);
Assert.That(model.As<TestModelPart>(), Is.Not.Null); Assert.That(model.As<TestModelPart>(), Is.Not.Null);
@@ -34,7 +34,7 @@ namespace Orchard.Tests.Models.Drivers {
} }
public class TestModelDriver : ModelDriver { public class TestModelDriver : ContentHandler {
public TestModelDriver() { public TestModelDriver() {
Filters.Add(new ActivatingFilter<TestModelPart>(x => x == "testing")); Filters.Add(new ActivatingFilter<TestModelPart>(x => x == "testing"));
Filters.Add(new TestModelStorageFilter()); Filters.Add(new TestModelStorageFilter());
@@ -42,7 +42,7 @@ namespace Orchard.Tests.Models.Drivers {
} }
public class TestModelStorageFilter : StorageFilterBase<TestModelPart> { public class TestModelStorageFilter : StorageFilterBase<TestModelPart> {
protected override void Creating(CreateModelContext context, TestModelPart instance) { protected override void Creating(CreateContentContext context, TestModelPart instance) {
instance.CreatingCalled = true; instance.CreatingCalled = true;
} }
} }

View File

@@ -1,9 +1,9 @@
using Orchard.Models.Driver; using Orchard.Models.Driver;
namespace Orchard.Tests.Models.Stubs { namespace Orchard.Tests.Models.Stubs {
public class AlphaDriver : ModelDriver { public class AlphaDriver : ContentHandler {
protected override void Activating(ActivatingModelContext context) { protected override void Activating(ActivatingContentContext context) {
if (context.ModelType == "alpha") { if (context.ContentType == "alpha") {
context.Builder.Weld<Alpha>(); context.Builder.Weld<Alpha>();
} }
} }

View File

@@ -5,9 +5,9 @@ using System.Text;
using Orchard.Models.Driver; using Orchard.Models.Driver;
namespace Orchard.Tests.Models.Stubs { namespace Orchard.Tests.Models.Stubs {
public class BetaDriver : ModelDriver { public class BetaDriver : ContentHandler {
protected override void Activating(ActivatingModelContext context) { protected override void Activating(ActivatingContentContext context) {
if (context.ModelType == "beta") { if (context.ContentType == "beta") {
context.Builder.Weld<Beta>(); context.Builder.Weld<Beta>();
} }
} }

View File

@@ -1,9 +1,9 @@
using Orchard.Models.Driver; using Orchard.Models.Driver;
namespace Orchard.Tests.Models.Stubs { namespace Orchard.Tests.Models.Stubs {
public class FlavoredDriver : ModelDriver { public class FlavoredDriver : ContentHandler {
protected override void Activating(ActivatingModelContext context) { protected override void Activating(ActivatingContentContext context) {
if (context.ModelType == "beta" || context.ModelType == "alpha") { if (context.ContentType == "beta" || context.ContentType == "alpha") {
context.Builder.Weld<Flavored>(); context.Builder.Weld<Flavored>();
} }
} }

View File

@@ -12,7 +12,7 @@ namespace Orchard.Tests.Models.Stubs {
} }
public class GammaDriver : ModelDriver { public class GammaDriver : ContentHandler {
public GammaDriver(IRepository<GammaRecord> repository){ public GammaDriver(IRepository<GammaRecord> repository){
Filters.Add(new ActivatingFilter<Gamma>(x => x == "gamma")); Filters.Add(new ActivatingFilter<Gamma>(x => x == "gamma"));
Filters.Add(new StorageFilterForRecord<GammaRecord>(repository)); Filters.Add(new StorageFilterForRecord<GammaRecord>(repository));

View File

@@ -1,9 +1,9 @@
using Orchard.Models.Driver; using Orchard.Models.Driver;
namespace Orchard.Tests.Models.Stubs { namespace Orchard.Tests.Models.Stubs {
public class StyledDriver : ModelDriver { public class StyledDriver : ContentHandler {
protected override void Activating(ActivatingModelContext context) { protected override void Activating(ActivatingContentContext context) {
if (context.ModelType == "alpha") { if (context.ContentType == "alpha") {
context.Builder.Weld<Styled>(); context.Builder.Weld<Styled>();
} }
} }

View File

@@ -6,7 +6,7 @@ using Orchard.Security;
using Orchard.Services; using Orchard.Services;
namespace Orchard.Core.Common.Models { namespace Orchard.Core.Common.Models {
public class CommonDriver : ModelDriver { public class CommonDriver : Orchard.Models.Driver.ContentHandler {
private readonly IClock _clock; private readonly IClock _clock;
private readonly IAuthenticationService _authenticationService; private readonly IAuthenticationService _authenticationService;
private readonly IContentManager _contentManager; private readonly IContentManager _contentManager;
@@ -26,7 +26,7 @@ namespace Orchard.Core.Common.Models {
AddOnLoaded<CommonModel>(LoadOwnerModel); AddOnLoaded<CommonModel>(LoadOwnerModel);
} }
void SetCreateTimesAndAuthor(CreateModelContext context, CommonModel instance) { void SetCreateTimesAndAuthor(CreateContentContext context, CommonModel instance) {
if (instance.Record.CreatedUtc == null) { if (instance.Record.CreatedUtc == null) {
instance.Record.CreatedUtc = _clock.UtcNow; instance.Record.CreatedUtc = _clock.UtcNow;
} }
@@ -40,7 +40,7 @@ namespace Orchard.Core.Common.Models {
} }
} }
void LoadOwnerModel(LoadModelContext context, CommonModel instance) { void LoadOwnerModel(LoadContentContext context, CommonModel instance) {
if (instance.Record.OwnerId != 0) { if (instance.Record.OwnerId != 0) {
instance.Owner = _contentManager.Get(instance.Record.OwnerId).As<IUser>(); instance.Owner = _contentManager.Get(instance.Record.OwnerId).As<IUser>();
} }

View File

@@ -1,7 +1,7 @@
using Orchard.Models.Driver; using Orchard.Models.Driver;
namespace Orchard.Core.Common.Models { namespace Orchard.Core.Common.Models {
public class ContentDriver : ModelDriver { public class ContentDriver : Orchard.Models.Driver.ContentHandler {
} }
} }

View File

@@ -3,7 +3,7 @@ using Orchard.Data;
using Orchard.Models.Driver; using Orchard.Models.Driver;
namespace Orchard.Core.Common.Models { namespace Orchard.Core.Common.Models {
public class RoutableDriver : ModelDriver { public class RoutableDriver : Orchard.Models.Driver.ContentHandler {
public RoutableDriver(IRepository<RoutableRecord> repository) { public RoutableDriver(IRepository<RoutableRecord> repository) {
Filters.Add(new StorageFilterForRecord<RoutableRecord>(repository)); Filters.Add(new StorageFilterForRecord<RoutableRecord>(repository));
} }

View File

@@ -9,7 +9,7 @@ using Orchard.Models.Driver;
namespace Orchard.Core.Settings.Controllers { namespace Orchard.Core.Settings.Controllers {
[ValidateInput(false)] [ValidateInput(false)]
public class AdminController : Controller, IModelUpdater { public class AdminController : Controller, IUpdateModel {
private readonly ISiteService _siteService; private readonly ISiteService _siteService;
private readonly IContentManager _modelManager; private readonly IContentManager _modelManager;
private readonly INotifier _notifier; private readonly INotifier _notifier;
@@ -43,9 +43,9 @@ namespace Orchard.Core.Settings.Controllers {
return RedirectToAction("Index"); return RedirectToAction("Index");
} }
#region IModelUpdater Members #region IUpdateModel Members
bool IModelUpdater.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) { bool IUpdateModel.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) {
return TryUpdateModel(model, prefix, includeProperties, excludeProperties); return TryUpdateModel(model, prefix, includeProperties, excludeProperties);
} }

View File

@@ -3,7 +3,7 @@ using Orchard.Data;
using Orchard.Models.Driver; using Orchard.Models.Driver;
namespace Orchard.Core.Settings.Models { namespace Orchard.Core.Settings.Models {
public class SiteDriver : ModelDriver { public class SiteDriver : ContentHandler {
public SiteDriver(IRepository<SiteSettingsRecord> repository){ public SiteDriver(IRepository<SiteSettingsRecord> repository){
Filters.Add(new ActivatingFilter<SiteModel>("site")); Filters.Add(new ActivatingFilter<SiteModel>("site"));
Filters.Add(new StorageFilterForRecord<SiteSettingsRecord>(repository)); Filters.Add(new StorageFilterForRecord<SiteSettingsRecord>(repository));

View File

@@ -12,13 +12,13 @@ namespace Orchard.Media.Models {
public virtual string RootMediaFolder { get; set; } public virtual string RootMediaFolder { get; set; }
} }
public class MediaSettingsDriver : ModelDriver { public class MediaSettingsDriver : ContentHandler {
public MediaSettingsDriver(IRepository<MediaSettingsRecord> repository) { public MediaSettingsDriver(IRepository<MediaSettingsRecord> repository) {
Filters.Add(new ActivatingFilter<MediaSettings>("site")); Filters.Add(new ActivatingFilter<MediaSettings>("site"));
Filters.Add(new StorageFilterForRecord<MediaSettingsRecord>(repository) { AutomaticallyCreateMissingRecord = true }); Filters.Add(new StorageFilterForRecord<MediaSettingsRecord>(repository) { AutomaticallyCreateMissingRecord = true });
} }
protected override void GetEditors(GetModelEditorsContext context) { protected override void GetEditors(GetContentEditorsContext context) {
var model = context.ContentItem.As<MediaSettings>(); var model = context.ContentItem.As<MediaSettings>();
if (model == null) if (model == null)
return; return;
@@ -26,7 +26,7 @@ namespace Orchard.Media.Models {
context.Editors.Add(ModelTemplate.For(model.Record, "MediaSettings")); context.Editors.Add(ModelTemplate.For(model.Record, "MediaSettings"));
} }
protected override void UpdateEditors(UpdateModelContext context) { protected override void UpdateEditors(UpdateContentContext context) {
var model = context.ContentItem.As<MediaSettings>(); var model = context.ContentItem.As<MediaSettings>();
if (model == null) if (model == null)
return; return;

View File

@@ -11,7 +11,7 @@ using Orchard.UI.Models;
using Orchard.UI.Notify; using Orchard.UI.Notify;
namespace Orchard.Roles.Models { namespace Orchard.Roles.Models {
public class UserRolesDriver : ModelDriver { public class UserRolesDriver : ContentHandler {
private readonly IRepository<UserRolesRecord> _userRolesRepository; private readonly IRepository<UserRolesRecord> _userRolesRepository;
private readonly IRoleService _roleService; private readonly IRoleService _roleService;
private readonly INotifier _notifier; private readonly INotifier _notifier;
@@ -22,19 +22,19 @@ namespace Orchard.Roles.Models {
_notifier = notifier; _notifier = notifier;
} }
protected override void Activating(ActivatingModelContext context) { protected override void Activating(ActivatingContentContext context) {
if (context.ModelType == "user") { if (context.ContentType == "user") {
context.Builder.Weld<UserRolesModel>(); context.Builder.Weld<UserRolesModel>();
} }
} }
protected override void Creating(CreateModelContext context) { protected override void Creating(CreateContentContext context) {
var userRoles = context.ContentItem.As<UserRolesModel>(); var userRoles = context.ContentItem.As<UserRolesModel>();
if (userRoles != null) { if (userRoles != null) {
} }
} }
protected override void Loading(LoadModelContext context) { protected override void Loading(LoadContentContext context) {
var userRoles = context.ContentItem.As<UserRolesModel>(); var userRoles = context.ContentItem.As<UserRolesModel>();
if (userRoles != null) { if (userRoles != null) {
userRoles.Roles = _userRolesRepository.Fetch(x => x.UserId == context.ContentItem.Id) userRoles.Roles = _userRolesRepository.Fetch(x => x.UserId == context.ContentItem.Id)
@@ -42,7 +42,7 @@ namespace Orchard.Roles.Models {
} }
} }
protected override void GetEditors(GetModelEditorsContext context) { protected override void GetEditors(GetContentEditorsContext context) {
var userRoles = context.ContentItem.As<UserRolesModel>(); var userRoles = context.ContentItem.As<UserRolesModel>();
if (userRoles != null) { if (userRoles != null) {
var roles = var roles =
@@ -63,7 +63,7 @@ namespace Orchard.Roles.Models {
} }
} }
protected override void UpdateEditors(UpdateModelContext context) { protected override void UpdateEditors(UpdateContentContext context) {
var userRoles = context.ContentItem.As<UserRolesModel>(); var userRoles = context.ContentItem.As<UserRolesModel>();
if (userRoles != null) { if (userRoles != null) {
var viewModel = new UserRolesViewModel(); var viewModel = new UserRolesViewModel();

View File

@@ -12,7 +12,7 @@ using Orchard.Users.ViewModels;
namespace Orchard.Users.Controllers { namespace Orchard.Users.Controllers {
public class AdminController : Controller, IModelUpdater { public class AdminController : Controller, IUpdateModel {
private readonly IMembershipService _membershipService; private readonly IMembershipService _membershipService;
private readonly IContentManager _contentManager; private readonly IContentManager _contentManager;
private readonly IRepository<UserRecord> _userRepository; private readonly IRepository<UserRecord> _userRepository;
@@ -86,7 +86,7 @@ namespace Orchard.Users.Controllers {
} }
bool IModelUpdater.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) { bool IUpdateModel.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) {
return TryUpdateModel(model, prefix, includeProperties, excludeProperties); return TryUpdateModel(model, prefix, includeProperties, excludeProperties);
} }
} }

View File

@@ -2,7 +2,7 @@
using Orchard.Models.Driver; using Orchard.Models.Driver;
namespace Orchard.Users.Models { namespace Orchard.Users.Models {
public class UserDriver : ModelDriver { public class UserDriver : ContentHandler {
public UserDriver(IRepository<UserRecord> repository) { public UserDriver(IRepository<UserRecord> repository) {
Filters.Add(new ActivatingFilter<UserModel>("user")); Filters.Add(new ActivatingFilter<UserModel>("user"));
Filters.Add(new StorageFilterForRecord<UserRecord>(repository)); Filters.Add(new StorageFilterForRecord<UserRecord>(repository));

View File

@@ -6,9 +6,9 @@ using Orchard.Core.Common.Models;
using Orchard.Models.Driver; using Orchard.Models.Driver;
namespace Orchard.Wikis.Models { namespace Orchard.Wikis.Models {
public class WikiPageDriver : ModelDriver { public class WikiPageDriver : ContentHandler {
protected override void Activating(ActivatingModelContext context) { protected override void Activating(ActivatingContentContext context) {
if (context.ModelType == "wikipage") { if (context.ContentType == "wikipage") {
context.Builder context.Builder
.Weld<CommonModel>() .Weld<CommonModel>()
.Weld<RoutableModel>() .Weld<RoutableModel>()

View File

@@ -16,7 +16,7 @@ namespace Orchard.Wikis.Models {
public virtual string WikiEditTheme { get; set; } public virtual string WikiEditTheme { get; set; }
} }
public class WikiSettingsDriver : ModelDriver { public class WikiSettingsDriver : ContentHandler {
public WikiSettingsDriver(IRepository<WikiSettingsRecord> repository) { public WikiSettingsDriver(IRepository<WikiSettingsRecord> repository) {
Filters.Add(new ActivatingFilter<WikiSettings>("site")); Filters.Add(new ActivatingFilter<WikiSettings>("site"));
Filters.Add(new StorageFilterForRecord<WikiSettingsRecord>(repository) { AutomaticallyCreateMissingRecord = true }); Filters.Add(new StorageFilterForRecord<WikiSettingsRecord>(repository) { AutomaticallyCreateMissingRecord = true });
@@ -25,7 +25,7 @@ namespace Orchard.Wikis.Models {
Filters.Add(new ActivatingFilter<WikiSettings>("user")); Filters.Add(new ActivatingFilter<WikiSettings>("user"));
} }
protected override void GetEditors(GetModelEditorsContext context) { protected override void GetEditors(GetContentEditorsContext context) {
var model = context.ContentItem.As<WikiSettings>(); var model = context.ContentItem.As<WikiSettings>();
if (model == null) if (model == null)
return; return;
@@ -33,7 +33,7 @@ namespace Orchard.Wikis.Models {
context.Editors.Add(ModelTemplate.For(model.Record, "WikiSettings")); context.Editors.Add(ModelTemplate.For(model.Record, "WikiSettings"));
} }
protected override void UpdateEditors(UpdateModelContext context) { protected override void UpdateEditors(UpdateContentContext context) {
var model = context.ContentItem.As<WikiSettings>(); var model = context.ContentItem.As<WikiSettings>();
if (model == null) if (model == null)
return; return;

View File

@@ -22,29 +22,29 @@ namespace Orchard.Models {
_contentTypeRepository = contentTypeRepository; _contentTypeRepository = contentTypeRepository;
} }
private IEnumerable<IModelDriver> _drivers; private IEnumerable<IContentHandler> _drivers;
public IEnumerable<IModelDriver> Drivers { public IEnumerable<IContentHandler> Drivers {
get { get {
if (_drivers == null) if (_drivers == null)
_drivers = _context.Resolve<IEnumerable<IModelDriver>>(); _drivers = _context.Resolve<IEnumerable<IContentHandler>>();
return _drivers; return _drivers;
} }
} }
public virtual ContentItem New(string modelType) { public virtual ContentItem New(string contentType) {
// create a new kernel for the model instance // create a new kernel for the model instance
var context = new ActivatingModelContext { var context = new ActivatingContentContext {
ModelType = modelType, ContentType = contentType,
Builder = new ContentItemBuilder(modelType) Builder = new ContentItemBuilder(contentType)
}; };
// invoke drivers to weld aspects onto kernel // invoke drivers to weld aspects onto kernel
foreach (var driver in Drivers) { foreach (var driver in Drivers) {
driver.Activating(context); driver.Activating(context);
} }
var context2 = new ActivatedModelContext { var context2 = new ActivatedContentContext {
ContentType = modelType, ContentType = contentType,
ContentItem = context.Builder.Build() ContentItem = context.Builder.Build()
}; };
foreach (var driver in Drivers) { foreach (var driver in Drivers) {
@@ -60,9 +60,9 @@ namespace Orchard.Models {
var contentItemRecord = _contentItemRepository.Get(id); var contentItemRecord = _contentItemRepository.Get(id);
// create a context with a new instance to load // create a context with a new instance to load
var context = new LoadModelContext { var context = new LoadContentContext {
Id = contentItemRecord.Id, Id = contentItemRecord.Id,
ModelType = contentItemRecord.ContentType.Name, ContentType = contentItemRecord.ContentType.Name,
ContentItemRecord = contentItemRecord, ContentItemRecord = contentItemRecord,
ContentItem = New(contentItemRecord.ContentType.Name) ContentItem = New(contentItemRecord.ContentType.Name)
}; };
@@ -87,9 +87,9 @@ namespace Orchard.Models {
_contentItemRepository.Create(modelRecord); _contentItemRepository.Create(modelRecord);
// build a context with the initialized instance to create // build a context with the initialized instance to create
var context = new CreateModelContext { var context = new CreateContentContext {
Id = modelRecord.Id, Id = modelRecord.Id,
ModelType = modelRecord.ContentType.Name, ContentType = modelRecord.ContentType.Name,
ContentItemRecord = modelRecord, ContentItemRecord = modelRecord,
ContentItem = contentItem ContentItem = contentItem
}; };
@@ -108,15 +108,15 @@ namespace Orchard.Models {
} }
public IEnumerable<ModelTemplate> GetEditors(ContentItem contentItem) { public IEnumerable<ModelTemplate> GetEditors(ContentItem contentItem) {
var context = new GetModelEditorsContext(contentItem); var context = new GetContentEditorsContext(contentItem);
foreach (var driver in Drivers) { foreach (var driver in Drivers) {
driver.GetEditors(context); driver.GetEditors(context);
} }
return context.Editors; return context.Editors;
} }
public IEnumerable<ModelTemplate> UpdateEditors(ContentItem contentItem, IModelUpdater updater) { public IEnumerable<ModelTemplate> UpdateEditors(ContentItem contentItem, IUpdateModel updater) {
var context = new UpdateModelContext(contentItem, updater); var context = new UpdateContentContext(contentItem, updater);
foreach (var driver in Drivers) { foreach (var driver in Drivers) {
driver.UpdateEditors(context); driver.UpdateEditors(context);
} }
@@ -124,13 +124,13 @@ namespace Orchard.Models {
} }
private ContentTypeRecord AcquireContentTypeRecord(string contentType) { private ContentTypeRecord AcquireContentTypeRecord(string contentType) {
var modelTypeRecord = _contentTypeRepository.Get(x => x.Name == contentType); var contentTypeRecord = _contentTypeRepository.Get(x => x.Name == contentType);
if (modelTypeRecord == null) { if (contentTypeRecord == null) {
//TEMP: this is not safe... ContentItem types could be created concurrently? //TEMP: this is not safe... ContentItem types could be created concurrently?
modelTypeRecord = new ContentTypeRecord { Name = contentType }; contentTypeRecord = new ContentTypeRecord { Name = contentType };
_contentTypeRepository.Create(modelTypeRecord); _contentTypeRepository.Create(contentTypeRecord);
} }
return modelTypeRecord; return contentTypeRecord;
} }
} }
} }

View File

@@ -1,5 +1,5 @@
namespace Orchard.Models.Driver { namespace Orchard.Models.Driver {
public class ActivatedModelContext { public class ActivatedContentContext {
public string ContentType { get; set; } public string ContentType { get; set; }
public ContentItem ContentItem { get; set; } public ContentItem ContentItem { get; set; }
} }

View File

@@ -1,6 +1,6 @@
namespace Orchard.Models.Driver { namespace Orchard.Models.Driver {
public class ActivatingModelContext { public class ActivatingContentContext {
public string ModelType { get; set; } public string ContentType { get; set; }
public ContentItemBuilder Builder { get; set; } public ContentItemBuilder Builder { get; set; }
} }
} }

View File

@@ -2,19 +2,19 @@ using System;
using System.Linq; using System.Linq;
namespace Orchard.Models.Driver { namespace Orchard.Models.Driver {
public class ActivatingFilter<TPart> : IModelActivatingFilter where TPart : class, IContentItemPart, new() { public class ActivatingFilter<TPart> : IContentActivatingFilter where TPart : class, IContentItemPart, new() {
private readonly Func<string, bool> _predicate; private readonly Func<string, bool> _predicate;
public ActivatingFilter(Func<string, bool> predicate) { public ActivatingFilter(Func<string, bool> predicate) {
_predicate = predicate; _predicate = predicate;
} }
public ActivatingFilter(params string[] modelTypes) public ActivatingFilter(params string[] contentTypes)
: this(modelType => modelTypes.Contains(modelType)) { : this(contentType => contentTypes.Contains(contentType)) {
} }
public void Activating(ActivatingModelContext context) { public void Activating(ActivatingContentContext context) {
if (_predicate(context.ModelType)) if (_predicate(context.ContentType))
context.Builder.Weld<TPart>(); context.Builder.Weld<TPart>();
} }
} }

View File

@@ -0,0 +1,89 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Orchard.Logging;
namespace Orchard.Models.Driver {
public abstract class ContentHandler : IContentHandler {
protected ContentHandler() {
Filters = new List<IContentFilter>();
Logger = NullLogger.Instance;
}
public List<IContentFilter> Filters { get; set; }
public ILogger Logger { get; set; }
public void AddOnActivated<TPart>(Action<ActivatedContentContext, TPart> handler) where TPart : class, IContentItemPart {
Filters.Add(new InlineStorageFilter<TPart> { OnActivated = handler });
}
public void AddOnCreating<TPart>(Action<CreateContentContext, TPart> handler) where TPart : class, IContentItemPart {
Filters.Add(new InlineStorageFilter<TPart> { OnCreating = handler });
}
public void AddOnLoaded<TPart>(Action<LoadContentContext, TPart> handler) where TPart : class, IContentItemPart {
Filters.Add(new InlineStorageFilter<TPart> { OnLoaded = handler });
}
class InlineStorageFilter<TPart> : StorageFilterBase<TPart> where TPart : class, IContentItemPart {
public Action<ActivatedContentContext, TPart> OnActivated { get; set; }
public Action<CreateContentContext, TPart> OnCreating { get; set; }
public Action<CreateContentContext, TPart> OnCreated { get; set; }
public Action<LoadContentContext, TPart> OnLoading { get; set; }
public Action<LoadContentContext, TPart> OnLoaded { get; set; }
protected override void Activated(ActivatedContentContext context, TPart instance) { if (OnActivated != null) OnActivated(context, instance); }
protected override void Creating(CreateContentContext context, TPart instance) { if (OnCreating != null) OnCreating(context, instance); }
protected override void Loaded(LoadContentContext context, TPart instance) { if (OnLoaded != null) OnLoaded(context, instance); }
}
void IContentHandler.Activating(ActivatingContentContext context) {
foreach (var filter in Filters.OfType<IContentActivatingFilter>())
filter.Activating(context);
Activating(context);
}
void IContentHandler.Activated(ActivatedContentContext context) {
foreach (var filter in Filters.OfType<IContentStorageFilter>())
filter.Activated(context);
Activated(context);
}
void IContentHandler.Creating(CreateContentContext context) {
foreach (var filter in Filters.OfType<IContentStorageFilter>())
filter.Creating(context);
Creating(context);
}
void IContentHandler.Created(CreateContentContext context) {
foreach (var filter in Filters.OfType<IContentStorageFilter>())
filter.Created(context);
Created(context);
}
void IContentHandler.Loading(LoadContentContext context) {
foreach (var filter in Filters.OfType<IContentStorageFilter>())
filter.Loading(context);
Loading(context);
}
void IContentHandler.Loaded(LoadContentContext context) {
foreach (var filter in Filters.OfType<IContentStorageFilter>())
filter.Loaded(context);
Loaded(context);
}
void IContentHandler.GetEditors(GetContentEditorsContext context) { GetEditors(context); }
void IContentHandler.UpdateEditors(UpdateContentContext context) { UpdateEditors(context); }
protected virtual void Activating(ActivatingContentContext context) { }
protected virtual void Activated(ActivatedContentContext context) { }
protected virtual void Loading(LoadContentContext context) { }
protected virtual void Loaded(LoadContentContext context) { }
protected virtual void Creating(CreateContentContext context) { }
protected virtual void Created(CreateContentContext context) { }
protected virtual void GetEditors(GetContentEditorsContext context) {}
protected virtual void UpdateEditors(UpdateContentContext context) {}
}
}

View File

@@ -1,9 +1,9 @@
using Orchard.Models.Records; using Orchard.Models.Records;
namespace Orchard.Models.Driver { namespace Orchard.Models.Driver {
public class CreateModelContext { public class CreateContentContext {
public int Id { get; set; } public int Id { get; set; }
public string ModelType { get; set; } public string ContentType { get; set; }
public ContentItemRecord ContentItemRecord { get; set; } public ContentItemRecord ContentItemRecord { get; set; }
public ContentItem ContentItem { get; set; } public ContentItem ContentItem { get; set; }
} }

View File

@@ -2,8 +2,8 @@ using System.Collections.Generic;
using Orchard.UI.Models; using Orchard.UI.Models;
namespace Orchard.Models.Driver { namespace Orchard.Models.Driver {
public class GetModelEditorsContext { public class GetContentEditorsContext {
public GetModelEditorsContext(ContentItem part) { public GetContentEditorsContext(ContentItem part) {
ContentItem = part; ContentItem = part;
Editors= new List<ModelTemplate>(); Editors= new List<ModelTemplate>();
} }

View File

@@ -0,0 +1,5 @@
namespace Orchard.Models.Driver {
public interface IContentActivatingFilter : IContentFilter {
void Activating(ActivatingContentContext context);
}
}

View File

@@ -1,4 +1,4 @@
namespace Orchard.Models.Driver { namespace Orchard.Models.Driver {
public interface IModelFilter { public interface IContentFilter {
} }
} }

View File

@@ -0,0 +1,13 @@
namespace Orchard.Models.Driver {
public interface IContentHandler : IDependency {
void Activating(ActivatingContentContext context);
void Activated(ActivatedContentContext context);
void Creating(CreateContentContext context);
void Created(CreateContentContext context);
void Loading(LoadContentContext context);
void Loaded(LoadContentContext context);
void GetEditors(GetContentEditorsContext context);
void UpdateEditors(UpdateContentContext context);
}
}

View File

@@ -0,0 +1,9 @@
namespace Orchard.Models.Driver {
public interface IContentStorageFilter : IContentFilter {
void Activated(ActivatedContentContext context);
void Creating(CreateContentContext context);
void Created(CreateContentContext context);
void Loading(LoadContentContext context);
void Loaded(LoadContentContext context);
}
}

View File

@@ -1,5 +0,0 @@
namespace Orchard.Models.Driver {
public interface IModelActivatingFilter : IModelFilter {
void Activating(ActivatingModelContext context);
}
}

View File

@@ -1,13 +0,0 @@
namespace Orchard.Models.Driver {
public interface IModelDriver : IDependency {
void Activating(ActivatingModelContext context);
void Activated(ActivatedModelContext context);
void Creating(CreateModelContext context);
void Created(CreateModelContext context);
void Loading(LoadModelContext context);
void Loaded(LoadModelContext context);
void GetEditors(GetModelEditorsContext context);
void UpdateEditors(UpdateModelContext context);
}
}

View File

@@ -1,9 +0,0 @@
namespace Orchard.Models.Driver {
public interface IModelStorageFilter : IModelFilter {
void Activated(ActivatedModelContext context);
void Creating(CreateModelContext context);
void Created(CreateModelContext context);
void Loading(LoadModelContext context);
void Loaded(LoadModelContext context);
}
}

View File

@@ -1,5 +1,5 @@
namespace Orchard.Models.Driver { namespace Orchard.Models.Driver {
public interface IModelUpdater { public interface IUpdateModel {
bool TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) where TModel : class; bool TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) where TModel : class;
} }
} }

View File

@@ -2,9 +2,9 @@ using System;
using Orchard.Models.Records; using Orchard.Models.Records;
namespace Orchard.Models.Driver { namespace Orchard.Models.Driver {
public class LoadModelContext { public class LoadContentContext {
public int Id { get; set; } public int Id { get; set; }
public string ModelType { get; set; } public string ContentType { get; set; }
public ContentItemRecord ContentItemRecord { get; set; } public ContentItemRecord ContentItemRecord { get; set; }
public ContentItem ContentItem { get; set; } public ContentItem ContentItem { get; set; }
} }

View File

@@ -1,89 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Orchard.Logging;
namespace Orchard.Models.Driver {
public abstract class ModelDriver : IModelDriver {
protected ModelDriver() {
Filters = new List<IModelFilter>();
Logger = NullLogger.Instance;
}
public List<IModelFilter> Filters { get; set; }
public ILogger Logger { get; set; }
public void AddOnActivated<TPart>(Action<ActivatedModelContext, TPart> handler) where TPart : class, IContentItemPart {
Filters.Add(new InlineStorageFilter<TPart> { OnActivated = handler });
}
public void AddOnCreating<TPart>(Action<CreateModelContext, TPart> handler) where TPart : class, IContentItemPart {
Filters.Add(new InlineStorageFilter<TPart> { OnCreating = handler });
}
public void AddOnLoaded<TPart>(Action<LoadModelContext, TPart> handler) where TPart : class, IContentItemPart {
Filters.Add(new InlineStorageFilter<TPart> { OnLoaded = handler });
}
class InlineStorageFilter<TPart> : StorageFilterBase<TPart> where TPart : class, IContentItemPart {
public Action<ActivatedModelContext, TPart> OnActivated { get; set; }
public Action<CreateModelContext, TPart> OnCreating { get; set; }
public Action<CreateModelContext, TPart> OnCreated { get; set; }
public Action<LoadModelContext, TPart> OnLoading { get; set; }
public Action<LoadModelContext, TPart> OnLoaded { get; set; }
protected override void Activated(ActivatedModelContext context, TPart instance) { if (OnActivated != null) OnActivated(context, instance); }
protected override void Creating(CreateModelContext context, TPart instance) { if (OnCreating != null) OnCreating(context, instance); }
protected override void Loaded(LoadModelContext context, TPart instance) { if (OnLoaded != null) OnLoaded(context, instance); }
}
void IModelDriver.Activating(ActivatingModelContext context) {
foreach (var filter in Filters.OfType<IModelActivatingFilter>())
filter.Activating(context);
Activating(context);
}
void IModelDriver.Activated(ActivatedModelContext context) {
foreach (var filter in Filters.OfType<IModelStorageFilter>())
filter.Activated(context);
Activated(context);
}
void IModelDriver.Creating(CreateModelContext context) {
foreach (var filter in Filters.OfType<IModelStorageFilter>())
filter.Creating(context);
Creating(context);
}
void IModelDriver.Created(CreateModelContext context) {
foreach (var filter in Filters.OfType<IModelStorageFilter>())
filter.Created(context);
Created(context);
}
void IModelDriver.Loading(LoadModelContext context) {
foreach (var filter in Filters.OfType<IModelStorageFilter>())
filter.Loading(context);
Loading(context);
}
void IModelDriver.Loaded(LoadModelContext context) {
foreach (var filter in Filters.OfType<IModelStorageFilter>())
filter.Loaded(context);
Loaded(context);
}
void IModelDriver.GetEditors(GetModelEditorsContext context) { GetEditors(context); }
void IModelDriver.UpdateEditors(UpdateModelContext context) { UpdateEditors(context); }
protected virtual void Activating(ActivatingModelContext context) { }
protected virtual void Activated(ActivatedModelContext context) { }
protected virtual void Loading(LoadModelContext context) { }
protected virtual void Loaded(LoadModelContext context) { }
protected virtual void Creating(CreateModelContext context) { }
protected virtual void Created(CreateModelContext context) { }
protected virtual void GetEditors(GetModelEditorsContext context) {}
protected virtual void UpdateEditors(UpdateModelContext context) {}
}
}

View File

@@ -1,34 +1,34 @@
namespace Orchard.Models.Driver { namespace Orchard.Models.Driver {
public abstract class StorageFilterBase<TPart> : IModelStorageFilter where TPart : class, IContentItemPart { public abstract class StorageFilterBase<TPart> : IContentStorageFilter where TPart : class, IContentItemPart {
protected virtual void Activated(ActivatedModelContext context, TPart instance) { } protected virtual void Activated(ActivatedContentContext context, TPart instance) { }
protected virtual void Creating(CreateModelContext context, TPart instance) { } protected virtual void Creating(CreateContentContext context, TPart instance) { }
protected virtual void Created(CreateModelContext context, TPart instance) { } protected virtual void Created(CreateContentContext context, TPart instance) { }
protected virtual void Loading(LoadModelContext context, TPart instance) { } protected virtual void Loading(LoadContentContext context, TPart instance) { }
protected virtual void Loaded(LoadModelContext context, TPart instance) { } protected virtual void Loaded(LoadContentContext context, TPart instance) { }
void IModelStorageFilter.Activated(ActivatedModelContext context) { void IContentStorageFilter.Activated(ActivatedContentContext context) {
if (context.ContentItem.Is<TPart>()) if (context.ContentItem.Is<TPart>())
Activated(context, context.ContentItem.As<TPart>()); Activated(context, context.ContentItem.As<TPart>());
} }
void IModelStorageFilter.Creating(CreateModelContext context) { void IContentStorageFilter.Creating(CreateContentContext context) {
if (context.ContentItem.Is<TPart>()) if (context.ContentItem.Is<TPart>())
Creating(context, context.ContentItem.As<TPart>()); Creating(context, context.ContentItem.As<TPart>());
} }
void IModelStorageFilter.Created(CreateModelContext context) { void IContentStorageFilter.Created(CreateContentContext context) {
if (context.ContentItem.Is<TPart>()) if (context.ContentItem.Is<TPart>())
Created(context, context.ContentItem.As<TPart>()); Created(context, context.ContentItem.As<TPart>());
} }
void IModelStorageFilter.Loading(LoadModelContext context) { void IContentStorageFilter.Loading(LoadContentContext context) {
if (context.ContentItem.Is<TPart>()) if (context.ContentItem.Is<TPart>())
Loading(context, context.ContentItem.As<TPart>()); Loading(context, context.ContentItem.As<TPart>());
} }
void IModelStorageFilter.Loaded(LoadModelContext context) { void IContentStorageFilter.Loaded(LoadContentContext context) {
if (context.ContentItem.Is<TPart>()) if (context.ContentItem.Is<TPart>())
Loaded(context, context.ContentItem.As<TPart>()); Loaded(context, context.ContentItem.As<TPart>());
} }

View File

@@ -11,16 +11,16 @@ namespace Orchard.Models.Driver {
public bool AutomaticallyCreateMissingRecord { get; set; } public bool AutomaticallyCreateMissingRecord { get; set; }
protected override void Activated(ActivatedModelContext context, ContentItemPartWithRecord<TRecord> instance) { protected override void Activated(ActivatedContentContext context, ContentItemPartWithRecord<TRecord> instance) {
instance.Record = new TRecord(); instance.Record = new TRecord();
} }
protected override void Creating(CreateModelContext context, ContentItemPartWithRecord<TRecord> instance) { protected override void Creating(CreateContentContext context, ContentItemPartWithRecord<TRecord> instance) {
instance.Record.ContentItem = context.ContentItemRecord; instance.Record.ContentItem = context.ContentItemRecord;
_repository.Create(instance.Record); _repository.Create(instance.Record);
} }
protected override void Loading(LoadModelContext context, ContentItemPartWithRecord<TRecord> instance) { protected override void Loading(LoadContentContext context, ContentItemPartWithRecord<TRecord> instance) {
instance.Record = _repository.Get(instance.ContentItem.Id); instance.Record = _repository.Get(instance.ContentItem.Id);
if (instance.Record == null && AutomaticallyCreateMissingRecord) { if (instance.Record == null && AutomaticallyCreateMissingRecord) {
instance.Record = new TRecord {ContentItem = context.ContentItemRecord}; instance.Record = new TRecord {ContentItem = context.ContentItemRecord};

View File

@@ -0,0 +1,9 @@
namespace Orchard.Models.Driver {
public class UpdateContentContext : GetContentEditorsContext {
public UpdateContentContext(ContentItem contentItem, IUpdateModel updater) : base(contentItem) {
Updater = updater;
}
public IUpdateModel Updater { get; set; }
}
}

View File

@@ -1,9 +0,0 @@
namespace Orchard.Models.Driver {
public class UpdateModelContext : GetModelEditorsContext {
public UpdateModelContext(ContentItem contentItem, IModelUpdater updater) : base(contentItem) {
Updater = updater;
}
public IModelUpdater Updater { get; set; }
}
}

View File

@@ -1,12 +1,5 @@
namespace Orchard.Models { namespace Orchard.Models {
public interface IContentItemPart { public interface IContentItemPart {
ContentItem ContentItem { get; set; } ContentItem ContentItem { get; set; }
//int Id { get; }
//string ModelType { get; }
//bool Is<T>() where T : class, IContentItemPart;
//T As<T>() where T : class, IContentItemPart;
//void Weld(IContentItemPart part);
} }
} }

View File

@@ -9,6 +9,6 @@ namespace Orchard.Models {
void Create(ContentItem contentItem); void Create(ContentItem contentItem);
IEnumerable<ModelTemplate> GetEditors(ContentItem contentItem); IEnumerable<ModelTemplate> GetEditors(ContentItem contentItem);
IEnumerable<ModelTemplate> UpdateEditors(ContentItem contentItem, IModelUpdater updater); IEnumerable<ModelTemplate> UpdateEditors(ContentItem contentItem, IUpdateModel updater);
} }
} }

View File

@@ -124,12 +124,12 @@
<Compile Include="Localization\Localizer.cs" /> <Compile Include="Localization\Localizer.cs" />
<Compile Include="Localization\LocalizedString.cs" /> <Compile Include="Localization\LocalizedString.cs" />
<Compile Include="Localization\NullLocalizer.cs" /> <Compile Include="Localization\NullLocalizer.cs" />
<Compile Include="Models\Driver\ActivatedModelContext.cs" /> <Compile Include="Models\Driver\ActivatedContentContext.cs" />
<Compile Include="Models\Driver\ActivatingFilter.cs" /> <Compile Include="Models\Driver\ActivatingFilter.cs" />
<Compile Include="Models\Driver\IModelActivatingFilter.cs" /> <Compile Include="Models\Driver\IContentActivatingFilter.cs" />
<Compile Include="Models\Driver\IModelFilter.cs" /> <Compile Include="Models\Driver\IContentFilter.cs" />
<Compile Include="Models\Driver\IModelStorageFilter.cs" /> <Compile Include="Models\Driver\IContentStorageFilter.cs" />
<Compile Include="Models\Driver\IModelUpdater.cs" /> <Compile Include="Models\Driver\IUpdateModel.cs" />
<Compile Include="Environment\ServiceLocator.cs" /> <Compile Include="Environment\ServiceLocator.cs" />
<Compile Include="Logging\CastleLogger.cs" /> <Compile Include="Logging\CastleLogger.cs" />
<Compile Include="Logging\CastleLoggerFactory.cs" /> <Compile Include="Logging\CastleLoggerFactory.cs" />
@@ -140,16 +140,16 @@
<Compile Include="Logging\NullLogger.cs" /> <Compile Include="Logging\NullLogger.cs" />
<Compile Include="Logging\NullLoggerFactory.cs" /> <Compile Include="Logging\NullLoggerFactory.cs" />
<Compile Include="Models\DefaultContentManager.cs" /> <Compile Include="Models\DefaultContentManager.cs" />
<Compile Include="Models\Driver\CreateModelContext.cs" /> <Compile Include="Models\Driver\CreateContentContext.cs" />
<Compile Include="Models\Driver\LoadModelContext.cs" /> <Compile Include="Models\Driver\LoadContentContext.cs" />
<Compile Include="Models\Driver\ContentItemBuilder.cs" /> <Compile Include="Models\Driver\ContentItemBuilder.cs" />
<Compile Include="Models\Driver\ModelDriver.cs" /> <Compile Include="Models\Driver\ContentHandler.cs" />
<Compile Include="Models\Driver\ActivatingModelContext.cs" /> <Compile Include="Models\Driver\ActivatingContentContext.cs" />
<Compile Include="Models\Driver\GetModelEditorsContext.cs" /> <Compile Include="Models\Driver\GetContentEditorsContext.cs" />
<Compile Include="Models\Driver\StorageFilterForRecord.cs" /> <Compile Include="Models\Driver\StorageFilterForRecord.cs" />
<Compile Include="Models\Driver\StorageFilterBase.cs" /> <Compile Include="Models\Driver\StorageFilterBase.cs" />
<Compile Include="Models\IContentManager.cs" /> <Compile Include="Models\IContentManager.cs" />
<Compile Include="Models\Driver\IModelDriver.cs" /> <Compile Include="Models\Driver\IContentHandler.cs" />
<Compile Include="Models\ContentExtensions.cs" /> <Compile Include="Models\ContentExtensions.cs" />
<Compile Include="Models\ContentItemPart.cs" /> <Compile Include="Models\ContentItemPart.cs" />
<Compile Include="Models\IContentItemPart.cs" /> <Compile Include="Models\IContentItemPart.cs" />
@@ -158,7 +158,7 @@
<Compile Include="Models\Records\ContentPartRecordBase.cs" /> <Compile Include="Models\Records\ContentPartRecordBase.cs" />
<Compile Include="Models\Records\ContentTypeRecord.cs" /> <Compile Include="Models\Records\ContentTypeRecord.cs" />
<Compile Include="Models\Records\ContentItemRecord.cs" /> <Compile Include="Models\Records\ContentItemRecord.cs" />
<Compile Include="Models\Driver\UpdateModelContext.cs" /> <Compile Include="Models\Driver\UpdateContentContext.cs" />
<Compile Include="Mvc\Html\HtmlHelperExtensions.cs" /> <Compile Include="Mvc\Html\HtmlHelperExtensions.cs" />
<Compile Include="Mvc\Filters\FilterProvider.cs" /> <Compile Include="Mvc\Filters\FilterProvider.cs" />
<Compile Include="Mvc\Filters\FilterResolvingActionInvoker.cs" /> <Compile Include="Mvc\Filters\FilterResolvingActionInvoker.cs" />