Corrected interface name.

Potentially breaking, but I highly doubt anyone implemented this interface.
This commit is contained in:
Sipke Schoorstra 2015-08-21 23:14:37 +01:00
parent 73683ec057
commit 811001143e
9 changed files with 80 additions and 8 deletions

View File

@ -2,7 +2,7 @@
using Orchard.Layouts.Framework.Elements;
namespace Orchard.Layouts.Framework.Harvesters {
public interface ElementHarvester : ISingletonDependency {
public interface IElementHarvester : ISingletonDependency {
IEnumerable<ElementDescriptor> HarvestElements(HarvestElementsContext context);
}
}

View File

@ -367,6 +367,7 @@
<Compile Include="Helpers\PrefixHelper.cs" />
<Compile Include="Helpers\JsonHelper.cs" />
<Compile Include="Helpers\StringHelper.cs" />
<Compile Include="Providers\WidgetElementHarvester.cs" />
<Compile Include="Recipes\Builders\CustomElementsStep.cs" />
<Compile Include="Recipes\Executors\CustomElementsStep.cs" />
<Compile Include="Providers\BlueprintElementHarvester.cs" />

View File

@ -10,7 +10,7 @@ using Orchard.Layouts.Models;
using Orchard.Layouts.Services;
namespace Orchard.Layouts.Providers {
public class BlueprintElementHarvester : Component, ElementHarvester {
public class BlueprintElementHarvester : Component, IElementHarvester {
private readonly Work<IElementBlueprintService> _elementBlueprintService;
private readonly Work<IElementManager> _elementManager;
private bool _isHarvesting;

View File

@ -13,7 +13,7 @@ using Orchard.Layouts.Helpers;
using Orchard.Layouts.Services;
namespace Orchard.Layouts.Providers {
public class ContentFieldElementHarvester : Component, ElementHarvester {
public class ContentFieldElementHarvester : Component, IElementHarvester {
private readonly Work<IContentDefinitionManager> _contentDefinitionManager;
private readonly Work<ITransactionManager> _transactionManager;
private readonly Work<ICultureAccessor> _cultureAccessor;

View File

@ -13,7 +13,7 @@ using Orchard.Layouts.Settings;
using Orchard.Utility.Extensions;
namespace Orchard.Layouts.Providers {
public class ContentPartElementHarvester : Component, ElementHarvester {
public class ContentPartElementHarvester : Component, IElementHarvester {
private readonly Work<IContentDefinitionManager> _contentDefinitionManager;
private readonly Work<IElementFactory> _elementFactory;
private readonly Work<IElementManager> _elementManager;

View File

@ -16,7 +16,7 @@ using Orchard.Utility.Extensions;
namespace Orchard.Layouts.Providers {
[OrchardFeature("Orchard.Layouts.Snippets")]
public class SnippetElementHarvester : Component, ElementHarvester {
public class SnippetElementHarvester : Component, IElementHarvester {
private const string SnippetShapeSuffix = "Snippet";
private readonly Work<IShapeFactory> _shapeFactory;
private readonly Work<ISiteThemeService> _siteThemeService;

View File

@ -6,7 +6,7 @@ using Orchard.Layouts.Framework.Harvesters;
using Orchard.Layouts.Services;
namespace Orchard.Layouts.Providers {
public class TypedElementHarvester : ElementHarvester {
public class TypedElementHarvester : IElementHarvester {
private readonly Work<IElementManager> _elementManager;
private readonly Work<IElementFactory> _factory;

View File

@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Orchard.ContentManagement.MetaData;
using Orchard.ContentManagement.MetaData.Models;
using Orchard.Core.Contents.Settings;
using Orchard.Environment;
using Orchard.Layouts.Framework.Display;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Framework.Harvesters;
using Orchard.Layouts.Services;
using Orchard.Layouts.Settings;
using Orchard.Utility.Extensions;
namespace Orchard.Layouts.Providers {
public class WidgetElementHarvester : Component, IElementHarvester {
private readonly Work<IContentDefinitionManager> _contentDefinitionManager;
private readonly Work<IElementFactory> _elementFactory;
private readonly Work<IElementManager> _elementManager;
public WidgetElementHarvester(
Work<IContentDefinitionManager> contentDefinitionManager,
Work<IElementFactory> elementFactory,
Work<IElementManager> elementManager) {
_contentDefinitionManager = contentDefinitionManager;
_elementFactory = elementFactory;
_elementManager = elementManager;
}
public IEnumerable<ElementDescriptor> HarvestElements(HarvestElementsContext context) {
var elementType = typeof(Elements.ContentPart);
var contentPartElement = _elementFactory.Value.Activate(elementType);
var contentParts = GetContentParts(context);
return contentParts.Select(contentPart => {
var partSettings = contentPart.Settings.TryGetModel<ContentPartSettings>();
var partDescription = partSettings != null ? partSettings.Description : null;
var description = T(!String.IsNullOrWhiteSpace(partDescription) ? partDescription : contentPart.Name);
return new ElementDescriptor(elementType, contentPart.Name, T(contentPart.Name.CamelFriendly()), description, contentPartElement.Category) {
Displaying = displayContext => Displaying(displayContext),
ToolboxIcon = "\uf1b2",
StateBag = new Dictionary<string, object> {
{"ElementTypeName", contentPart.Name}
}
};
});
}
private IEnumerable<ContentPartDefinition> GetContentParts(HarvestElementsContext context) {
var contentTypeDefinition = context.Content != null
? _contentDefinitionManager.Value.GetTypeDefinition(context.Content.ContentItem.ContentType)
: default(ContentTypeDefinition);
var parts = contentTypeDefinition != null
? contentTypeDefinition.Parts.Select(x => x.PartDefinition)
: _contentDefinitionManager.Value.ListPartDefinitions();
return parts.Where(p => p.Settings.GetModel<ContentPartLayoutSettings>().Placeable);
}
private void Displaying(ElementDisplayingContext context) {
var drivers = _elementManager.Value.GetDrivers(context.Element);
foreach (var driver in drivers) {
driver.Displaying(context);
}
}
}
}

View File

@ -9,7 +9,7 @@ using Orchard.Layouts.Helpers;
namespace Orchard.Layouts.Services {
public class ElementManager : Component, IElementManager {
private readonly Lazy<IEnumerable<ElementHarvester>> _elementHarvesters;
private readonly Lazy<IEnumerable<IElementHarvester>> _elementHarvesters;
private readonly ICacheManager _cacheManager;
private readonly Lazy<IEnumerable<IElementDriver>> _drivers;
private readonly Lazy<IEnumerable<ICategoryProvider>> _categoryProviders;
@ -18,7 +18,7 @@ namespace Orchard.Layouts.Services {
private readonly IElementEventHandler _elementEventHandler;
public ElementManager(
Lazy<IEnumerable<ElementHarvester>> elementHarvesters,
Lazy<IEnumerable<IElementHarvester>> elementHarvesters,
ICacheManager cacheManager,
Lazy<IEnumerable<IElementDriver>> drivers,
Lazy<IEnumerable<ICategoryProvider>> categoryProviders,