From eb6285012ac14e5985b14b27434f5f524df1a4bc Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sun, 19 Apr 2015 18:43:05 +0200 Subject: [PATCH] Added CreatingDisplay event to ElementDriver. --- .../Framework/Display/ElementDisplay.cs | 10 ++++++---- .../Orchard.Layouts/Framework/Drivers/ElementDriver.cs | 7 +++++++ .../Framework/Drivers/IElementDriver.cs | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Display/ElementDisplay.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Display/ElementDisplay.cs index 2b5c34ecb..e9950e6b0 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Display/ElementDisplay.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Display/ElementDisplay.cs @@ -27,6 +27,9 @@ namespace Orchard.Layouts.Framework.Display { string displayType = null, IUpdateModel updater = null) { + var typeName = element.GetType().Name; + var category = element.Category.ToSafeName(); + var drivers = element.Descriptor.GetDrivers().ToList(); var createShapeContext = new ElementCreatingDisplayShapeContext { Element = element, DisplayType = displayType, @@ -34,14 +37,13 @@ namespace Orchard.Layouts.Framework.Display { }; _elementEventHandlerHandler.CreatingDisplay(createShapeContext); - element.Descriptor.CreatingDisplay(createShapeContext); + InvokeDrivers(drivers, driver => driver.CreatingDisplay(createShapeContext)); + if (element.Descriptor.CreatingDisplay != null) + element.Descriptor.CreatingDisplay(createShapeContext); if (createShapeContext.Cancel) return null; - var typeName = element.GetType().Name; - var category = element.Category.ToSafeName(); - var drivers = element.Descriptor.GetDrivers().ToList(); var elementShapeArguments = CreateArguments(element, content); var elementShape = (dynamic)_shapeFactory.Create("Element", elementShapeArguments, () => new ZoneHolding(() => _shapeFactory.Create("ElementZone"))); 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 889ae6307..616672660 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/ElementDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/ElementDriver.cs @@ -17,6 +17,10 @@ namespace Orchard.Layouts.Framework.Drivers { return OnUpdateEditor((TElement)context.Element, context); } + public void CreatingDisplay(ElementCreatingDisplayShapeContext context) { + OnCreatingDisplay((TElement)context.Element, context); + } + public void Displaying(ElementDisplayingContext context) { OnDisplaying((TElement) context.Element, context); } @@ -49,6 +53,9 @@ namespace Orchard.Layouts.Framework.Drivers { return OnBuildEditor(element, context); } + protected virtual void OnCreatingDisplay(TElement element, ElementCreatingDisplayShapeContext context) { + } + protected virtual void OnDisplaying(TElement element, ElementDisplayingContext 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 2b21e99a2..c6a2b364a 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/IElementDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Framework/Drivers/IElementDriver.cs @@ -6,6 +6,7 @@ namespace Orchard.Layouts.Framework.Drivers { int Priority { get; } EditorResult BuildEditor(ElementEditorContext context); EditorResult UpdateEditor(ElementEditorContext context); + void CreatingDisplay(ElementCreatingDisplayShapeContext context); void Displaying(ElementDisplayingContext context); void Displayed(ElementDisplayedContext context); void LayoutSaving(ElementSavingContext context);