Adding a front end culture picker shape that only goes to the homepage for each culutre

This commit is contained in:
Nicholas Mayne
2014-09-15 21:18:52 +01:00
parent 73a2653115
commit c4387ab54c
6 changed files with 57 additions and 3 deletions
@@ -154,7 +154,7 @@
<Content Include="web.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\AdminUICultureSelector.cshtml" />
<Content Include="Views\AdminCultureSelector.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\TransliterationAdmin\Index.cshtml" />
@@ -165,6 +165,9 @@
<ItemGroup>
<Content Include="Views\TransliterationAdmin\Edit.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\FrontEndCultureSelector.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
@@ -35,7 +35,7 @@ namespace Orchard.Localization.Services {
if (displayedContext.ShapeMetadata.Type == "Layout" && IsActivable()) {
var supportedCultures = _cultureManager.ListCultures().ToList();
if (supportedCultures.Count() > 1) {
_workContext.Layout.Header.Add(Shape.AdminUICultureSelector(SupportedCultures: supportedCultures));
_workContext.Layout.Header.Add(Shape.AdminCultureSelector(SupportedCultures: supportedCultures));
}
}
});
@@ -0,0 +1,51 @@
@using System.Globalization
@using Orchard.Alias
@using Orchard.ContentManagement
@using Orchard.ContentManagement.Aspects
@using Orchard.Localization.Services
@{
var localizableAspects = Enumerable.Empty<ILocalizableAspect>();
var homePage = GetByPath(string.Empty);
if (homePage != null) {
var localizationService = WorkContext.Resolve<ILocalizationService>();
localizableAspects = localizationService.GetLocalizations(homePage);
}
}
@if (localizableAspects.Any()) {
<div>
<ul>
@foreach (var localization in localizableAspects) {
var culture = CultureInfo.GetCultureInfo(localization.Culture);
<li>
@if (localization.Culture.Equals(WorkContext.CurrentCulture, StringComparison.InvariantCultureIgnoreCase)) {
<a href="@Url.ItemDisplayUrl(localization)">@T("{0} (current)", culture.DisplayName)</a>
}
else {
<a href="@Url.ItemDisplayUrl(localization)">@T("{0}", culture.DisplayName)</a>
}
</li>
}
</ul>
</div>
}
@functions{
public IContent GetByPath(string aliasPath) {
var contentRouting = WorkContext.Resolve<IAliasService>().Get(aliasPath);
if (contentRouting == null)
return null;
object id;
if (contentRouting.TryGetValue("id", out id)) {
int contentId;
if (int.TryParse(id as string, out contentId)) {
return WorkContext.Resolve<IContentManager>().Get(contentId);
}
}
return null;
}
}
+1 -1
View File
@@ -170,7 +170,7 @@
<Content Include="TheAdmin\Views\ErrorPage.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="TheAdmin\Views\AdminUICultureSelector.cshtml" />
<Content Include="TheAdmin\Views\AdminCultureSelector.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>