Allow handling culture patterns more robustly (#7867)

Fixes #7866
This commit is contained in:
Matteo Piovanelli
2017-09-21 21:06:14 +02:00
committed by Sébastien Ros
parent 6a6e059ee4
commit e407bb86aa

View File

@@ -37,17 +37,15 @@ namespace Orchard.Autoroute.Settings {
List<RoutePattern> newPatterns = new List<RoutePattern>(); List<RoutePattern> newPatterns = new List<RoutePattern>();
// Adding a null culture for the culture neutral pattern // Adding a null culture for the culture neutral pattern
List<string> cultures = new List<string>(); var cultures = new List<string>();
cultures.Add(null); cultures.Add(null);
cultures.AddRange(settings.SiteCultures); cultures.AddRange(settings.SiteCultures);
int current = 0;
foreach (string culture in cultures) { foreach (string culture in cultures) {
// Adding all existing patterns for the culture // Adding all existing patterns for the culture
foreach (RoutePattern routePattern in settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) { newPatterns.AddRange(
newPatterns.Add(settings.Patterns[current]); settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))
current++; );
}
// Adding a pattern for each culture if there is none // Adding a pattern for each culture if there is none
if (!settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)).Any()) { 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 }); newPatterns.Add(new RoutePattern { Culture = culture, Name = null, Description = null, Pattern = null });
// If the content type has no defaultPattern for autoroute, assign one // If the content type has no defaultPattern for autoroute, assign one
bool defaultPatternExists = false; var defaultPatternExists = false;
if (String.IsNullOrEmpty(culture)) if (String.IsNullOrEmpty(culture))
defaultPatternExists = settings.DefaultPatterns.Any(x => String.IsNullOrEmpty(x.Culture)); defaultPatternExists = settings.DefaultPatterns.Any(x => String.IsNullOrEmpty(x.Culture));
else else
@@ -102,7 +100,7 @@ namespace Orchard.Autoroute.Settings {
//TODO need to add validations client and/or server side here //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 // If some default pattern is an empty pattern set it to the first pattern for the language
List<DefaultPattern> newDefaultPatterns = new List<DefaultPattern>(); var newDefaultPatterns = new List<DefaultPattern>();
foreach (var defaultPattern in settings.DefaultPatterns) { foreach (var defaultPattern in settings.DefaultPatterns) {
RoutePattern correspondingPattern = null; 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)); patterns.RemoveAll(p => String.IsNullOrWhiteSpace(p.Name) && String.IsNullOrWhiteSpace(p.Pattern) && String.IsNullOrWhiteSpace(p.Description));
// Adding a null culture for the culture neutral pattern // Adding a null culture for the culture neutral pattern
List<string> cultures = new List<string>(); var cultures = new List<string>();
cultures.Add(null); cultures.Add(null);
cultures.AddRange(settings.SiteCultures); cultures.AddRange(settings.SiteCultures);