diff --git a/src/Orchard.Core.Tests/Common/Providers/CommonAspectProviderTests.cs b/src/Orchard.Core.Tests/Common/Providers/CommonAspectProviderTests.cs index 73cbde057..210d12203 100644 --- a/src/Orchard.Core.Tests/Common/Providers/CommonAspectProviderTests.cs +++ b/src/Orchard.Core.Tests/Common/Providers/CommonAspectProviderTests.cs @@ -6,6 +6,7 @@ using JetBrains.Annotations; using Moq; using NUnit.Framework; using Orchard.ContentManagement.Aspects; +using Orchard.ContentManagement.MetaData; using Orchard.Core.Common; using Orchard.Core.Common.Handlers; using Orchard.Core.Common.Models; @@ -25,6 +26,7 @@ namespace Orchard.Core.Tests.Common.Providers { private Mock _authn; private Mock _authz; private Mock _membership; + private Mock _contentDefinitionManager; public override void Register(ContainerBuilder builder) { builder.RegisterType().As(); @@ -35,11 +37,12 @@ namespace Orchard.Core.Tests.Common.Providers { _authn = new Mock(); _authz = new Mock(); _membership = new Mock(); + _contentDefinitionManager = new Mock(); builder.RegisterInstance(_authn.Object); builder.RegisterInstance(_authz.Object); builder.RegisterInstance(_membership.Object); - + builder.RegisterInstance(_contentDefinitionManager.Object); } protected override IEnumerable DatabaseTypes { diff --git a/src/Orchard.Core.Tests/Common/Services/RoutableServiceTests.cs b/src/Orchard.Core.Tests/Common/Services/RoutableServiceTests.cs index 695589dbb..51d5af0d7 100644 --- a/src/Orchard.Core.Tests/Common/Services/RoutableServiceTests.cs +++ b/src/Orchard.Core.Tests/Common/Services/RoutableServiceTests.cs @@ -2,10 +2,12 @@ using System.Collections.Generic; using Autofac; using JetBrains.Annotations; +using Moq; using NUnit.Framework; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; using Orchard.ContentManagement.Handlers; +using Orchard.ContentManagement.MetaData; using Orchard.ContentManagement.Records; using Orchard.Core.Common.Models; using Orchard.Core.Common.Services; @@ -27,6 +29,7 @@ namespace Orchard.Core.Tests.Common.Services { public override void Register(ContainerBuilder builder) { builder.RegisterType().As(); builder.RegisterType().As(); + builder.RegisterInstance(new Mock().Object); builder.RegisterType().As(); builder.RegisterType().As(); diff --git a/src/Orchard.Core.Tests/Feeds/Controllers/FeedControllerTests.cs b/src/Orchard.Core.Tests/Feeds/Controllers/FeedControllerTests.cs index e8cdd485a..3970d40f7 100644 --- a/src/Orchard.Core.Tests/Feeds/Controllers/FeedControllerTests.cs +++ b/src/Orchard.Core.Tests/Feeds/Controllers/FeedControllerTests.cs @@ -9,6 +9,8 @@ using Moq; using NUnit.Framework; using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; +using Orchard.ContentManagement.MetaData.Builders; +using Orchard.ContentManagement.MetaData.Models; using Orchard.Core.Common.Models; using Orchard.Core.Feeds; using Orchard.Core.Feeds.Controllers; @@ -145,7 +147,7 @@ namespace Orchard.Core.Tests.Feeds.Controllers { [Test] public void CorePartValuesAreExtracted() { var clock = new StubClock(); - var hello = new ContentItemBuilder("hello") + var hello = new ContentItemBuilder(new ContentTypeDefinitionBuilder().Named("hello").Build()) .Weld() .Weld() .Weld() diff --git a/src/Orchard.Core.Tests/Scheduling/ScheduledTaskExecutorTests.cs b/src/Orchard.Core.Tests/Scheduling/ScheduledTaskExecutorTests.cs index cf3d73786..485167ce4 100644 --- a/src/Orchard.Core.Tests/Scheduling/ScheduledTaskExecutorTests.cs +++ b/src/Orchard.Core.Tests/Scheduling/ScheduledTaskExecutorTests.cs @@ -4,6 +4,7 @@ using Autofac; using Moq; using NUnit.Framework; using Orchard.ContentManagement; +using Orchard.ContentManagement.MetaData; using Orchard.ContentManagement.Records; using Orchard.Core.Scheduling.Models; using Orchard.Core.Scheduling.Services; @@ -29,6 +30,7 @@ namespace Orchard.Core.Tests.Scheduling { builder.RegisterInstance(new Mock().Object); builder.RegisterType().As(); builder.RegisterType().As(); + builder.RegisterInstance(new Mock().Object); builder.RegisterType().As().Named("ScheduledTaskExecutor", typeof(IBackgroundTask)); builder.RegisterInstance(_handler).As(); diff --git a/src/Orchard.Core.Tests/Scheduling/ScheduledTaskManagerTests.cs b/src/Orchard.Core.Tests/Scheduling/ScheduledTaskManagerTests.cs index fe58b9a06..e67d666f5 100644 --- a/src/Orchard.Core.Tests/Scheduling/ScheduledTaskManagerTests.cs +++ b/src/Orchard.Core.Tests/Scheduling/ScheduledTaskManagerTests.cs @@ -5,6 +5,7 @@ using Autofac; using Moq; using NUnit.Framework; using Orchard.ContentManagement; +using Orchard.ContentManagement.MetaData; using Orchard.ContentManagement.Records; using Orchard.Core.Scheduling.Models; using Orchard.Core.Scheduling.Services; @@ -33,6 +34,7 @@ namespace Orchard.Core.Tests.Scheduling { builder.RegisterInstance(_mockServices.Object); builder.RegisterType().As(); builder.RegisterType().As(); + builder.RegisterInstance(new Mock().Object); builder.RegisterType().As(); } diff --git a/src/Orchard.Tests/ContentManagement/ContentQueryTests.cs b/src/Orchard.Tests/ContentManagement/ContentQueryTests.cs index 8b37ebe65..031108e64 100644 --- a/src/Orchard.Tests/ContentManagement/ContentQueryTests.cs +++ b/src/Orchard.Tests/ContentManagement/ContentQueryTests.cs @@ -1,7 +1,9 @@ using System.Linq; using Autofac; +using Moq; using NHibernate; using NUnit.Framework; +using Orchard.ContentManagement.MetaData; using Orchard.Data; using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; @@ -44,6 +46,7 @@ namespace Orchard.Tests.ContentManagement { builder.RegisterModule(new ContentModule()); builder.RegisterType().As().SingleInstance(); builder.RegisterType().As(); + builder.RegisterInstance(new Mock().Object); builder.RegisterType().As(); builder.RegisterType().As(); diff --git a/src/Orchard.Tests/ContentManagement/DefaultContentManagerTests.cs b/src/Orchard.Tests/ContentManagement/DefaultContentManagerTests.cs index 36de12e5d..5a0397f76 100644 --- a/src/Orchard.Tests/ContentManagement/DefaultContentManagerTests.cs +++ b/src/Orchard.Tests/ContentManagement/DefaultContentManagerTests.cs @@ -2,8 +2,11 @@ using System.Diagnostics; using System.Linq; using Autofac; +using Moq; using NHibernate; using NUnit.Framework; +using Orchard.ContentManagement.MetaData; +using Orchard.ContentManagement.MetaData.Builders; using Orchard.Data; using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; @@ -18,6 +21,7 @@ namespace Orchard.Tests.ContentManagement { private IContentManager _manager; private ISessionFactory _sessionFactory; private ISession _session; + private Mock _contentDefinitionManager; [TestFixtureSetUp] public void InitFixture() { @@ -39,10 +43,12 @@ namespace Orchard.Tests.ContentManagement { [SetUp] public void Init() { + _contentDefinitionManager = new Mock(); + var builder = new ContainerBuilder(); - //builder.RegisterModule(new ImplicitCollectionSupportModule()); builder.RegisterType().As(); builder.RegisterType().As(); + builder.RegisterInstance(_contentDefinitionManager.Object); builder.RegisterType().As(); builder.RegisterType().As(); @@ -459,6 +465,40 @@ namespace Orchard.Tests.ContentManagement { Assert.That(gammas[3].Version, Is.EqualTo(4)); } + [Test] + public void EmptyTypeDefinitionShouldBeCreatedIfNotAlreadyDefined() { + var contentItem = _manager.New("no-such-type"); + Assert.That(contentItem.ContentType, Is.EqualTo("no-such-type")); + Assert.That(contentItem.TypeDefinition, Is.Not.Null); + Assert.That(contentItem.TypeDefinition.Name, Is.EqualTo("no-such-type")); + Assert.That(contentItem.TypeDefinition.Settings.Count(), Is.EqualTo(0)); + Assert.That(contentItem.TypeDefinition.Parts.Count(), Is.EqualTo(0)); + } + + + [Test] + public void ExistingTypeAndPartDefinitionShouldBeUsed() { + var alphaType = new ContentTypeDefinitionBuilder() + .Named("alpha") + .WithSetting("x", "1") + .WithPart("foo") + .WithPart("Flavored", part => part.WithSetting("spin", "clockwise")) + .Build(); + + _contentDefinitionManager + .Setup(x => x.GetTypeDefinition("alpha")) + .Returns(alphaType); + + var contentItem = _manager.New("alpha"); + Assert.That(contentItem.ContentType, Is.EqualTo("alpha")); + Assert.That(contentItem.TypeDefinition, Is.Not.Null); + Assert.That(contentItem.TypeDefinition, Is.SameAs(alphaType)); + + var flavored = contentItem.As(); + Assert.That(flavored, Is.Not.Null); + Assert.That(flavored.TypePartDefinition, Is.Not.Null); + Assert.That(flavored.TypePartDefinition.Settings["spin"], Is.EqualTo("clockwise")); + } } } diff --git a/src/Orchard.Tests/ContentManagement/Handlers/ContentHandlerTests.cs b/src/Orchard.Tests/ContentManagement/Handlers/ContentHandlerTests.cs index c7d7ae087..3f7b302e0 100644 --- a/src/Orchard.Tests/ContentManagement/Handlers/ContentHandlerTests.cs +++ b/src/Orchard.Tests/ContentManagement/Handlers/ContentHandlerTests.cs @@ -1,6 +1,7 @@ using NUnit.Framework; using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; +using Orchard.ContentManagement.MetaData.Builders; namespace Orchard.Tests.ContentManagement.Handlers { @@ -22,7 +23,7 @@ namespace Orchard.Tests.ContentManagement.Handlers { public void PartShouldBeAddedBasedOnSimplePredicate() { var modelDriver = new TestModelHandler(); - var builder = new ContentItemBuilder("testing"); + var builder = new ContentItemBuilder(new ContentTypeDefinitionBuilder().Named("testing").Build()); ((IContentHandler)modelDriver).Activating(new ActivatingContentContext { Builder = builder, ContentType = "testing" }); var model = builder.Build(); Assert.That(model.Is(), Is.True); diff --git a/src/Orchard.Tests/ContentManagement/Handlers/ModelBuilderTests.cs b/src/Orchard.Tests/ContentManagement/Handlers/ModelBuilderTests.cs index ea19ecc5c..ab4aada7e 100644 --- a/src/Orchard.Tests/ContentManagement/Handlers/ModelBuilderTests.cs +++ b/src/Orchard.Tests/ContentManagement/Handlers/ModelBuilderTests.cs @@ -5,6 +5,7 @@ using System.Text; using NUnit.Framework; using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; +using Orchard.ContentManagement.MetaData.Builders; using Orchard.Tests.ContentManagement.Models; namespace Orchard.Tests.ContentManagement.Handlers { @@ -12,21 +13,21 @@ namespace Orchard.Tests.ContentManagement.Handlers { public class ModelBuilderTests { [Test] public void BuilderShouldReturnWorkingModelWithTypeAndId() { - var builder = new ContentItemBuilder("foo"); + var builder = new ContentItemBuilder(new ContentTypeDefinitionBuilder().Named("foo").Build()); var model = builder.Build(); Assert.That(model.ContentType, Is.EqualTo("foo")); } [Test] public void IdShouldDefaultToZero() { - var builder = new ContentItemBuilder("foo"); + var builder = new ContentItemBuilder(new ContentTypeDefinitionBuilder().Named("foo").Build()); var model = builder.Build(); Assert.That(model.Id, Is.EqualTo(0)); } [Test] public void WeldShouldAddPartToModel() { - var builder = new ContentItemBuilder("foo"); + var builder = new ContentItemBuilder(new ContentTypeDefinitionBuilder().Named("foo").Build()); builder.Weld(); var model = builder.Build(); diff --git a/src/Orchard.Web/Core/Routable/Controllers/ItemController.cs b/src/Orchard.Web/Core/Routable/Controllers/ItemController.cs index 82d7ceca0..856f53052 100644 --- a/src/Orchard.Web/Core/Routable/Controllers/ItemController.cs +++ b/src/Orchard.Web/Core/Routable/Controllers/ItemController.cs @@ -24,6 +24,7 @@ namespace Orchard.Core.Routable.Controllers { if (string.IsNullOrEmpty(matchedPath)) { throw new ApplicationException("404 - should not have passed path constraint"); } + var hits = _contentManager .Query(VersionOptions.Published) .Where(r => r.Path == matchedPath) diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Models/UserSimulation.cs b/src/Orchard.Web/Modules/Orchard.Roles/Models/UserSimulation.cs index 1ce3b8d9f..144ebb212 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Models/UserSimulation.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/Models/UserSimulation.cs @@ -1,12 +1,14 @@ using System.Collections.Generic; using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; +using Orchard.ContentManagement.MetaData.Builders; using Orchard.Security; namespace Orchard.Roles.Models { public static class UserSimulation { public static IUser Create(string role) { - var simulation = new ContentItemBuilder("user") + var simulationType = new ContentTypeDefinitionBuilder().Named("user").Build(); + var simulation = new ContentItemBuilder(simulationType) .Weld() .Weld() .Build(); diff --git a/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs b/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs index ab66f8d0d..26c715674 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs @@ -7,6 +7,7 @@ using Orchard.Commands; using Orchard.Commands.Builtin; using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; +using Orchard.ContentManagement.MetaData.Builders; using Orchard.Data.Builders; using Orchard.Environment.Extensions; using Orchard.Localization; @@ -90,7 +91,8 @@ namespace Orchard.Setup { class SafeModeSiteService : ISiteService { public ISite GetSiteSettings() { - var site = new ContentItemBuilder("site") + var siteType = new ContentTypeDefinitionBuilder().Named("site").Build(); + var site = new ContentItemBuilder(siteType) .Weld() .Build(); diff --git a/src/Orchard/ContentManagement/ContentPart.cs b/src/Orchard/ContentManagement/ContentPart.cs index f360ef5bc..8f485aa9a 100644 --- a/src/Orchard/ContentManagement/ContentPart.cs +++ b/src/Orchard/ContentManagement/ContentPart.cs @@ -4,9 +4,9 @@ using Orchard.ContentManagement.Utilities; namespace Orchard.ContentManagement { public abstract class ContentPart : IContent { public virtual ContentItem ContentItem { get; set; } - public ContentTypeDefinition TypeDefinition { get; set; } + public ContentTypeDefinition TypeDefinition { get { return ContentItem.TypeDefinition; } } public ContentTypeDefinition.Part TypePartDefinition { get; set; } - public ContentPartDefinition PartDefinition { get; set; } + public ContentPartDefinition PartDefinition { get { return TypePartDefinition.PartDefinition; } } } public class ContentPart : ContentPart { diff --git a/src/Orchard/ContentManagement/DefaultContentManager.cs b/src/Orchard/ContentManagement/DefaultContentManager.cs index 06b77b4d3..e4e4a6973 100644 --- a/src/Orchard/ContentManagement/DefaultContentManager.cs +++ b/src/Orchard/ContentManagement/DefaultContentManager.cs @@ -3,6 +3,9 @@ using System.Collections.Generic; using System.Linq; using Autofac; using Orchard.ContentManagement.Handlers; +using Orchard.ContentManagement.MetaData; +using Orchard.ContentManagement.MetaData.Builders; +using Orchard.ContentManagement.MetaData.Models; using Orchard.ContentManagement.Records; using Orchard.Data; using Orchard.Mvc.ViewModels; @@ -13,6 +16,7 @@ namespace Orchard.ContentManagement { private readonly IRepository _contentTypeRepository; private readonly IRepository _contentItemRepository; private readonly IRepository _contentItemVersionRepository; + private readonly IContentDefinitionManager _contentDefinitionManager; private readonly Func _contentManagerSession; public DefaultContentManager( @@ -20,11 +24,13 @@ namespace Orchard.ContentManagement { IRepository contentTypeRepository, IRepository contentItemRepository, IRepository contentItemVersionRepository, + IContentDefinitionManager contentDefinitionManager, Func contentManagerSession) { _context = context; _contentTypeRepository = contentTypeRepository; _contentItemRepository = contentItemRepository; _contentItemVersionRepository = contentItemVersionRepository; + _contentDefinitionManager = contentDefinitionManager; _contentManagerSession = contentManagerSession; } @@ -44,11 +50,16 @@ namespace Orchard.ContentManagement { } public virtual ContentItem New(string contentType) { + var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(contentType); + if (contentTypeDefinition == null) { + contentTypeDefinition = new ContentTypeDefinitionBuilder().Named(contentType).Build(); + } // create a new kernel for the model instance var context = new ActivatingContentContext { - ContentType = contentType, - Builder = new ContentItemBuilder(contentType) + ContentType = contentTypeDefinition.Name, + Definition = contentTypeDefinition, + Builder = new ContentItemBuilder(contentTypeDefinition) }; // invoke handlers to weld aspects onto kernel @@ -337,16 +348,16 @@ namespace Orchard.ContentManagement { handler.Created(context); } - if(options.IsPublished) { + if (options.IsPublished) { var publishContext = new PublishContentContext(contentItem, null); // invoke handlers to acquire state, or at least establish lazy loading callbacks - foreach ( var handler in Handlers ) { + foreach (var handler in Handlers) { handler.Publishing(publishContext); } // invoke handlers to acquire state, or at least establish lazy loading callbacks - foreach ( var handler in Handlers ) { + foreach (var handler in Handlers) { handler.Published(publishContext); } } diff --git a/src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs b/src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs index 91b12f342..d399a19fa 100644 --- a/src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs +++ b/src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs @@ -31,19 +31,19 @@ namespace Orchard.ContentManagement.Drivers { return part == null ? null : Editor(part, context.Updater); } - protected virtual DriverResult Display(TContent part, string displayType) {return null;} - protected virtual DriverResult Editor(TContent part) {return null;} - protected virtual DriverResult Editor(TContent part, IUpdateModel updater) {return null;} + protected virtual DriverResult Display(TContent part, string displayType) { return null; } + protected virtual DriverResult Editor(TContent part) { return null; } + protected virtual DriverResult Editor(TContent part, IUpdateModel updater) { return null; } public ContentPartTemplateResult ContentPartTemplate(object model) { return new ContentPartTemplateResult(model, null, Prefix).Location(Zone); } - + public ContentPartTemplateResult ContentPartTemplate(object model, string template) { return new ContentPartTemplateResult(model, template, Prefix).Location(Zone); } - + public ContentPartTemplateResult ContentPartTemplate(object model, string template, string prefix) { return new ContentPartTemplateResult(model, template, prefix).Location(Zone); } @@ -52,11 +52,12 @@ namespace Orchard.ContentManagement.Drivers { return new CombinedResult(results); } - public IEnumerable GetPartInfo() - { - var contentPartInfo = new List() { - new ContentPartInfo() - {PartName = typeof(TContent).Name,Factory = () => new TContent()} + public IEnumerable GetPartInfo() { + var contentPartInfo = new[] { + new ContentPartInfo { + PartName = typeof (TContent).Name, + Factory = typePartDefinition => new TContent {TypePartDefinition = typePartDefinition} + } }; return contentPartInfo; diff --git a/src/Orchard/ContentManagement/Handlers/ActivatingContentContext.cs b/src/Orchard/ContentManagement/Handlers/ActivatingContentContext.cs index de3bb8a8d..3d202465b 100644 --- a/src/Orchard/ContentManagement/Handlers/ActivatingContentContext.cs +++ b/src/Orchard/ContentManagement/Handlers/ActivatingContentContext.cs @@ -1,6 +1,9 @@ +using Orchard.ContentManagement.MetaData.Models; + namespace Orchard.ContentManagement.Handlers { public class ActivatingContentContext { public string ContentType { get; set; } + public ContentTypeDefinition Definition { get; set; } public ContentItemBuilder Builder { get; set; } } } diff --git a/src/Orchard/ContentManagement/Handlers/ContentItemBuilder.cs b/src/Orchard/ContentManagement/Handlers/ContentItemBuilder.cs index fc8449d6c..619558c58 100644 --- a/src/Orchard/ContentManagement/Handlers/ContentItemBuilder.cs +++ b/src/Orchard/ContentManagement/Handlers/ContentItemBuilder.cs @@ -1,9 +1,18 @@ -namespace Orchard.ContentManagement.Handlers { +using System.Collections.Generic; +using System.Linq; +using Orchard.ContentManagement.MetaData.Models; + +namespace Orchard.ContentManagement.Handlers { public class ContentItemBuilder { + private readonly ContentTypeDefinition _definition; private readonly ContentItem _item; - public ContentItemBuilder(string contentType) { - _item = new ContentItem { ContentType = contentType }; + public ContentItemBuilder(ContentTypeDefinition definition) { + _definition = definition; + _item = new ContentItem { + ContentType = definition.Name, + TypeDefinition = definition + }; } public ContentItem Build() { @@ -11,7 +20,18 @@ } public ContentItemBuilder Weld() where TPart : ContentPart, new() { - var part = new TPart(); + var partName = typeof(TPart).Name; + + var typePartDefinition = _definition.Parts.FirstOrDefault(p => p.PartDefinition.Name == partName); + if (typePartDefinition == null) { + typePartDefinition = new ContentTypeDefinition.Part( + new ContentPartDefinition(partName), + new Dictionary()); + } + + var part = new TPart { + TypePartDefinition = typePartDefinition + }; _item.Weld(part); return this; } @@ -20,6 +40,5 @@ _item.Weld(contentPart); return this; } - } } diff --git a/src/Orchard/ContentManagement/MetaData/ContentPartHandler.cs b/src/Orchard/ContentManagement/MetaData/ContentPartHandler.cs index 4a4403115..465ac806d 100644 --- a/src/Orchard/ContentManagement/MetaData/ContentPartHandler.cs +++ b/src/Orchard/ContentManagement/MetaData/ContentPartHandler.cs @@ -14,14 +14,15 @@ namespace Orchard.ContentManagement.MetaData { } public override void Activating(ActivatingContentContext context) { - var contentTypeRecord = _contentDefinitionManager.GetTypeDefinition(context.ContentType); - if (contentTypeRecord == null) + var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(context.ContentType); + if (contentTypeDefinition == null) return; - foreach(var partInfo in _contentPartDrivers.SelectMany(cpp => cpp.GetPartInfo())) { + foreach (var partInfo in _contentPartDrivers.SelectMany(cpp => cpp.GetPartInfo())) { var partName = partInfo.PartName; - if (contentTypeRecord.Parts.Any(p=>p.PartDefinition.Name == partName)) { - context.Builder.Weld(partInfo.Factory()); + var typePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.PartDefinition.Name == partName); + if (typePartDefinition != null) { + context.Builder.Weld(partInfo.Factory(typePartDefinition)); } } } diff --git a/src/Orchard/ContentManagement/MetaData/ContentPartInfo.cs b/src/Orchard/ContentManagement/MetaData/ContentPartInfo.cs index 23a731cbf..a7c8c190a 100644 --- a/src/Orchard/ContentManagement/MetaData/ContentPartInfo.cs +++ b/src/Orchard/ContentManagement/MetaData/ContentPartInfo.cs @@ -1,10 +1,9 @@ using System; +using Orchard.ContentManagement.MetaData.Models; -namespace Orchard.ContentManagement.MetaData -{ - public class ContentPartInfo - { +namespace Orchard.ContentManagement.MetaData { + public class ContentPartInfo { public string PartName { get; set; } - public Func Factory { get; set; } + public Func Factory { get; set; } } }