From 9581cd583eca36b92fb6ab94f1d5a9c9eb4938bb Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 14 Nov 2014 20:43:06 -0800 Subject: [PATCH] Simplifying summary shape for LayoutPart. --- .../Orchard.Layouts/Drivers/HtmlDriver.cs | 5 ----- .../Drivers/LayoutPartDriver.cs | 15 +++++++++---- .../Orchard.Layouts/Drivers/MarkdownDriver.cs | 5 ----- .../Drivers/ParagraphDriver.cs | 5 ----- .../Orchard.Layouts/Drivers/TextDriver.cs | 8 ------- .../Framework/Drivers/ElementDriver.cs | 8 ------- .../Framework/Drivers/IElementDriver.cs | 2 -- .../Orchard.Layouts/Orchard.Layouts.csproj | 3 --- .../Services/BuildElementDocumentContext.cs | 10 --------- .../Services/ElementDocument.cs | 11 ---------- .../Services/ElementManager.cs | 21 ------------------- .../Services/IElementManager.cs | 2 -- .../Services/ILayoutManager.cs | 1 - .../Services/LayoutDocument.cs | 19 ----------------- .../Orchard.Layouts/Services/LayoutManager.cs | 5 ----- .../Views/Parts.Layout.Summary.cshtml | 15 ++++++------- 16 files changed, 17 insertions(+), 118 deletions(-) delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Services/BuildElementDocumentContext.cs delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementDocument.cs delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Services/LayoutDocument.cs diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/HtmlDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/HtmlDriver.cs index e0f523c32..e4c844063 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/HtmlDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/HtmlDriver.cs @@ -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; - } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/LayoutPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/LayoutPartDriver.cs index c1721ea0c..ad4c4af29 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/LayoutPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/LayoutPartDriver.cs @@ -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 _contentPartDisplay; + private readonly IShapeDisplay _shapeDisplay; public LayoutPartDriver( ILayoutSerializer serializer, IElementDisplay elementDisplay, IElementManager elementManager, - ILayoutManager layoutManager) { + ILayoutManager layoutManager, + Lazy 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); })); } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/MarkdownDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/MarkdownDriver.cs index 2883277e4..645f60016 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/MarkdownDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/MarkdownDriver.cs @@ -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); } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/ParagraphDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/ParagraphDriver.cs index 9b9271265..0fe6f7b6f 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/ParagraphDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/ParagraphDriver.cs @@ -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; - } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/TextDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/TextDriver.cs index c4b86e7ab..a2ce3c2f7 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/TextDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/TextDriver.cs @@ -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(); - 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)); } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/ElementDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/ElementDriver.cs index 5d1a29aad..08770c74a 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/ElementDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/ElementDriver.cs @@ -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 : 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) { } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/IElementDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/IElementDriver.cs index facf3ffb6..619323e6e 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/IElementDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/IElementDriver.cs @@ -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); } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj index 1161ba50d..27ccec1ba 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj @@ -237,16 +237,13 @@ - - - diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/BuildElementDocumentContext.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/BuildElementDocumentContext.cs deleted file mode 100644 index bbb68b27b..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/BuildElementDocumentContext.cs +++ /dev/null @@ -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; } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementDocument.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementDocument.cs deleted file mode 100644 index 746459d27..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementDocument.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Orchard.Layouts.Framework.Elements; - -namespace Orchard.Layouts.Services { - /// - /// Represents a layout document node. - /// - public class ElementDocument { - public IElement Element { get; set; } - public string Content { get; set; } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs index f0a41ecff..3c2e6ce7d 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs @@ -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 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 elements, ExportLayoutContext context) { InvokeDriver(elements, (driver, element) => { var exportElementContext = new ExportElementContext { diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/IElementManager.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/IElementManager.cs index 5ed396501..de197d4b2 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/IElementManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Services/IElementManager.cs @@ -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 elements); void Exporting(IEnumerable elements, ExportLayoutContext context); void Importing(IEnumerable elements, ImportLayoutContext context); } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ILayoutManager.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ILayoutManager.cs index b414e6255..9f2f2c1e0 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ILayoutManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ILayoutManager.cs @@ -9,7 +9,6 @@ namespace Orchard.Layouts.Services { IEnumerable GetTemplates(); LayoutPart GetLayout(int id); IEnumerable LoadElements(ILayoutAspect layout); - LayoutDocument BuildDocument(ILayoutAspect layout); dynamic RenderLayout(ILayoutAspect layout, string state = null, string displayType = null); /// diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/LayoutDocument.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/LayoutDocument.cs deleted file mode 100644 index b7a78e324..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/LayoutDocument.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Orchard.Layouts.Services { - /// - /// Represents a text document of a layout. - /// - public class LayoutDocument { - public LayoutDocument() { - Elements = new List(); - } - public IList Elements { get; set; } - - public string ToString(string separator) { - return String.Join(separator, Elements.Select(x => x.Content)); - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/LayoutManager.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/LayoutManager.cs index 9ad4cde9e..b48d2972a 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/LayoutManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Services/LayoutManager.cs @@ -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(); diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Parts.Layout.Summary.cshtml b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Parts.Layout.Summary.cshtml index 9a810ac0e..caa21000d 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Views/Parts.Layout.Summary.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Views/Parts.Layout.Summary.cshtml @@ -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, "

" + Environment.NewLine + "

")); + var layoutHtml = (string)Model.LayoutHtml; + var excerpt = new HtmlString(Html.Excerpt(layoutHtml, 200).ToString().Replace(Environment.NewLine, "

" + Environment.NewLine + "

")); }

@excerpt @Html.ItemDisplayLink(T("more").ToString(), contentItem)

\ No newline at end of file