From e407bb86aa3227f8c3be95a803721c85d60d88bf Mon Sep 17 00:00:00 2001 From: Matteo Piovanelli Date: Thu, 21 Sep 2017 21:06:14 +0200 Subject: [PATCH] Allow handling culture patterns more robustly (#7867) Fixes #7866 --- .../Settings/AutorouteSettingsEvents.cs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs index fa369575f..49b867b99 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs @@ -37,17 +37,15 @@ namespace Orchard.Autoroute.Settings { List newPatterns = new List(); // Adding a null culture for the culture neutral pattern - List cultures = new List(); + var cultures = new List(); cultures.Add(null); cultures.AddRange(settings.SiteCultures); - - int current = 0; + foreach (string culture in cultures) { // Adding all existing patterns for the culture - foreach (RoutePattern routePattern in settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) { - newPatterns.Add(settings.Patterns[current]); - current++; - } + newPatterns.AddRange( + settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)) + ); // Adding a pattern for each culture if there is none if (!settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)).Any()) { @@ -58,7 +56,7 @@ namespace Orchard.Autoroute.Settings { newPatterns.Add(new RoutePattern { Culture = culture, Name = null, Description = null, Pattern = null }); // If the content type has no defaultPattern for autoroute, assign one - bool defaultPatternExists = false; + var defaultPatternExists = false; if (String.IsNullOrEmpty(culture)) defaultPatternExists = settings.DefaultPatterns.Any(x => String.IsNullOrEmpty(x.Culture)); else @@ -102,7 +100,7 @@ namespace Orchard.Autoroute.Settings { //TODO need to add validations client and/or server side here // If some default pattern is an empty pattern set it to the first pattern for the language - List newDefaultPatterns = new List(); + var newDefaultPatterns = new List(); foreach (var defaultPattern in settings.DefaultPatterns) { RoutePattern correspondingPattern = null; @@ -125,7 +123,7 @@ namespace Orchard.Autoroute.Settings { patterns.RemoveAll(p => String.IsNullOrWhiteSpace(p.Name) && String.IsNullOrWhiteSpace(p.Pattern) && String.IsNullOrWhiteSpace(p.Description)); // Adding a null culture for the culture neutral pattern - List cultures = new List(); + var cultures = new List(); cultures.Add(null); cultures.AddRange(settings.SiteCultures);