mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Fixed KeyNotFoundException in AutoroutePart.
This fixes the issue where the autoroute part fails after a clean Orchard setup.
This commit is contained in:
@@ -94,10 +94,10 @@ namespace Orchard.Autoroute.Drivers {
|
||||
|
||||
// if the content type has no defaultPattern for autoroute, then use a default one
|
||||
if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, itemCulture, StringComparison.OrdinalIgnoreCase))) {
|
||||
//if we are in the default culture check the old setting
|
||||
// If we are in the default culture, check the old setting.
|
||||
if (String.Equals(itemCulture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase)) {
|
||||
if (!String.IsNullOrEmpty(part.TypePartDefinition.Settings["AutorouteSettings.DefaultPatternIndex"])) {
|
||||
string patternIndex = part.TypePartDefinition.Settings["AutorouteSettings.DefaultPatternIndex"];
|
||||
if (!String.IsNullOrWhiteSpace(settings.DefaultPatternIndex)) {
|
||||
var patternIndex = settings.DefaultPatternIndex;
|
||||
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = patternIndex, Culture = itemCulture });
|
||||
} else {
|
||||
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = itemCulture });
|
||||
|
@@ -67,7 +67,8 @@ namespace Orchard.Autoroute.Services {
|
||||
}
|
||||
|
||||
if (settings.UseCulturePattern) {
|
||||
//if we are creating from a form post we use the form value for culture
|
||||
// TODO: Refactor the below so that we don't need to know about Request.Form["Localization.SelectedCulture"].
|
||||
// If we are creating from a form post we use the form value for culture.
|
||||
HttpContextBase context = _httpContextAccessor.Current();
|
||||
if (!String.IsNullOrEmpty(context.Request.Form["Localization.SelectedCulture"])) {
|
||||
itemCulture = context.Request.Form["Localization.SelectedCulture"].ToString();
|
||||
@@ -140,9 +141,8 @@ namespace Orchard.Autoroute.Services {
|
||||
var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>();
|
||||
|
||||
if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
|
||||
ContentTypeDefinition definition = _contentDefinitionManager.GetTypeDefinition(contentType);
|
||||
var patternIndex = definition.Parts.Where(x => x.PartDefinition.Name == "AutoroutePart").FirstOrDefault().Settings["AutorouteSettings.DefaultPatternIndex"];
|
||||
//lazy updating from old setting
|
||||
var patternIndex = settings.DefaultPatternIndex;
|
||||
// Lazy updating from old setting.
|
||||
if (String.Equals(culture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase) && !String.IsNullOrWhiteSpace(patternIndex)) {
|
||||
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));
|
||||
|
@@ -22,6 +22,7 @@ namespace Orchard.Autoroute.Settings {
|
||||
AutomaticAdjustmentOnEdit = false;
|
||||
PatternDefinitions = "[]";
|
||||
DefaultPatternDefinitions = "[]";
|
||||
DefaultPatternIndex = null;
|
||||
}
|
||||
|
||||
public bool PerItemConfiguration { get; set; }
|
||||
@@ -31,6 +32,7 @@ namespace Orchard.Autoroute.Settings {
|
||||
public bool? IsDefault { get; set; }
|
||||
public List<string> SiteCultures { get; set; }
|
||||
public string DefaultSiteCulture { get; set; }
|
||||
public string DefaultPatternIndex { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A serialized Json array of <see cref="RoutePattern"/> objects
|
||||
@@ -102,6 +104,7 @@ namespace Orchard.Autoroute.Settings {
|
||||
builder.WithSetting("AutorouteSettings.AutomaticAdjustmentOnEdit", AutomaticAdjustmentOnEdit.ToString(CultureInfo.InvariantCulture));
|
||||
builder.WithSetting("AutorouteSettings.PatternDefinitions", PatternDefinitions);
|
||||
builder.WithSetting("AutorouteSettings.DefaultPatternDefinitions", DefaultPatternDefinitions);
|
||||
builder.WithSetting("AutorouteSettings.DefaultPatternIndex", DefaultPatternIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -70,8 +70,9 @@ namespace Orchard.Autoroute.Settings {
|
||||
if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
|
||||
//if we are in the default culture check the old setting
|
||||
if (String.Equals(culture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase)) {
|
||||
if (!String.IsNullOrEmpty(definition.Settings["AutorouteSettings.DefaultPatternIndex"])) {
|
||||
string patternIndex = definition.Settings["AutorouteSettings.DefaultPatternIndex"];
|
||||
var defaultPatternIndex = settings.DefaultPatternIndex;
|
||||
if (!String.IsNullOrWhiteSpace(defaultPatternIndex)) {
|
||||
var patternIndex = defaultPatternIndex;
|
||||
settings.DefaultPatterns.Add(new DefaultPattern { Culture = settings.DefaultSiteCulture, PatternIndex = patternIndex });
|
||||
} else {
|
||||
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = culture });
|
||||
|
Reference in New Issue
Block a user