Simplifying summary shape for LayoutPart.

This commit is contained in:
Sipke Schoorstra
2014-11-14 20:43:06 -08:00
parent 93a13c5b9c
commit 9581cd583e
16 changed files with 17 additions and 118 deletions

View File

@@ -1,7 +1,6 @@
using Orchard.Layouts.Elements;
using Orchard.Layouts.Framework.Drivers;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Services;
using Orchard.Layouts.ViewModels;
namespace Orchard.Layouts.Drivers {
@@ -26,9 +25,5 @@ namespace Orchard.Layouts.Drivers {
.Add("body", element.Content).RemoveTags().Analyze()
.Add("format", "html").Store();
}
protected override void OnBuildDocument(Html element, BuildElementDocumentContext context) {
context.HtmlContent = element.Content;
}
}
}

View File

@@ -3,11 +3,11 @@ using System.Linq;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.Handlers;
using Orchard.DisplayManagement;
using Orchard.Layouts.Framework.Display;
using Orchard.Layouts.Framework.Drivers;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Framework.Serialization;
using Orchard.Layouts.Helpers;
using Orchard.Layouts.Models;
using Orchard.Layouts.Services;
using Orchard.Layouts.ViewModels;
@@ -18,17 +18,23 @@ namespace Orchard.Layouts.Drivers {
private readonly IElementDisplay _elementDisplay;
private readonly IElementManager _elementManager;
private readonly ILayoutManager _layoutManager;
private readonly Lazy<IContentPartDisplay> _contentPartDisplay;
private readonly IShapeDisplay _shapeDisplay;
public LayoutPartDriver(
ILayoutSerializer serializer,
IElementDisplay elementDisplay,
IElementManager elementManager,
ILayoutManager layoutManager) {
ILayoutManager layoutManager,
Lazy<IContentPartDisplay> contentPartDisplay,
IShapeDisplay shapeDisplay) {
_serializer = serializer;
_elementDisplay = elementDisplay;
_elementManager = elementManager;
_layoutManager = layoutManager;
_contentPartDisplay = contentPartDisplay;
_shapeDisplay = shapeDisplay;
}
protected override DriverResult Display(LayoutPart part, string displayType, dynamic shapeHelper) {
@@ -39,8 +45,9 @@ namespace Orchard.Layouts.Drivers {
return shapeHelper.Parts_Layout(LayoutRoot: layoutRoot);
}),
ContentShape("Parts_Layout_Summary", () => {
var document = _layoutManager.BuildDocument(part);
return shapeHelper.Parts_Layout_Summary(Document: document);
var layoutShape = _contentPartDisplay.Value.BuildDisplay(part);
var layoutHtml = _shapeDisplay.Display(layoutShape);
return shapeHelper.Parts_Layout_Summary(LayoutHtml: layoutHtml);
}));
}

View File

@@ -2,7 +2,6 @@
using Orchard.Layouts.Framework.Display;
using Orchard.Layouts.Framework.Drivers;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Services;
using Orchard.Layouts.ViewModels;
using MarkdownElement = Orchard.Layouts.Elements.Markdown;
@@ -34,10 +33,6 @@ namespace Orchard.Layouts.Drivers {
.Add("format", "markdown").Store();
}
protected override void OnBuildDocument(MarkdownElement element, BuildElementDocumentContext context) {
context.HtmlContent = ToHtml(element.Content);
}
private string ToHtml(string markdown) {
return new MarkdownSharp.Markdown().Transform(markdown);
}

View File

@@ -1,7 +1,6 @@
using Orchard.Layouts.Elements;
using Orchard.Layouts.Framework.Drivers;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Services;
using Orchard.Layouts.ViewModels;
namespace Orchard.Layouts.Drivers {
@@ -26,9 +25,5 @@ namespace Orchard.Layouts.Drivers {
.Add("body", element.Content).RemoveTags().Analyze()
.Add("format", "text").Store();
}
protected override void OnBuildDocument(Paragraph element, BuildElementDocumentContext context) {
context.HtmlContent = element.Content;
}
}
}

View File

@@ -6,7 +6,6 @@ using Orchard.Layouts.Framework.Display;
using Orchard.Layouts.Framework.Drivers;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Models;
using Orchard.Layouts.Services;
using Orchard.Layouts.Settings;
using Orchard.Layouts.ViewModels;
using Orchard.Services;
@@ -55,13 +54,6 @@ namespace Orchard.Layouts.Drivers {
.Add("format", flavor).Store();
}
protected override void OnBuildDocument(Text element, BuildElementDocumentContext context) {
var layoutPart = context.Layout.As<LayoutPart>();
var flavor = GetFlavor(layoutPart);
context.HtmlContent = ToHtml(element.Content, flavor);
}
private string ToHtml(string content, string flavor) {
return _htmlFilters.Aggregate(content, (t, filter) => filter.ProcessContent(t, flavor));
}

View File

@@ -2,7 +2,6 @@ using System;
using System.Linq;
using Orchard.Layouts.Framework.Display;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Services;
namespace Orchard.Layouts.Framework.Drivers {
public abstract class ElementDriver<TElement> : Component, IElementDriver where TElement: IElement {
@@ -34,10 +33,6 @@ namespace Orchard.Layouts.Framework.Drivers {
OnIndexing((TElement)context.Element, context);
}
public void BuildDocument(BuildElementDocumentContext context) {
OnBuildDocument((TElement)context.Element, context);
}
public void Exporting(ExportElementContext context) {
OnExporting((TElement)context.Element, context);
}
@@ -66,9 +61,6 @@ namespace Orchard.Layouts.Framework.Drivers {
protected virtual void OnIndexing(TElement element, ElementIndexingContext context) {
}
protected virtual void OnBuildDocument(TElement element, BuildElementDocumentContext context) {
}
protected virtual void OnExporting(TElement element, ExportElementContext context) {
}

View File

@@ -1,6 +1,5 @@
using Orchard.Layouts.Framework.Display;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Services;
namespace Orchard.Layouts.Framework.Drivers {
public interface IElementDriver : IDependency {
@@ -11,7 +10,6 @@ namespace Orchard.Layouts.Framework.Drivers {
void LayoutSaving(ElementSavingContext context);
void Removing(ElementRemovingContext context);
void Indexing(ElementIndexingContext context);
void BuildDocument(BuildElementDocumentContext context);
void Exporting(ExportElementContext context);
void Importing(ImportElementContext context);
}

View File

@@ -237,16 +237,13 @@
<Compile Include="Helpers\EditorResultExtensions.cs" />
<Compile Include="Helpers\PrefixHelper.cs" />
<Compile Include="Providers\BlueprintElementHarvester.cs" />
<Compile Include="Services\BuildElementDocumentContext.cs" />
<Compile Include="Services\CurrentControllerAccessor.cs" />
<Compile Include="Services\ElementCreatedContext.cs" />
<Compile Include="Services\ElementCreatingContext.cs" />
<Compile Include="Services\ElementDocument.cs" />
<Compile Include="Services\ElementEventContext.cs" />
<Compile Include="Services\ElementEventHandlerBase.cs" />
<Compile Include="Services\ICurrentControllerAccessor.cs" />
<Compile Include="Services\IElementEventHandler.cs" />
<Compile Include="Services\LayoutDocument.cs" />
<Compile Include="Signals.cs" />
<Compile Include="ViewModels\ElementBlueprintPropertiesViewModel.cs" />
<Compile Include="ViewModels\CreateElementBlueprintViewModel.cs" />

View File

@@ -1,10 +0,0 @@
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Models;
namespace Orchard.Layouts.Services {
public class BuildElementDocumentContext {
public IElement Element { get; set; }
public string HtmlContent { get; set; }
public ILayoutAspect Layout { get; set; }
}
}

View File

@@ -1,11 +0,0 @@
using Orchard.Layouts.Framework.Elements;
namespace Orchard.Layouts.Services {
/// <summary>
/// Represents a layout document node.
/// </summary>
public class ElementDocument {
public IElement Element { get; set; }
public string Content { get; set; }
}
}

View File

@@ -6,7 +6,6 @@ using Orchard.Layouts.Framework.Drivers;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Framework.Harvesters;
using Orchard.Layouts.Helpers;
using Orchard.Layouts.Models;
namespace Orchard.Layouts.Services {
public class ElementManager : Component, IElementManager {
@@ -158,26 +157,6 @@ namespace Orchard.Layouts.Services {
}));
}
public LayoutDocument BuildDocument(ILayoutAspect layout, IEnumerable<IElement> elements) {
var document = new LayoutDocument();
InvokeDriver(elements, (driver, element) => {
var context = new BuildElementDocumentContext {
Layout = layout,
Element = element
};
driver.BuildDocument(context);
if (!String.IsNullOrWhiteSpace(context.HtmlContent))
document.Elements.Add(new ElementDocument {
Element = element,
Content = context.HtmlContent
});
});
return document;
}
public void Exporting(IEnumerable<IElement> elements, ExportLayoutContext context) {
InvokeDriver(elements, (driver, element) => {
var exportElementContext = new ExportElementContext {

View File

@@ -2,7 +2,6 @@
using System.Collections.Generic;
using Orchard.Layouts.Framework.Drivers;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Models;
namespace Orchard.Layouts.Services {
public interface IElementManager : IDependency {
@@ -24,7 +23,6 @@ namespace Orchard.Layouts.Services {
void Saving(LayoutSavingContext context);
void Removing(LayoutSavingContext context);
void Indexing(LayoutIndexingContext context);
LayoutDocument BuildDocument(ILayoutAspect layout, IEnumerable<IElement> elements);
void Exporting(IEnumerable<IElement> elements, ExportLayoutContext context);
void Importing(IEnumerable<IElement> elements, ImportLayoutContext context);
}

View File

@@ -9,7 +9,6 @@ namespace Orchard.Layouts.Services {
IEnumerable<LayoutPart> GetTemplates();
LayoutPart GetLayout(int id);
IEnumerable<IElement> LoadElements(ILayoutAspect layout);
LayoutDocument BuildDocument(ILayoutAspect layout);
dynamic RenderLayout(ILayoutAspect layout, string state = null, string displayType = null);
/// <summary>

View File

@@ -1,19 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace Orchard.Layouts.Services {
/// <summary>
/// Represents a text document of a layout.
/// </summary>
public class LayoutDocument {
public LayoutDocument() {
Elements = new List<ElementDocument>();
}
public IList<ElementDocument> Elements { get; set; }
public string ToString(string separator) {
return String.Join(separator, Elements.Select(x => x.Content));
}
}
}

View File

@@ -45,11 +45,6 @@ namespace Orchard.Layouts.Services {
return _serializer.Deserialize(layout.LayoutState, describeContext);
}
public LayoutDocument BuildDocument(ILayoutAspect layout) {
var elements = LoadElements(layout).Flatten().ToArray();
return _elementManager.BuildDocument(layout, elements);
}
public void Exporting(ExportLayoutContext context) {
var elementTree = LoadElements(context.Layout).ToArray();
var elements = elementTree.Flatten().ToArray();

View File

@@ -1,13 +1,10 @@
@*doing excerpt generation on the way out for now so we don't stick ourselves with needing to regen excerpts for existing data
also, doing this here, inline, until we have a pluggable processing model (both in and out)
also, ...this is ugly *@
@using Orchard.ContentManagement
@using Orchard.Layouts.Services
@using Orchard.Utility.Extensions
@using Orchard.ContentManagement
@*doing excerpt generation on the way out for now so we don't stick ourselves with needing to regen excerpts for existing data
also, doing this here, inline, until we have a pluggable processing model (both in and out)
also, ...this is ugly *@
@{
var contentItem = (ContentItem)Model.ContentItem;
var document = (LayoutDocument)Model.Document;
var documentText = document.ToString(separator: Environment.NewLine).RemoveTags();
var excerpt = new HtmlString(Html.Excerpt(documentText, 200).ToString().Replace(Environment.NewLine, "</p>" + Environment.NewLine + "<p>"));
var layoutHtml = (string)Model.LayoutHtml;
var excerpt = new HtmlString(Html.Excerpt(layoutHtml, 200).ToString().Replace(Environment.NewLine, "</p>" + Environment.NewLine + "<p>"));
}
<p>@excerpt @Html.ItemDisplayLink(T("more").ToString(), contentItem)</p>