From a618ed710211928710576f03535bbd1c65270f44 Mon Sep 17 00:00:00 2001 From: Nicholas Mayne Date: Tue, 23 Sep 2014 22:57:25 +0100 Subject: [PATCH] Fixes to localizationservice to get with of silly select.. --- .../Localization/CultureManagerTests.cs | 1 + .../Selectors/BrowserCultureSelector.cs | 2 ++ .../Selectors/ContentCultureSelector.cs | 3 +-- .../Selectors/CookieCultureSelector.cs | 2 ++ .../Selectors/RouteCultureSelector.cs | 3 +-- .../Services/LocalizationService.cs | 17 +++++++---------- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Orchard.Tests/Localization/CultureManagerTests.cs b/src/Orchard.Tests/Localization/CultureManagerTests.cs index 4a0d9e1ce..01d9e1ff2 100644 --- a/src/Orchard.Tests/Localization/CultureManagerTests.cs +++ b/src/Orchard.Tests/Localization/CultureManagerTests.cs @@ -58,6 +58,7 @@ namespace Orchard.Tests.Localization { builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); + builder.RegisterType().As(); builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)); _session = _sessionFactory.OpenSession(); builder.RegisterInstance(new DefaultContentManagerTests.TestSessionLocator(_session)).As(); diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/BrowserCultureSelector.cs b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/BrowserCultureSelector.cs index 0f9f60951..41bbaee6c 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/BrowserCultureSelector.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/BrowserCultureSelector.cs @@ -16,6 +16,8 @@ namespace Orchard.Localization.Selectors { } public CultureSelectorResult GetCulture(HttpContextBase context) { + if (context == null) return null; + /* Fall back to Browser */ var userLanguages = context.Request.UserLanguages; diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/ContentCultureSelector.cs b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/ContentCultureSelector.cs index 2d3b6913c..5773b4b45 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/ContentCultureSelector.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/ContentCultureSelector.cs @@ -23,8 +23,7 @@ namespace Orchard.Localization.Selectors { } public CultureSelectorResult GetCulture(HttpContextBase context) { - if (ContextHelpers.IsRequestAdmin(context)) - return null; + if (context == null || ContextHelpers.IsRequestAdmin(context)) return null; // Attempt to determine culture by previous route if by POST string path; diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/CookieCultureSelector.cs b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/CookieCultureSelector.cs index f68b8076c..da115a80d 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/CookieCultureSelector.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/CookieCultureSelector.cs @@ -48,6 +48,8 @@ namespace Orchard.Localization.Selectors { } public CultureSelectorResult GetCulture(HttpContextBase context) { + if (context == null) return null; + var cookie = context.Request.Cookies.Get(CookieName); if (cookie != null) diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/RouteCultureSelector.cs b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/RouteCultureSelector.cs index f2d6c2aef..df1f1a380 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Selectors/RouteCultureSelector.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Selectors/RouteCultureSelector.cs @@ -7,8 +7,7 @@ namespace Orchard.Localization.Selectors { [OrchardFeature("Orchard.Localization.CutlureSelector")] public class RouteCultureSelector : ICultureSelector { public CultureSelectorResult GetCulture(HttpContextBase context) { - if (ContextHelpers.IsRequestAdmin(context)) - return null; + if (context == null || ContextHelpers.IsRequestAdmin(context)) return null; // Attempt to determine culture by route. // This normally happens when you are using non standard pages that are not content items diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Services/LocalizationService.cs b/src/Orchard.Web/Modules/Orchard.Localization/Services/LocalizationService.cs index 46bc3146d..79899202c 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Services/LocalizationService.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Services/LocalizationService.cs @@ -30,15 +30,14 @@ namespace Orchard.Localization.Services { return null; var query = versionOptions == null - ? _contentManager.Query(content.ContentItem.ContentType) - : _contentManager.Query(versionOptions, content.ContentItem.ContentType); + ? _contentManager.Query(content.ContentItem.ContentType) + : _contentManager.Query(versionOptions, content.ContentItem.ContentType); // Warning: Returns only the first of same culture localizations. return query.Where(l => (l.Id == content.ContentItem.Id || l.MasterContentItemId == content.ContentItem.Id) && l.CultureId == cultureRecord.Id) .List() - .Select(i => i.As()) .FirstOrDefault(); } @@ -54,9 +53,7 @@ namespace Orchard.Localization.Services { if (localized == null) return; - var cultureRecord = _cultureManager.GetCultureByName(culture); - - localized.Culture = cultureRecord; + localized.Culture = _cultureManager.GetCultureByName(culture); } IEnumerable ILocalizationService.GetLocalizations(IContent content) { @@ -71,12 +68,12 @@ namespace Orchard.Localization.Services { var localized = content.As(); var query = versionOptions == null - ? _contentManager.Query(localized.ContentItem.ContentType) - : _contentManager.Query(versionOptions, localized.ContentItem.ContentType); + ? _contentManager.Query(localized.ContentItem.ContentType) + : _contentManager.Query(versionOptions, localized.ContentItem.ContentType); int contentItemId = localized.ContentItem.Id; - if (localized.MasterContentItem != null) { + if (localized.HasTranslationGroup) { int masterContentItemId = localized.MasterContentItem.ContentItem.Id; query = query.Where(l => @@ -89,7 +86,7 @@ namespace Orchard.Localization.Services { } // Warning: May contain more than one localization of the same culture. - return query.List().Select(i => i.As()); + return query.List().ToList(); } } } \ No newline at end of file