mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Simplifying summary shape for LayoutPart.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user