From a7b0308e9a9387bb5af5605d0919e6d9ee941586 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Wed, 19 Nov 2014 21:40:04 -0800 Subject: [PATCH] Simplifying LayoutPart indexing. - Removed all the infrastructural code that enabled each element to contribute to the index. - Indexing now happens in the LayoutPartHandler, where the LayoutPart is rendered to HTML, which is then being indexed. --- .../Orchard.Layouts/Drivers/HtmlDriver.cs | 7 ----- .../Orchard.Layouts/Drivers/MarkdownDriver.cs | 7 ----- .../Drivers/ParagraphDriver.cs | 7 ----- .../Orchard.Layouts/Drivers/TextDriver.cs | 9 ------ .../Framework/Drivers/ElementDriver.cs | 7 ----- .../Framework/Drivers/IElementDriver.cs | 1 - .../Elements/ElementIndexingContext.cs | 10 ------- .../Elements/LayoutIndexingContext.cs | 11 -------- .../Handlers/LayoutPartHandler.cs | 28 ++++++++++--------- .../Orchard.Layouts/Orchard.Layouts.csproj | 2 -- .../Services/ElementManager.cs | 7 ----- .../Services/IElementManager.cs | 1 - 12 files changed, 15 insertions(+), 82 deletions(-) delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Framework/Elements/ElementIndexingContext.cs delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Framework/Elements/LayoutIndexingContext.cs diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/HtmlDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/HtmlDriver.cs index e4c844063..da08fa039 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/HtmlDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/HtmlDriver.cs @@ -1,6 +1,5 @@ using Orchard.Layouts.Elements; using Orchard.Layouts.Framework.Drivers; -using Orchard.Layouts.Framework.Elements; using Orchard.Layouts.ViewModels; namespace Orchard.Layouts.Drivers { @@ -19,11 +18,5 @@ namespace Orchard.Layouts.Drivers { return Editor(context, editor); } - - protected override void OnIndexing(Html element, ElementIndexingContext context) { - context.DocumentIndex - .Add("body", element.Content).RemoveTags().Analyze() - .Add("format", "html").Store(); - } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/MarkdownDriver.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/MarkdownDriver.cs index 645f60016..5c058bd11 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/MarkdownDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/MarkdownDriver.cs @@ -1,7 +1,6 @@ using Orchard.Environment.Extensions; using Orchard.Layouts.Framework.Display; using Orchard.Layouts.Framework.Drivers; -using Orchard.Layouts.Framework.Elements; using Orchard.Layouts.ViewModels; using MarkdownElement = Orchard.Layouts.Elements.Markdown; @@ -27,12 +26,6 @@ namespace Orchard.Layouts.Drivers { context.ElementShape.ProcessedContent = ToHtml(element.Content); } - protected override void OnIndexing(MarkdownElement element, ElementIndexingContext context) { - context.DocumentIndex - .Add("body", element.Content).RemoveTags().Analyze() - .Add("format", "markdown").Store(); - } - 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 0fe6f7b6f..133bc1ec4 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/ParagraphDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/ParagraphDriver.cs @@ -1,6 +1,5 @@ using Orchard.Layouts.Elements; using Orchard.Layouts.Framework.Drivers; -using Orchard.Layouts.Framework.Elements; using Orchard.Layouts.ViewModels; namespace Orchard.Layouts.Drivers { @@ -19,11 +18,5 @@ namespace Orchard.Layouts.Drivers { return Editor(context, editor); } - - protected override void OnIndexing(Paragraph element, ElementIndexingContext context) { - context.DocumentIndex - .Add("body", element.Content).RemoveTags().Analyze() - .Add("format", "text").Store(); - } } } \ 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 a2ce3c2f7..c8bbb73a0 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/TextDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Drivers/TextDriver.cs @@ -45,15 +45,6 @@ namespace Orchard.Layouts.Drivers { context.ElementShape.ProcessedText = processedText; } - protected override void OnIndexing(Text element, ElementIndexingContext context) { - var layoutPart = context.Layout.As(); - var flavor = GetFlavor(layoutPart); - - context.DocumentIndex - .Add("body", element.Content).RemoveTags().Analyze() - .Add("format", flavor).Store(); - } - 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 08770c74a..01fad7843 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/ElementDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/ElementDriver.cs @@ -29,10 +29,6 @@ namespace Orchard.Layouts.Framework.Drivers { OnRemoving((TElement) context.Element, context); } - public void Indexing(ElementIndexingContext context) { - OnIndexing((TElement)context.Element, context); - } - public void Exporting(ExportElementContext context) { OnExporting((TElement)context.Element, context); } @@ -58,9 +54,6 @@ namespace Orchard.Layouts.Framework.Drivers { protected virtual void OnRemoving(TElement element, ElementRemovingContext context) { } - protected virtual void OnIndexing(TElement element, ElementIndexingContext 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 619323e6e..910166278 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/IElementDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/IElementDriver.cs @@ -9,7 +9,6 @@ namespace Orchard.Layouts.Framework.Drivers { void Displaying(ElementDisplayContext context); void LayoutSaving(ElementSavingContext context); void Removing(ElementRemovingContext context); - void Indexing(ElementIndexingContext context); void Exporting(ExportElementContext context); void Importing(ImportElementContext context); } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Elements/ElementIndexingContext.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Elements/ElementIndexingContext.cs deleted file mode 100644 index 225ecf6d9..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Elements/ElementIndexingContext.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Orchard.Layouts.Framework.Elements { - public class ElementIndexingContext : LayoutIndexingContext { - public ElementIndexingContext(LayoutIndexingContext stub) { - DocumentIndex = stub.DocumentIndex; - Layout = stub.Layout; - Elements = stub.Elements; - } - public IElement Element { get; set; } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Elements/LayoutIndexingContext.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Elements/LayoutIndexingContext.cs deleted file mode 100644 index fd9485746..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Elements/LayoutIndexingContext.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using Orchard.Indexing; -using Orchard.Layouts.Models; - -namespace Orchard.Layouts.Framework.Elements { - public class LayoutIndexingContext { - public ILayoutAspect Layout { get; set; } - public IEnumerable Elements { get; set; } - public IDocumentIndex DocumentIndex { get; set; } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Handlers/LayoutPartHandler.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Handlers/LayoutPartHandler.cs index 49b8ee541..13eb7e690 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Handlers/LayoutPartHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Handlers/LayoutPartHandler.cs @@ -1,8 +1,7 @@ using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; using Orchard.Data; -using Orchard.Layouts.Framework.Elements; -using Orchard.Layouts.Helpers; +using Orchard.DisplayManagement; using Orchard.Layouts.Models; using Orchard.Layouts.Services; @@ -10,29 +9,32 @@ namespace Orchard.Layouts.Handlers { public class LayoutPartHandler : ContentHandler { private readonly ILayoutManager _layoutManager; private readonly IContentManager _contentManager; - private readonly IElementManager _elementManager; + private readonly IContentPartDisplay _contentPartDisplay; + private readonly IShapeDisplay _shapeDisplay; public LayoutPartHandler( IRepository repository, ILayoutManager layoutManager, IContentManager contentManager, - IElementManager elementManager) { + IContentPartDisplay contentPartDisplay, + IShapeDisplay shapeDisplay) { _layoutManager = layoutManager; _contentManager = contentManager; - _elementManager = elementManager; + _contentPartDisplay = contentPartDisplay; + _shapeDisplay = shapeDisplay; Filters.Add(StorageFilter.For(repository)); OnPublished(UpdateTemplateClients); - OnIndexing(IndexElements); + OnIndexing(IndexLayout); } - private void IndexElements(IndexContentContext context, LayoutPart part) { - var elements = _layoutManager.LoadElements(part).Flatten(); - _elementManager.Indexing(new LayoutIndexingContext { - Layout = part, - Elements = elements, - DocumentIndex = context.DocumentIndex - }); + private void IndexLayout(IndexContentContext context, LayoutPart part) { + var layoutShape = _contentPartDisplay.BuildDisplay(part); + var layoutHtml = _shapeDisplay.Display(layoutShape); + + context.DocumentIndex + .Add("body", layoutHtml).RemoveTags().Analyze() + .Add("format", "html").Store(); } private void UpdateTemplateClients(PublishContentContext context, LayoutPart part) { diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj index 27ccec1ba..6314fcc38 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj @@ -230,8 +230,6 @@ - - diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs index 3c2e6ce7d..b07bb5778 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs @@ -150,13 +150,6 @@ namespace Orchard.Layouts.Services { })); } - public void Indexing(LayoutIndexingContext context) { - var elementInstances = context.Elements.Flatten(); - InvokeDriver(elementInstances, (driver, elementInstance) => driver.Indexing(new ElementIndexingContext(context) { - Element = elementInstance - })); - } - 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 de197d4b2..d0e87c2b6 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/IElementManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Services/IElementManager.cs @@ -22,7 +22,6 @@ namespace Orchard.Layouts.Services { EditorResult UpdateEditor(ElementEditorContext context); void Saving(LayoutSavingContext context); void Removing(LayoutSavingContext context); - void Indexing(LayoutIndexingContext context); void Exporting(IEnumerable elements, ExportLayoutContext context); void Importing(IEnumerable elements, ImportLayoutContext context); }