mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Adding a front end culture picker shape that only goes to the homepage for each culutre
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user