From 4967fa807bfcbd7981a83090220fa46022c3d882 Mon Sep 17 00:00:00 2001 From: Nicholas Mayne Date: Sat, 27 Jun 2015 15:36:13 +0100 Subject: [PATCH] Fixing multi tenant content culture lookup - thanks to Mr Spits for the patch. --- .../Selectors/ContentCultureSelector.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/ContentCultureSelector.cs b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/ContentCultureSelector.cs index b8424a5f1..2276a261c 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/ContentCultureSelector.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/ContentCultureSelector.cs @@ -5,6 +5,7 @@ using Orchard.Alias; using Orchard.ContentManagement; using Orchard.Environment.Extensions; using Orchard.Localization.Services; +using Orchard.Environment.Configuration; namespace Orchard.Localization.Selectors { [OrchardFeature("Orchard.Localization.CultureSelector")] @@ -12,14 +13,17 @@ namespace Orchard.Localization.Selectors { private readonly IAliasService _aliasService; private readonly IContentManager _contentManager; private readonly Lazy _localizationService; + private readonly ShellSettings _shellSettings; public ContentCultureSelector( IAliasService aliasService, IContentManager contentManager, - Lazy localizationService) { + Lazy localizationService, + ShellSettings shellSettings) { _aliasService = aliasService; _contentManager = contentManager; _localizationService = localizationService; + _shellSettings = shellSettings; } public CultureSelectorResult GetCulture(HttpContextBase context) { @@ -40,6 +44,11 @@ namespace Orchard.Localization.Selectors { var appPath = context.Request.ApplicationPath ?? "/"; var requestUrl = (path.StartsWith(appPath) ? path.Substring(appPath.Length) : path).TrimStart('/'); + var prefix = _shellSettings.RequestUrlPrefix; + if (!string.IsNullOrEmpty(prefix)) { + requestUrl = (requestUrl.StartsWith(prefix) ? requestUrl.Substring(prefix.Length) : requestUrl).TrimStart('/'); + } + var content = GetByPath(requestUrl); if (content != null) { return new CultureSelectorResult { Priority = -2, CultureName = _localizationService.Value.GetContentCulture(content) };