mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Moving around some handler/driver machinary
Relocating IContentHandler imlementations that power IContentXxxDriver interfaces Giving them component role suffix Coordinator Merging two handlers into one content part driver coordinator --HG-- branch : dev
This commit is contained in:
@@ -5,21 +5,24 @@ using Moq;
|
|||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using Orchard.ContentManagement;
|
using Orchard.ContentManagement;
|
||||||
using Orchard.ContentManagement.Drivers;
|
using Orchard.ContentManagement.Drivers;
|
||||||
|
using Orchard.ContentManagement.Drivers.Coordinators;
|
||||||
using Orchard.ContentManagement.Handlers;
|
using Orchard.ContentManagement.Handlers;
|
||||||
using Orchard.Environment.AutofacUtil;
|
using Orchard.Environment.AutofacUtil;
|
||||||
using Orchard.Mvc.ViewModels;
|
using Orchard.Mvc.ViewModels;
|
||||||
|
using Orchard.Tests.Utility;
|
||||||
using Orchard.UI.Zones;
|
using Orchard.UI.Zones;
|
||||||
|
|
||||||
namespace Orchard.Tests.ContentManagement {
|
namespace Orchard.Tests.ContentManagement.Handlers.Coordinators {
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class ContentPartDriverHandlerTests {
|
public class ContentPartDriverCoordinatorTests {
|
||||||
private IContainer _container;
|
private IContainer _container;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Init() {
|
public void Init() {
|
||||||
var builder = new ContainerBuilder();
|
var builder = new ContainerBuilder();
|
||||||
//builder.RegisterModule(new ImplicitCollectionSupportModule());
|
//builder.RegisterModule(new ImplicitCollectionSupportModule());
|
||||||
builder.RegisterType<ContentPartDriverHandler>().As<IContentHandler>();
|
builder.RegisterType<ContentPartDriverCoordinator>().As<IContentHandler>();
|
||||||
|
builder.RegisterAutoMocking();
|
||||||
_container = builder.Build();
|
_container = builder.Build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
<Compile Include="ContentManagement\Models\Phi.cs" />
|
<Compile Include="ContentManagement\Models\Phi.cs" />
|
||||||
<Compile Include="ContentManagement\Models\Styled.cs" />
|
<Compile Include="ContentManagement\Models\Styled.cs" />
|
||||||
<Compile Include="ContentManagement\Models\StyledHandler.cs" />
|
<Compile Include="ContentManagement\Models\StyledHandler.cs" />
|
||||||
<Compile Include="ContentManagement\ContentPartDriverHandlerTests.cs">
|
<Compile Include="ContentManagement\Handlers\Coordinators\ContentPartDriverCoordinatorTests.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ContentManagement\Records\DeltaRecord.cs">
|
<Compile Include="ContentManagement\Records\DeltaRecord.cs">
|
||||||
|
|||||||
@@ -7,16 +7,14 @@ using Orchard.Localization;
|
|||||||
using Orchard.Localization.Services;
|
using Orchard.Localization.Services;
|
||||||
using Orchard.ContentManagement;
|
using Orchard.ContentManagement;
|
||||||
|
|
||||||
namespace Orchard.Search.Services
|
namespace Orchard.Search.Services {
|
||||||
{
|
public class SearchService : ISearchService {
|
||||||
public class SearchService : ISearchService
|
private readonly IIndexManager _indexManager;
|
||||||
{
|
|
||||||
private readonly IContentManager _contentManager;
|
|
||||||
private readonly ICultureManager _cultureManager;
|
private readonly ICultureManager _cultureManager;
|
||||||
|
|
||||||
public SearchService(IOrchardServices services, IContentManager contentManager, ICultureManager cultureManager) {
|
public SearchService(IOrchardServices services, IIndexManager indexManager, ICultureManager cultureManager) {
|
||||||
Services = services;
|
Services = services;
|
||||||
_contentManager = contentManager;
|
_indexManager = indexManager;
|
||||||
_cultureManager = cultureManager;
|
_cultureManager = cultureManager;
|
||||||
T = NullLocalizer.Instance;
|
T = NullLocalizer.Instance;
|
||||||
}
|
}
|
||||||
@@ -24,14 +22,20 @@ namespace Orchard.Search.Services
|
|||||||
public IOrchardServices Services { get; set; }
|
public IOrchardServices Services { get; set; }
|
||||||
public Localizer T { get; set; }
|
public Localizer T { get; set; }
|
||||||
|
|
||||||
|
ISearchBuilder Search() {
|
||||||
|
return _indexManager.HasIndexProvider()
|
||||||
|
? _indexManager.GetSearchIndexProvider().CreateSearchBuilder("Search")
|
||||||
|
: new NullSearchBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
IPageOfItems<T> ISearchService.Query<T>(string query, int page, int? pageSize, bool filterCulture, string[] searchFields, Func<ISearchHit, T> shapeResult) {
|
IPageOfItems<T> ISearchService.Query<T>(string query, int page, int? pageSize, bool filterCulture, string[] searchFields, Func<ISearchHit, T> shapeResult) {
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(query))
|
if (string.IsNullOrWhiteSpace(query))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var searchBuilder = _contentManager.Search().Parse(searchFields, query);
|
var searchBuilder = Search().Parse(searchFields, query);
|
||||||
|
|
||||||
if ( filterCulture ) {
|
if (filterCulture) {
|
||||||
var culture = _cultureManager.GetSiteCulture();
|
var culture = _cultureManager.GetSiteCulture();
|
||||||
|
|
||||||
// use LCID as the text representation gets analyzed by the query parser
|
// use LCID as the text representation gets analyzed by the query parser
|
||||||
@@ -48,7 +52,7 @@ namespace Orchard.Search.Services
|
|||||||
|
|
||||||
var pageOfItems = new PageOfItems<T>(searchBuilder.Search().Select(shapeResult)) {
|
var pageOfItems = new PageOfItems<T>(searchBuilder.Search().Select(shapeResult)) {
|
||||||
PageNumber = page,
|
PageNumber = page,
|
||||||
PageSize = pageSize != null ? (int) pageSize : totalCount,
|
PageSize = pageSize != null ? (int)pageSize : totalCount,
|
||||||
TotalItemCount = totalCount
|
TotalItemCount = totalCount
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ namespace Orchard.ContentManagement {
|
|||||||
private readonly IRepository<ContentItemVersionRecord> _contentItemVersionRepository;
|
private readonly IRepository<ContentItemVersionRecord> _contentItemVersionRepository;
|
||||||
private readonly IContentDefinitionManager _contentDefinitionManager;
|
private readonly IContentDefinitionManager _contentDefinitionManager;
|
||||||
private readonly Func<IContentManagerSession> _contentManagerSession;
|
private readonly Func<IContentManagerSession> _contentManagerSession;
|
||||||
private readonly IIndexManager _indexManager;
|
|
||||||
|
|
||||||
public DefaultContentManager(
|
public DefaultContentManager(
|
||||||
IComponentContext context,
|
IComponentContext context,
|
||||||
@@ -26,15 +25,13 @@ namespace Orchard.ContentManagement {
|
|||||||
IRepository<ContentItemRecord> contentItemRepository,
|
IRepository<ContentItemRecord> contentItemRepository,
|
||||||
IRepository<ContentItemVersionRecord> contentItemVersionRepository,
|
IRepository<ContentItemVersionRecord> contentItemVersionRepository,
|
||||||
IContentDefinitionManager contentDefinitionManager,
|
IContentDefinitionManager contentDefinitionManager,
|
||||||
Func<IContentManagerSession> contentManagerSession,
|
Func<IContentManagerSession> contentManagerSession) {
|
||||||
IIndexManager indexManager) {
|
|
||||||
_context = context;
|
_context = context;
|
||||||
_contentTypeRepository = contentTypeRepository;
|
_contentTypeRepository = contentTypeRepository;
|
||||||
_contentItemRepository = contentItemRepository;
|
_contentItemRepository = contentItemRepository;
|
||||||
_contentItemVersionRepository = contentItemVersionRepository;
|
_contentItemVersionRepository = contentItemVersionRepository;
|
||||||
_contentDefinitionManager = contentDefinitionManager;
|
_contentDefinitionManager = contentDefinitionManager;
|
||||||
_contentManagerSession = contentManagerSession;
|
_contentManagerSession = contentManagerSession;
|
||||||
_indexManager = indexManager;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<IContentHandler> _handlers;
|
private IEnumerable<IContentHandler> _handlers;
|
||||||
@@ -447,10 +444,10 @@ namespace Orchard.ContentManagement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ISearchBuilder Search() {
|
//public ISearchBuilder Search() {
|
||||||
return _indexManager.HasIndexProvider()
|
// return _indexManager.HasIndexProvider()
|
||||||
? _indexManager.GetSearchIndexProvider().CreateSearchBuilder("Search")
|
// ? _indexManager.GetSearchIndexProvider().CreateSearchBuilder("Search")
|
||||||
: new NullSearchBuilder();
|
// : new NullSearchBuilder();
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ using JetBrains.Annotations;
|
|||||||
using Orchard.ContentManagement.Handlers;
|
using Orchard.ContentManagement.Handlers;
|
||||||
using Orchard.Logging;
|
using Orchard.Logging;
|
||||||
|
|
||||||
namespace Orchard.ContentManagement.Drivers {
|
namespace Orchard.ContentManagement.Drivers.Coordinators {
|
||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public class ContentFieldDriverHandler : ContentHandlerBase {
|
public class ContentFieldDriverCoordinator : ContentHandlerBase {
|
||||||
private readonly IEnumerable<IContentFieldDriver> _drivers;
|
private readonly IEnumerable<IContentFieldDriver> _drivers;
|
||||||
|
|
||||||
public ContentFieldDriverHandler(IEnumerable<IContentFieldDriver> drivers) {
|
public ContentFieldDriverCoordinator(IEnumerable<IContentFieldDriver> drivers) {
|
||||||
_drivers = drivers;
|
_drivers = drivers;
|
||||||
Logger = NullLogger.Instance;
|
Logger = NullLogger.Instance;
|
||||||
}
|
}
|
||||||
@@ -3,12 +3,12 @@ using JetBrains.Annotations;
|
|||||||
using Orchard.ContentManagement.Handlers;
|
using Orchard.ContentManagement.Handlers;
|
||||||
using Orchard.Logging;
|
using Orchard.Logging;
|
||||||
|
|
||||||
namespace Orchard.ContentManagement.Drivers {
|
namespace Orchard.ContentManagement.Drivers.Coordinators {
|
||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public class ContentItemDriverHandler : ContentHandlerBase {
|
public class ContentItemDriverCoordinator : ContentHandlerBase {
|
||||||
private readonly IEnumerable<IContentItemDriver> _drivers;
|
private readonly IEnumerable<IContentItemDriver> _drivers;
|
||||||
|
|
||||||
public ContentItemDriverHandler(IEnumerable<IContentItemDriver> drivers) {
|
public ContentItemDriverCoordinator(IEnumerable<IContentItemDriver> drivers) {
|
||||||
_drivers = drivers;
|
_drivers = drivers;
|
||||||
Logger = NullLogger.Instance;
|
Logger = NullLogger.Instance;
|
||||||
}
|
}
|
||||||
@@ -1,19 +1,37 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Orchard.ContentManagement.Handlers;
|
using Orchard.ContentManagement.Handlers;
|
||||||
|
using Orchard.ContentManagement.MetaData;
|
||||||
using Orchard.Logging;
|
using Orchard.Logging;
|
||||||
|
|
||||||
namespace Orchard.ContentManagement.Drivers {
|
namespace Orchard.ContentManagement.Drivers.Coordinators {
|
||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public class ContentPartDriverHandler : ContentHandlerBase {
|
public class ContentPartDriverCoordinator : ContentHandlerBase {
|
||||||
private readonly IEnumerable<IContentPartDriver> _drivers;
|
private readonly IEnumerable<IContentPartDriver> _drivers;
|
||||||
|
private readonly IContentDefinitionManager _contentDefinitionManager;
|
||||||
|
|
||||||
public ContentPartDriverHandler(IEnumerable<IContentPartDriver> drivers) {
|
public ContentPartDriverCoordinator(IEnumerable<IContentPartDriver> drivers, IContentDefinitionManager contentDefinitionManager) {
|
||||||
_drivers = drivers;
|
_drivers = drivers;
|
||||||
|
_contentDefinitionManager = contentDefinitionManager;
|
||||||
Logger = NullLogger.Instance;
|
Logger = NullLogger.Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ILogger Logger { get; set; }
|
public ILogger Logger { get; set; }
|
||||||
|
|
||||||
|
public override void Activating(ActivatingContentContext context) {
|
||||||
|
var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(context.ContentType);
|
||||||
|
if (contentTypeDefinition == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
foreach (var partInfo in _drivers.SelectMany(cpp => cpp.GetPartInfo())) {
|
||||||
|
var partName = partInfo.PartName;
|
||||||
|
var typePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.PartDefinition.Name == partName);
|
||||||
|
if (typePartDefinition != null) {
|
||||||
|
context.Builder.Weld(partInfo.Factory(typePartDefinition));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override void BuildDisplayModel(BuildDisplayModelContext context) {
|
public override void BuildDisplayModel(BuildDisplayModelContext context) {
|
||||||
_drivers.Invoke(driver => {
|
_drivers.Invoke(driver => {
|
||||||
@@ -20,7 +20,6 @@ namespace Orchard.ContentManagement {
|
|||||||
void Remove(ContentItem contentItem);
|
void Remove(ContentItem contentItem);
|
||||||
void Index(ContentItem contentItem, IDocumentIndex documentIndex);
|
void Index(ContentItem contentItem, IDocumentIndex documentIndex);
|
||||||
|
|
||||||
ISearchBuilder Search();
|
|
||||||
|
|
||||||
void Flush();
|
void Flush();
|
||||||
IContentQuery<ContentItem> Query();
|
IContentQuery<ContentItem> Query();
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using Orchard.ContentManagement.Handlers;
|
|
||||||
using Orchard.ContentManagement.Drivers;
|
|
||||||
|
|
||||||
namespace Orchard.ContentManagement.MetaData {
|
|
||||||
public class ContentPartHandler : ContentHandlerBase {
|
|
||||||
private readonly IEnumerable<IContentPartDriver> _contentPartDrivers;
|
|
||||||
private readonly IContentDefinitionManager _contentDefinitionManager;
|
|
||||||
|
|
||||||
public ContentPartHandler(IEnumerable<IContentPartDriver> contentPartDrivers, IContentDefinitionManager contentDefinitionManager) {
|
|
||||||
_contentPartDrivers = contentPartDrivers;
|
|
||||||
_contentDefinitionManager = contentDefinitionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Activating(ActivatingContentContext context) {
|
|
||||||
var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(context.ContentType);
|
|
||||||
if (contentTypeDefinition == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
foreach (var partInfo in _contentPartDrivers.SelectMany(cpp => cpp.GetPartInfo())) {
|
|
||||||
var partName = partInfo.PartName;
|
|
||||||
var typePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.PartDefinition.Name == partName);
|
|
||||||
if (typePartDefinition != null) {
|
|
||||||
context.Builder.Weld(partInfo.Factory(typePartDefinition));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -172,11 +172,11 @@
|
|||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ContentManagement\Drivers\ContentFieldDriver.cs" />
|
<Compile Include="ContentManagement\Drivers\ContentFieldDriver.cs" />
|
||||||
<Compile Include="ContentManagement\Drivers\ContentFieldDriverHandler.cs" />
|
<Compile Include="ContentManagement\Drivers\Coordinators\ContentFieldDriverCoordinator.cs" />
|
||||||
<Compile Include="ContentManagement\Drivers\ContentItemDriver.cs">
|
<Compile Include="ContentManagement\Drivers\ContentItemDriver.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ContentManagement\Drivers\ContentItemDriverHandler.cs">
|
<Compile Include="ContentManagement\Drivers\Coordinators\ContentItemDriverCoordinator.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ContentManagement\Drivers\ContentItemTemplateResult.cs">
|
<Compile Include="ContentManagement\Drivers\ContentItemTemplateResult.cs">
|
||||||
@@ -185,7 +185,7 @@
|
|||||||
<Compile Include="ContentManagement\Drivers\ContentPartDriver.cs">
|
<Compile Include="ContentManagement\Drivers\ContentPartDriver.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ContentManagement\Drivers\ContentPartDriverHandler.cs">
|
<Compile Include="ContentManagement\Drivers\Coordinators\ContentPartDriverCoordinator.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ContentManagement\Drivers\ContentTemplateResult.cs" />
|
<Compile Include="ContentManagement\Drivers\ContentTemplateResult.cs" />
|
||||||
@@ -299,9 +299,6 @@
|
|||||||
<Compile Include="ContentManagement\MetaData\Builders\ContentPartDefinitionBuilder.cs" />
|
<Compile Include="ContentManagement\MetaData\Builders\ContentPartDefinitionBuilder.cs" />
|
||||||
<Compile Include="ContentManagement\MetaData\Builders\ContentTypeDefinitionBuilder.cs" />
|
<Compile Include="ContentManagement\MetaData\Builders\ContentTypeDefinitionBuilder.cs" />
|
||||||
<Compile Include="ContentManagement\MetaData\ContentFieldInfo.cs" />
|
<Compile Include="ContentManagement\MetaData\ContentFieldInfo.cs" />
|
||||||
<Compile Include="ContentManagement\MetaData\ContentPartHandler.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="ContentManagement\MetaData\ContentPartInfo.cs">
|
<Compile Include="ContentManagement\MetaData\ContentPartInfo.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|||||||
Reference in New Issue
Block a user