mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Updated ElementDisplay to use Invoke extension method.
The generic Invoke extension method has the advantage of catching any exceptions occurring in client code and logging them, preventing the rest of the Layouts from breaking down.
This commit is contained in:
@@ -4,7 +4,6 @@ using System.Linq;
|
|||||||
using Orchard.ContentManagement;
|
using Orchard.ContentManagement;
|
||||||
using Orchard.DisplayManagement;
|
using Orchard.DisplayManagement;
|
||||||
using Orchard.Layouts.Elements;
|
using Orchard.Layouts.Elements;
|
||||||
using Orchard.Layouts.Framework.Drivers;
|
|
||||||
using Orchard.Layouts.Framework.Elements;
|
using Orchard.Layouts.Framework.Elements;
|
||||||
using Orchard.Layouts.Services;
|
using Orchard.Layouts.Services;
|
||||||
using Orchard.UI.Zones;
|
using Orchard.UI.Zones;
|
||||||
@@ -12,7 +11,7 @@ using Orchard.Utility.Extensions;
|
|||||||
using ContentItem = Orchard.ContentManagement.ContentItem;
|
using ContentItem = Orchard.ContentManagement.ContentItem;
|
||||||
|
|
||||||
namespace Orchard.Layouts.Framework.Display {
|
namespace Orchard.Layouts.Framework.Display {
|
||||||
public class ElementDisplay : IElementDisplay {
|
public class ElementDisplay : Component, IElementDisplay {
|
||||||
private readonly IShapeFactory _shapeFactory;
|
private readonly IShapeFactory _shapeFactory;
|
||||||
private readonly IElementEventHandler _elementEventHandlerHandler;
|
private readonly IElementEventHandler _elementEventHandlerHandler;
|
||||||
|
|
||||||
@@ -37,7 +36,7 @@ namespace Orchard.Layouts.Framework.Display {
|
|||||||
};
|
};
|
||||||
|
|
||||||
_elementEventHandlerHandler.CreatingDisplay(createShapeContext);
|
_elementEventHandlerHandler.CreatingDisplay(createShapeContext);
|
||||||
InvokeDrivers(drivers, driver => driver.CreatingDisplay(createShapeContext));
|
drivers.Invoke(driver => driver.CreatingDisplay(createShapeContext), Logger);
|
||||||
if (element.Descriptor.CreatingDisplay != null)
|
if (element.Descriptor.CreatingDisplay != null)
|
||||||
element.Descriptor.CreatingDisplay(createShapeContext);
|
element.Descriptor.CreatingDisplay(createShapeContext);
|
||||||
|
|
||||||
@@ -62,7 +61,7 @@ namespace Orchard.Layouts.Framework.Display {
|
|||||||
};
|
};
|
||||||
|
|
||||||
_elementEventHandlerHandler.Displaying(displayingContext);
|
_elementEventHandlerHandler.Displaying(displayingContext);
|
||||||
InvokeDrivers(drivers, driver => driver.Displaying(displayingContext));
|
drivers.Invoke(driver => driver.Displaying(displayingContext), Logger);
|
||||||
|
|
||||||
if (element.Descriptor.Displaying != null)
|
if (element.Descriptor.Displaying != null)
|
||||||
element.Descriptor.Displaying(displayingContext);
|
element.Descriptor.Displaying(displayingContext);
|
||||||
@@ -92,7 +91,7 @@ namespace Orchard.Layouts.Framework.Display {
|
|||||||
};
|
};
|
||||||
|
|
||||||
_elementEventHandlerHandler.Displayed(displayedContext);
|
_elementEventHandlerHandler.Displayed(displayedContext);
|
||||||
InvokeDrivers(drivers, driver => driver.Displayed(displayedContext));
|
drivers.Invoke(driver => driver.Displayed(displayedContext), Logger);
|
||||||
|
|
||||||
if (element.Descriptor.Displayed != null)
|
if (element.Descriptor.Displayed != null)
|
||||||
element.Descriptor.Displayed(displayedContext);
|
element.Descriptor.Displayed(displayedContext);
|
||||||
@@ -122,11 +121,5 @@ namespace Orchard.Layouts.Framework.Display {
|
|||||||
|
|
||||||
return Arguments.From(dictionary);
|
return Arguments.From(dictionary);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InvokeDrivers(IEnumerable<IElementDriver> drivers, Action<IElementDriver> driverAction) {
|
|
||||||
foreach (var driver in drivers) {
|
|
||||||
driverAction(driver);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user