From 6b14e748ff4ad817be121428e9a6c397f25ed3ca Mon Sep 17 00:00:00 2001 From: Nicholas Mayne Date: Sun, 14 Sep 2014 13:56:06 +0100 Subject: [PATCH] Splitting culture picker up to Admin and User facing implementations. Removing the Culture Service, and changign the way the culture selectors work. The Admin UI should act differently to the Front end site, and hense should be indepentant of each other. --- .../AdminCutlureSelectorController.cs | 23 ++++++ .../Controllers/CutlureSelectorController.cs | 22 ------ .../Modules/Orchard.Localization/Module.txt | 4 +- .../Orchard.Localization.csproj | 22 ++++-- .../Providers/AdminCultureSelectorSelector.cs | 40 ++++++++++ .../Providers/BrowserCultureProvider.cs | 53 +++++++++++++ ...geProvider.cs => CookieCultureProvider.cs} | 9 ++- .../Providers/CultureSelectorSelector.cs | 21 ------ .../DefaultFrontEndCultureSelector.cs | 62 ++++++++++++++++ .../Providers/ICultureProvider.cs | 6 ++ .../Providers/ICultureStorageProvider.cs | 1 - .../Services/CultureSelectorFactory.cs | 11 ++- .../Services/CultureService.cs | 74 ------------------- .../Services/ICultureService.cs | 6 -- .../Views/AdminUICultureSelector.cshtml | 20 +++++ ...shtml => FrontEndUICultureSelector.cshtml} | 2 +- ...r.cshtml => AdminUICultureSelector.cshtml} | 7 +- src/Orchard.Web/Themes/Themes.csproj | 2 +- .../Services/SiteCultureSelector.cs | 3 - 19 files changed, 240 insertions(+), 148 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Controllers/AdminCutlureSelectorController.cs delete mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Controllers/CutlureSelectorController.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Providers/AdminCultureSelectorSelector.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Providers/BrowserCultureProvider.cs rename src/Orchard.Web/Modules/Orchard.Localization/Providers/{CultureStorageProvider.cs => CookieCultureProvider.cs} (90%) delete mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Providers/CultureSelectorSelector.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Providers/DefaultFrontEndCultureSelector.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Providers/ICultureProvider.cs delete mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Services/CultureService.cs delete mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Services/ICultureService.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Localization/Views/AdminUICultureSelector.cshtml rename src/Orchard.Web/Modules/Orchard.Localization/Views/{UICultureSelector.cshtml => FrontEndUICultureSelector.cshtml} (72%) rename src/Orchard.Web/Themes/TheAdmin/Views/{UICultureSelector.cshtml => AdminUICultureSelector.cshtml} (68%) diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Controllers/AdminCutlureSelectorController.cs b/src/Orchard.Web/Modules/Orchard.Localization/Controllers/AdminCutlureSelectorController.cs new file mode 100644 index 000000000..e0fe28412 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Localization/Controllers/AdminCutlureSelectorController.cs @@ -0,0 +1,23 @@ +using System.Web.Mvc; +using Orchard.Environment.Extensions; +using Orchard.Localization.Providers; +using Orchard.Mvc.Extensions; +using Orchard.UI.Admin; + +namespace Orchard.Localization.Controllers { + [OrchardFeature("Orchard.Localization.CutlureSelector")] + [Admin] + public class AdminCutlureSelectorController : Controller { + private readonly ICultureStorageProvider _cultureStorageProvider; + + public AdminCutlureSelectorController(ICultureStorageProvider cultureStorageProvider) { + _cultureStorageProvider = cultureStorageProvider; + } + + public ActionResult ChangeCulture(string culture, string returnUrl) { + _cultureStorageProvider.SetCulture(culture); + + return this.RedirectLocal(returnUrl); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Controllers/CutlureSelectorController.cs b/src/Orchard.Web/Modules/Orchard.Localization/Controllers/CutlureSelectorController.cs deleted file mode 100644 index 532e9d328..000000000 --- a/src/Orchard.Web/Modules/Orchard.Localization/Controllers/CutlureSelectorController.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Web.Mvc; -using Orchard.Environment.Extensions; -using Orchard.Localization.Services; -using Orchard.Mvc.Extensions; - -namespace Orchard.Localization.Controllers { - [OrchardFeature("Orchard.Localization.CutlureSelector")] - public class CutlureSelectorController : Controller { - private readonly ICultureService _cultureService; - - public CutlureSelectorController(ICultureService cultureService) { - _cultureService = cultureService; - } - - public ActionResult SetCulture(string culture, string returnUrl) { - - _cultureService.SetCulture(culture); - - return this.RedirectLocal(returnUrl); - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Module.txt b/src/Orchard.Web/Modules/Orchard.Localization/Module.txt index 59138d382..655815fc4 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Module.txt +++ b/src/Orchard.Web/Modules/Orchard.Localization/Module.txt @@ -17,10 +17,10 @@ Features: Name: Date/Time Format Localization Dependencies: Orchard.Localization Orchard.Localization.CutlureSelector: - Description: Enables a culture picker to localize the UI. + Description: Enables a culture picker services, and also the admin cutlure picker. Category: Content Name: Culture Picker - Dependencies: Orchard.Localization + Dependencies: Orchard.Localization, Orchard.Alias Orchard.Localization.Transliteration: Description: Enabled transliteration of content Category: Content diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj b/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj index d5beb3335..6760076bd 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj +++ b/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj @@ -72,16 +72,17 @@ - + - + + + + - - - + @@ -91,7 +92,7 @@ - + @@ -140,6 +141,10 @@ {9916839C-39FC-4CEB-A5AF-89CA7E87119F} Orchard.Core + + {475B6C45-B27C-438B-8966-908B9D6D1077} + Orchard.Alias + {66FCCD76-2761-47E3-8D11-B45D0001DDAA} Orchard.Autoroute @@ -149,7 +154,7 @@ - + @@ -160,6 +165,9 @@ + + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Providers/AdminCultureSelectorSelector.cs b/src/Orchard.Web/Modules/Orchard.Localization/Providers/AdminCultureSelectorSelector.cs new file mode 100644 index 000000000..3f4257ce9 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Localization/Providers/AdminCultureSelectorSelector.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Routing; +using Orchard.Environment.Extensions; +using Orchard.Localization.Services; +using Orchard.UI.Admin; + +namespace Orchard.Localization.Providers { + [OrchardFeature("Orchard.Localization.CutlureSelector")] + public class AdminCultureSelectorSelector : ICultureSelector { + private readonly IEnumerable _providers; + + public AdminCultureSelectorSelector(IEnumerable providers) { + _providers = providers; + } + + private bool IsActivable(HttpContextBase context) { + // activate on admin screen only + if (AdminFilter.IsApplied(new RequestContext(context, new RouteData()))) + return true; + + return false; + } + + public CultureSelectorResult GetCulture(HttpContextBase context) { + if (!IsActivable(context)) + return null; + + var cultureName = _providers + .OrderByDescending(x => x.Priority) + .Select(x => x.GetCulture()) + .FirstOrDefault(); + + if (string.IsNullOrWhiteSpace(cultureName)) return null; + + return new CultureSelectorResult { Priority = -4, CultureName = cultureName }; + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Providers/BrowserCultureProvider.cs b/src/Orchard.Web/Modules/Orchard.Localization/Providers/BrowserCultureProvider.cs new file mode 100644 index 000000000..35fd5efbd --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Localization/Providers/BrowserCultureProvider.cs @@ -0,0 +1,53 @@ +using System; +using System.Globalization; +using System.Linq; +using Orchard.Environment.Extensions; +using Orchard.Localization.Services; +using Orchard.Mvc; + +namespace Orchard.Localization.Providers { + [OrchardFeature("Orchard.Localization.CutlureSelector")] + public class BrowserCultureProvider : ICultureProvider { + private readonly Lazy _cultureManager; + private readonly IHttpContextAccessor _httpContextAccessor; + + public BrowserCultureProvider( + Lazy cultureManager, + IHttpContextAccessor httpContextAccessor) { + _cultureManager = cultureManager; + _httpContextAccessor = httpContextAccessor; + } + + public string GetCulture() { + var httpContext = _httpContextAccessor.Current(); + + if (httpContext == null) return null; + + /* Fall back to Browser */ + var userLanguages = httpContext.Request.UserLanguages; + + if (userLanguages == null || userLanguages.Length == 0) + return null; + + var cultures = _cultureManager.Value.ListCultures().ToList(); + + foreach (var userLanguage in userLanguages) { + var language = userLanguage.Split(';')[0].Trim(); + + if (cultures.Contains(language, StringComparer.OrdinalIgnoreCase)) { + try { + return CultureInfo.CreateSpecificCulture(language).Name; + } + catch (ArgumentException) { + } + } + } + + return null; + } + + public int Priority { + get { return -6; } + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Providers/CultureStorageProvider.cs b/src/Orchard.Web/Modules/Orchard.Localization/Providers/CookieCultureProvider.cs similarity index 90% rename from src/Orchard.Web/Modules/Orchard.Localization/Providers/CultureStorageProvider.cs rename to src/Orchard.Web/Modules/Orchard.Localization/Providers/CookieCultureProvider.cs index 7fe9edf7d..2c2d06cfd 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Providers/CultureStorageProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Providers/CookieCultureProvider.cs @@ -2,13 +2,12 @@ using System; using System.Web; using Orchard.Environment.Configuration; using Orchard.Environment.Extensions; -using Orchard.Localization.Services; using Orchard.Mvc; using Orchard.Services; namespace Orchard.Localization.Providers { [OrchardFeature("Orchard.Localization.CutlureSelector")] - public class CultureStorageProvider : ICultureStorageProvider { + public class CookieCultureProvider : ICultureProvider, ICultureStorageProvider { private readonly IHttpContextAccessor _httpContextAccessor; private readonly IClock _clock; private readonly ShellSettings _shellSettings; @@ -16,7 +15,7 @@ namespace Orchard.Localization.Providers { private const string CookieName = "OrchardCurrentCulture"; private const int DefaultExpireTimeYear = 1; - public CultureStorageProvider(IHttpContextAccessor httpContextAccessor, + public CookieCultureProvider(IHttpContextAccessor httpContextAccessor, IClock clock, ShellSettings shellSettings) { _httpContextAccessor = httpContextAccessor; @@ -59,6 +58,10 @@ namespace Orchard.Localization.Providers { return null; } + public int Priority { + get { return -5; } + } + private string GetCookiePath(HttpContextBase httpContext) { var cookiePath = httpContext.Request.ApplicationPath; if (cookiePath != null && cookiePath.Length > 1) { diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Providers/CultureSelectorSelector.cs b/src/Orchard.Web/Modules/Orchard.Localization/Providers/CultureSelectorSelector.cs deleted file mode 100644 index b3b2c4f89..000000000 --- a/src/Orchard.Web/Modules/Orchard.Localization/Providers/CultureSelectorSelector.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Web; -using Orchard.Environment.Extensions; -using Orchard.Localization.Services; - -namespace Orchard.Localization.Providers { - [OrchardFeature("Orchard.Localization.CutlureSelector")] - public class CultureSelectorSelector : ICultureSelector { - private readonly ICultureService _cultureService; - - public CultureSelectorSelector(ICultureService cultureService) { - _cultureService = cultureService; - } - - public CultureSelectorResult GetCulture(HttpContextBase context) { - var cultureName = _cultureService.GetCulture(); - if (cultureName == null) return null; - - return new CultureSelectorResult { Priority = -4, CultureName = cultureName }; - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Providers/DefaultFrontEndCultureSelector.cs b/src/Orchard.Web/Modules/Orchard.Localization/Providers/DefaultFrontEndCultureSelector.cs new file mode 100644 index 000000000..243b96064 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Localization/Providers/DefaultFrontEndCultureSelector.cs @@ -0,0 +1,62 @@ +using System; +using System.Web; +using System.Web.Routing; +using Orchard.Alias; +using Orchard.ContentManagement; +using Orchard.Environment.Extensions; +using Orchard.Localization.Services; +using Orchard.UI.Admin; + +namespace Orchard.Localization.Providers { + [OrchardFeature("Orchard.Localization.CutlureSelector")] + public class DefaultFrontEndCultureSelector : ICultureSelector { + private readonly IAliasService _aliasService; + private readonly IContentManager _contentManager; + private readonly Lazy _localizationService; + + public DefaultFrontEndCultureSelector(IAliasService aliasService, + IContentManager contentManager, + Lazy localizationService) { + _aliasService = aliasService; + _contentManager = contentManager; + _localizationService = localizationService; + } + + private bool IsActivable(HttpContextBase context) { + // activate on front end screen only + if (AdminFilter.IsApplied(new RequestContext(context, new RouteData()))) + return false; + + return true; + } + + public CultureSelectorResult GetCulture(HttpContextBase context) { + if (!IsActivable(context)) + return null; + + var content = GetByPath(context.Request.Path.TrimStart('/')); + if (content != null) { + return new CultureSelectorResult {Priority = -1, CultureName = _localizationService.Value.GetContentCulture(content)}; + } + + return null; + } + + public IContent GetByPath(string aliasPath) { + var contentRouting = _aliasService.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 _contentManager.Get(contentId); + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Providers/ICultureProvider.cs b/src/Orchard.Web/Modules/Orchard.Localization/Providers/ICultureProvider.cs new file mode 100644 index 000000000..4f46609b5 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Localization/Providers/ICultureProvider.cs @@ -0,0 +1,6 @@ +namespace Orchard.Localization.Providers { + public interface ICultureProvider : IDependency { + string GetCulture(); + int Priority { get; } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Providers/ICultureStorageProvider.cs b/src/Orchard.Web/Modules/Orchard.Localization/Providers/ICultureStorageProvider.cs index f821311f1..14109e6b3 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Providers/ICultureStorageProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Providers/ICultureStorageProvider.cs @@ -1,6 +1,5 @@ namespace Orchard.Localization.Providers { public interface ICultureStorageProvider : IDependency { void SetCulture(string culture); - string GetCulture(); } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureSelectorFactory.cs b/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureSelectorFactory.cs index 94666ae7a..1f2736412 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureSelectorFactory.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureSelectorFactory.cs @@ -1,3 +1,4 @@ +using System.Linq; using System.Web.Routing; using Orchard.DisplayManagement; using Orchard.DisplayManagement.Implementation; @@ -7,11 +8,14 @@ using Orchard.UI.Admin; namespace Orchard.Localization.Services { [OrchardFeature("Orchard.Localization.CutlureSelector")] public class AdminCultureSelectorFactory : ShapeDisplayEvents { + private readonly ICultureManager _cultureManager; private readonly WorkContext _workContext; public AdminCultureSelectorFactory( IWorkContextAccessor workContextAccessor, - IShapeFactory shapeFactory) { + IShapeFactory shapeFactory, + ICultureManager cultureManager) { + _cultureManager = cultureManager; _workContext = workContextAccessor.GetContext(); Shape = shapeFactory; } @@ -29,7 +33,10 @@ namespace Orchard.Localization.Services { public override void Displaying(ShapeDisplayingContext context) { context.ShapeMetadata.OnDisplaying(displayedContext => { if (displayedContext.ShapeMetadata.Type == "Layout" && IsActivable()) { - _workContext.Layout.Header.Add(Shape.UICultureSelector()); + var supportedCultures = _cultureManager.ListCultures().ToList(); + if (supportedCultures.Count() > 1) { + _workContext.Layout.Header.Add(Shape.AdminUICultureSelector(SupportedCultures: supportedCultures)); + } } }); } diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureService.cs b/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureService.cs deleted file mode 100644 index 1a8dab348..000000000 --- a/src/Orchard.Web/Modules/Orchard.Localization/Services/CultureService.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Globalization; -using System.Linq; -using Orchard.Data; -using Orchard.Environment.Extensions; -using Orchard.Localization.Providers; -using Orchard.Localization.Records; -using Orchard.Mvc; - -namespace Orchard.Localization.Services { - [OrchardFeature("Orchard.Localization.CutlureSelector")] - public class CultureService : ICultureService { - private readonly ICultureStorageProvider _cultureStorageProvider; - private readonly IHttpContextAccessor _httpContextAccessor; - private readonly IRepository _cultureRepository; - - public CultureService(ICultureStorageProvider cultureStorageProvider, - IHttpContextAccessor httpContextAccessor, - IRepository cultureRepository) { - _cultureStorageProvider = cultureStorageProvider; - _httpContextAccessor = httpContextAccessor; - _cultureRepository = cultureRepository; - } - - public void SetCulture(string culture) { - _cultureStorageProvider.SetCulture(culture); - } - - public string GetCulture() { - var culture = _cultureStorageProvider.GetCulture(); - - if (culture == null) { - var httpContext = _httpContextAccessor.Current(); - - if (httpContext == null) return null; - - var browserCulture = GetBrowserCulture(); - - if (browserCulture == null) - return null; - - culture = browserCulture.Name; - } - - return culture; - } - - private CultureInfo GetBrowserCulture() { - var httpContext = _httpContextAccessor.Current(); - - /* Fall back to Browser */ - var userLanguages = httpContext.Request.UserLanguages; - - if (userLanguages == null || userLanguages.Length == 0) - return null; - - var cultures = (from culture in _cultureRepository.Table select culture.Culture).ToList(); - - foreach (var userLanguage in userLanguages) { - var language = userLanguage.Split(';')[0].Trim(); - - if (cultures.Contains(language, StringComparer.OrdinalIgnoreCase)) { - try { - return CultureInfo.CreateSpecificCulture(language); - } - catch (ArgumentException) { - } - } - } - - return null; - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Services/ICultureService.cs b/src/Orchard.Web/Modules/Orchard.Localization/Services/ICultureService.cs deleted file mode 100644 index 3597d5b0f..000000000 --- a/src/Orchard.Web/Modules/Orchard.Localization/Services/ICultureService.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Orchard.Localization.Services { - public interface ICultureService : IDependency { - void SetCulture(string culture); - string GetCulture(); - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Views/AdminUICultureSelector.cshtml b/src/Orchard.Web/Modules/Orchard.Localization/Views/AdminUICultureSelector.cshtml new file mode 100644 index 000000000..2646a698d --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Localization/Views/AdminUICultureSelector.cshtml @@ -0,0 +1,20 @@ +@{ + var currentCulture = WorkContext.CurrentCulture; + var supportedCultures = (IList)Model.SupportedCultures; +} + +
+
    + @foreach (var supportedCulure in supportedCultures) { + var url = Url.Action("ChangeCulture", "AdminCutlureSelector", new { area = "Orchard.Localization", culture = supportedCulure, returnUrl = Html.ViewContext.HttpContext.Request.RawUrl }); + +
  • + @if (supportedCulure.Equals(currentCulture)) { + @T("{0} (current)", supportedCulure) + } else { + @supportedCulure + } +
  • + } +
+
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Views/UICultureSelector.cshtml b/src/Orchard.Web/Modules/Orchard.Localization/Views/FrontEndUICultureSelector.cshtml similarity index 72% rename from src/Orchard.Web/Modules/Orchard.Localization/Views/UICultureSelector.cshtml rename to src/Orchard.Web/Modules/Orchard.Localization/Views/FrontEndUICultureSelector.cshtml index 51d0c4ee8..dcdbbc99e 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Views/UICultureSelector.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Localization/Views/FrontEndUICultureSelector.cshtml @@ -7,7 +7,7 @@
    @foreach (var supportedCulure in supportedCultures) { - var url = Url.Action("SetCulture", "CutlureSelector", new { area = "Orchard.Localization", culture = supportedCulure, returnUrl = Html.ViewContext.HttpContext.Request.RawUrl }); + var url = Url.Action("ChangeCulture", "CutlureSelector", new { area = "Orchard.Localization", id = Model.ContentItem.Id, culture = supportedCulure, returnUrl = Html.ViewContext.HttpContext.Request.RawUrl });
  • @if (supportedCulure.Equals(currentCulture)) { diff --git a/src/Orchard.Web/Themes/TheAdmin/Views/UICultureSelector.cshtml b/src/Orchard.Web/Themes/TheAdmin/Views/AdminUICultureSelector.cshtml similarity index 68% rename from src/Orchard.Web/Themes/TheAdmin/Views/UICultureSelector.cshtml rename to src/Orchard.Web/Themes/TheAdmin/Views/AdminUICultureSelector.cshtml index 0c31843b4..8e950249a 100644 --- a/src/Orchard.Web/Themes/TheAdmin/Views/UICultureSelector.cshtml +++ b/src/Orchard.Web/Themes/TheAdmin/Views/AdminUICultureSelector.cshtml @@ -1,16 +1,14 @@ @using System.Globalization -@using Orchard.Localization.Services @{ var currentCulture = WorkContext.CurrentCulture; - var supportedCultures = WorkContext.Resolve().ListCultures(); + var supportedCultures = (IList)Model.SupportedCultures; } -@if (supportedCultures.Count() > 1) {
    -} @using (Script.Foot()) {