Moving initialization of UICulture Shape to a Event

This commit is contained in:
Nicholas Mayne
2014-08-10 18:00:26 +01:00
parent 6c9d868e8a
commit fbd68f1ea1
3 changed files with 39 additions and 6 deletions

View File

@@ -68,6 +68,7 @@
<Compile Include="Controllers\AdminController.cs" />
<Compile Include="Controllers\CutlureSelectorController.cs" />
<Compile Include="Providers\CultureSelectorSelector.cs" />
<Compile Include="Services\CultureSelectorFactory.cs" />
<Compile Include="Services\DefaultCultureStorageProvider.cs" />
<Compile Include="Services\ICultureService.cs" />
<Compile Include="Drivers\LocalizationPartDriver.cs" />

View File

@@ -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());
}
});
}
}
}

View File

@@ -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<ShellDescriptor>();
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) {
<div id="content" class="group" dir="@Html.Directionality()">
<div id="content" class="group">
@Zone(Model.Content)
</div>
}