mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Adding migration of AutorouteSettings.DefaultPatternIndex to AutorouteSettings.DefaultPatternDefinitions
This commit is contained in:
@@ -1,15 +1,30 @@
|
||||
using Orchard.ContentManagement.MetaData;
|
||||
using Orchard.Autoroute.Models;
|
||||
using Orchard.Autoroute.Services;
|
||||
using Orchard.Autoroute.Settings;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.MetaData;
|
||||
using Orchard.Core.Contents.Extensions;
|
||||
using Orchard.Data.Migration;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Orchard.Autoroute {
|
||||
public class Migrations : DataMigrationImpl {
|
||||
private readonly IAutorouteService _autorouteService;
|
||||
private readonly IContentManager _contentManager;
|
||||
|
||||
public Migrations(
|
||||
IAutorouteService autorouteService,
|
||||
IContentManager contentManager) {
|
||||
_autorouteService = autorouteService;
|
||||
_contentManager = contentManager;
|
||||
}
|
||||
|
||||
public int Create() {
|
||||
SchemaBuilder.CreateTable("AutoroutePartRecord",
|
||||
table => table
|
||||
.ContentPartVersionRecord()
|
||||
.Column<string>("CustomPattern", c => c.WithLength(2048))
|
||||
.Column<bool>("UseCustomPattern", c=> c.WithDefault(false))
|
||||
.Column<bool>("UseCustomPattern", c => c.WithDefault(false))
|
||||
.Column<string>("DisplayAlias", c => c.WithLength(2048)));
|
||||
|
||||
ContentDefinitionManager.AlterPartDefinition("AutoroutePart", part => part
|
||||
@@ -44,6 +59,15 @@ namespace Orchard.Autoroute {
|
||||
.AddColumn<bool>("UseCulturePattern", c => c.WithDefault(false))
|
||||
);
|
||||
|
||||
// populate the AutorouteSettings.DefaultPatternDefinitions AutoroutePart settings
|
||||
foreach (var autoroutePart in _contentManager.Query<AutoroutePart, AutoroutePartRecord>().List()) {
|
||||
var settings = autoroutePart.Settings.GetModel<AutorouteSettings>();
|
||||
string patternIndex = autoroutePart.Settings["AutorouteSettings.DefaultPatternIndex"];
|
||||
settings.DefaultPatterns = new List<DefaultPattern> { new DefaultPattern { PatternIndex = patternIndex, Culture = "" } };
|
||||
|
||||
ContentDefinitionManager.AlterTypeDefinition(autoroutePart.TypeDefinition.Name, builder => builder.WithPart("AutoroutePart", settings.Build));
|
||||
}
|
||||
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,8 +140,10 @@ namespace Orchard.Autoroute.Services {
|
||||
var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>();
|
||||
|
||||
// return a default pattern if set
|
||||
if (settings.Patterns.Any(x => x.Culture == culture)) {
|
||||
return settings.Patterns.Where(x => x.Culture == culture).ElementAt(Convert.ToInt32(settings.DefaultPatterns.Where(x => x.Culture == culture).FirstOrDefault().PatternIndex));
|
||||
var patternCultureSearch = settings.Patterns.Any(x => x.Culture == culture) ? culture : null;
|
||||
var defaultPatternCultureSearch = settings.DefaultPatterns.Any(x => x.Culture == culture) ? culture : "";
|
||||
if (settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(settings.DefaultPatterns.Where(x => x.Culture == defaultPatternCultureSearch).FirstOrDefault().PatternIndex)) != null) {
|
||||
return settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(settings.DefaultPatterns.Where(x => x.Culture == defaultPatternCultureSearch).FirstOrDefault().PatternIndex));
|
||||
}
|
||||
|
||||
// return a default pattern if none is defined
|
||||
|
||||
Reference in New Issue
Block a user