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