From fbd68f1ea1834b4fee56e7a52abb025d868ef7c3 Mon Sep 17 00:00:00 2001 From: Nicholas Mayne Date: Sun, 10 Aug 2014 18:00:26 +0100 Subject: [PATCH] Moving initialization of UICulture Shape to a Event --- .../Orchard.Localization.csproj | 1 + .../Services/CultureSelectorFactory.cs | 37 +++++++++++++++++++ .../Themes/TheAdmin/Views/Layout.cshtml | 7 +--- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Services/CultureSelectorFactory.cs diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj b/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj index 126b97147..2c6e25745 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj +++ b/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj @@ -68,6 +68,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureSelectorFactory.cs b/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureSelectorFactory.cs new file mode 100644 index 000000000..c0d269c76 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureSelectorFactory.cs @@ -0,0 +1,37 @@ +using System.Web.Routing; +using Orchard.DisplayManagement; +using Orchard.DisplayManagement.Implementation; +using Orchard.Environment.Extensions; +using Orchard.UI.Admin; + +namespace Orchard.Localization.Services { + [OrchardFeature("Orchard.Localization.CutlureSelector")] + public class AdminCultureSelectorFactory : ShapeDisplayEvents { + private readonly WorkContext _workContext; + + public AdminCultureSelectorFactory( + IWorkContextAccessor workContextAccessor, + IShapeFactory shapeFactory) { + _workContext = workContextAccessor.GetContext(); + Shape = shapeFactory; + } + dynamic Shape { get; set; } + + private bool IsActivable() { + // activate on front-end only + if (AdminFilter.IsApplied(new RequestContext(_workContext.HttpContext, new RouteData()))) + return true; + + return false; + } + + public override void Displaying(ShapeDisplayingContext context) { + context.ShapeMetadata.OnDisplaying(displayedContext => { + if (IsActivable() && displayedContext.ShapeMetadata.Type == "Layout") { + _workContext.Layout.Header.Add(Shape.UICultureSelector()); + } + }); + + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Themes/TheAdmin/Views/Layout.cshtml b/src/Orchard.Web/Themes/TheAdmin/Views/Layout.cshtml index b5f60f2b6..13c22e83f 100644 --- a/src/Orchard.Web/Themes/TheAdmin/Views/Layout.cshtml +++ b/src/Orchard.Web/Themes/TheAdmin/Views/Layout.cshtml @@ -1,5 +1,4 @@ @model dynamic -@using Orchard.Environment.Descriptor.Models @using Orchard.Localization @using Orchard.Security; @using Orchard.DisplayManagement.Descriptors; @@ -29,10 +28,6 @@ Model.Header.Add(Display.Header()); Model.Header.Add(Display.User(CurrentUser: WorkContext.CurrentUser)); - - var shellDescriptor = WorkContext.Resolve(); - if (shellDescriptor.Features.Any(x => x.Name == "Orchard.Localization.CutlureSelector")) { Model.Header.Add(Display.UICultureSelector()); } - Model.Footer.Add(Display.OrchardVersion()); if (Model.Title != null) { @@ -74,7 +69,7 @@ } @if (Model.Content != null) { -
+
@Zone(Model.Content)
}