mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +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 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 (!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.Equals(itemCulture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase)) {
|
||||||
if (!String.IsNullOrEmpty(part.TypePartDefinition.Settings["AutorouteSettings.DefaultPatternIndex"])) {
|
if (!String.IsNullOrWhiteSpace(settings.DefaultPatternIndex)) {
|
||||||
string patternIndex = part.TypePartDefinition.Settings["AutorouteSettings.DefaultPatternIndex"];
|
var patternIndex = settings.DefaultPatternIndex;
|
||||||
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = patternIndex, Culture = itemCulture });
|
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = patternIndex, Culture = itemCulture });
|
||||||
} else {
|
} else {
|
||||||
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = itemCulture });
|
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = itemCulture });
|
||||||
|
|||||||
@@ -67,7 +67,8 @@ namespace Orchard.Autoroute.Services {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (settings.UseCulturePattern) {
|
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();
|
HttpContextBase context = _httpContextAccessor.Current();
|
||||||
if (!String.IsNullOrEmpty(context.Request.Form["Localization.SelectedCulture"])) {
|
if (!String.IsNullOrEmpty(context.Request.Form["Localization.SelectedCulture"])) {
|
||||||
itemCulture = context.Request.Form["Localization.SelectedCulture"].ToString();
|
itemCulture = context.Request.Form["Localization.SelectedCulture"].ToString();
|
||||||
@@ -140,9 +141,8 @@ namespace Orchard.Autoroute.Services {
|
|||||||
var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>();
|
var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>();
|
||||||
|
|
||||||
if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
|
if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
|
||||||
ContentTypeDefinition definition = _contentDefinitionManager.GetTypeDefinition(contentType);
|
var patternIndex = settings.DefaultPatternIndex;
|
||||||
var patternIndex = definition.Parts.Where(x => x.PartDefinition.Name == "AutoroutePart").FirstOrDefault().Settings["AutorouteSettings.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) && !String.IsNullOrWhiteSpace(patternIndex)) {
|
||||||
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(settings.DefaultPatterns.Where(x => x.Culture == culture).FirstOrDefault().PatternIndex));
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ namespace Orchard.Autoroute.Settings {
|
|||||||
AutomaticAdjustmentOnEdit = false;
|
AutomaticAdjustmentOnEdit = false;
|
||||||
PatternDefinitions = "[]";
|
PatternDefinitions = "[]";
|
||||||
DefaultPatternDefinitions = "[]";
|
DefaultPatternDefinitions = "[]";
|
||||||
|
DefaultPatternIndex = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool PerItemConfiguration { get; set; }
|
public bool PerItemConfiguration { get; set; }
|
||||||
@@ -31,6 +32,7 @@ namespace Orchard.Autoroute.Settings {
|
|||||||
public bool? IsDefault { get; set; }
|
public bool? IsDefault { get; set; }
|
||||||
public List<string> SiteCultures { get; set; }
|
public List<string> SiteCultures { get; set; }
|
||||||
public string DefaultSiteCulture { get; set; }
|
public string DefaultSiteCulture { get; set; }
|
||||||
|
public string DefaultPatternIndex { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A serialized Json array of <see cref="RoutePattern"/> objects
|
/// 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.AutomaticAdjustmentOnEdit", AutomaticAdjustmentOnEdit.ToString(CultureInfo.InvariantCulture));
|
||||||
builder.WithSetting("AutorouteSettings.PatternDefinitions", PatternDefinitions);
|
builder.WithSetting("AutorouteSettings.PatternDefinitions", PatternDefinitions);
|
||||||
builder.WithSetting("AutorouteSettings.DefaultPatternDefinitions", DefaultPatternDefinitions);
|
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 (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, 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(culture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase)) {
|
if (String.Equals(culture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase)) {
|
||||||
if (!String.IsNullOrEmpty(definition.Settings["AutorouteSettings.DefaultPatternIndex"])) {
|
var defaultPatternIndex = settings.DefaultPatternIndex;
|
||||||
string patternIndex = definition.Settings["AutorouteSettings.DefaultPatternIndex"];
|
if (!String.IsNullOrWhiteSpace(defaultPatternIndex)) {
|
||||||
|
var patternIndex = defaultPatternIndex;
|
||||||
settings.DefaultPatterns.Add(new DefaultPattern { Culture = settings.DefaultSiteCulture, PatternIndex = patternIndex });
|
settings.DefaultPatterns.Add(new DefaultPattern { Culture = settings.DefaultSiteCulture, PatternIndex = patternIndex });
|
||||||
} else {
|
} else {
|
||||||
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = culture });
|
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = culture });
|
||||||
|
|||||||
Reference in New Issue
Block a user