Fixed alias generation.

The Specflow tests revealed a bug where a default pattern would be used instead of the configured one.
This commit is contained in:
Sipke Schoorstra
2015-09-11 19:25:55 +01:00
parent 8b9189f750
commit db6d1912a7

View File

@@ -138,13 +138,18 @@ namespace Orchard.Autoroute.Services {
public RoutePattern GetDefaultPattern(string contentType, string culture) { public RoutePattern GetDefaultPattern(string contentType, string culture) {
var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>(); var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>();
var defaultPattern = settings.DefaultPatterns.FirstOrDefault(x => x.Culture == culture);
var defaultPatternIndex = defaultPattern != null ? defaultPattern.PatternIndex : "0";
if (String.IsNullOrWhiteSpace(defaultPatternIndex))
defaultPatternIndex = "0";
if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) { if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
var patternIndex = settings.DefaultPatternIndex; var patternIndex = String.IsNullOrWhiteSpace(settings.DefaultPatternIndex) ? "0" : settings.DefaultPatternIndex;
// Lazy updating from old setting. // Lazy updating from old setting.
if (String.Equals(culture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase) && !String.IsNullOrWhiteSpace(patternIndex)) { if (String.Equals(culture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase)) {
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = patternIndex, Culture = culture }); settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = patternIndex, Culture = culture });
return settings.Patterns.Where(x => x.Culture == null).ElementAt(Convert.ToInt32(settings.DefaultPatterns.Where(x => x.Culture == culture).FirstOrDefault().PatternIndex)); return settings.Patterns.Where(x => x.Culture == null).ElementAt(Convert.ToInt32(defaultPatternIndex));
} }
else { else {
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = culture }); settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = culture });
@@ -152,17 +157,16 @@ namespace Orchard.Autoroute.Services {
} }
} }
// return a default pattern if set // Return a default pattern if set.
var patternCultureSearch = settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)) ? culture : null; var patternCultureSearch = settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)) ? culture : null;
var defaultPatternCultureSearch = settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)) ? culture : null;
if (settings.Patterns.Any()) { if (settings.Patterns.Any()) {
if (settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(settings.DefaultPatterns.Where(x => x.Culture == defaultPatternCultureSearch).FirstOrDefault().PatternIndex)) != null) { if (settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(defaultPatternIndex)) != null) {
return settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(settings.DefaultPatterns.Where(x => x.Culture == defaultPatternCultureSearch).FirstOrDefault().PatternIndex)); return settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(defaultPatternIndex));
}; };
} }
// return a default pattern if none is defined // Return a default pattern if none is defined.
return new RoutePattern { Name = "Title", Description = "my-title", Pattern = "{Content.Slug}", Culture = culture }; return new RoutePattern { Name = "Title", Description = "my-title", Pattern = "{Content.Slug}", Culture = culture };
} }