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.Core.Contents.Extensions;
|
||||||
using Orchard.Data.Migration;
|
using Orchard.Data.Migration;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Orchard.Autoroute {
|
namespace Orchard.Autoroute {
|
||||||
public class Migrations : DataMigrationImpl {
|
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() {
|
public int Create() {
|
||||||
SchemaBuilder.CreateTable("AutoroutePartRecord",
|
SchemaBuilder.CreateTable("AutoroutePartRecord",
|
||||||
table => table
|
table => table
|
||||||
.ContentPartVersionRecord()
|
.ContentPartVersionRecord()
|
||||||
.Column<string>("CustomPattern", c => c.WithLength(2048))
|
.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)));
|
.Column<string>("DisplayAlias", c => c.WithLength(2048)));
|
||||||
|
|
||||||
ContentDefinitionManager.AlterPartDefinition("AutoroutePart", part => part
|
ContentDefinitionManager.AlterPartDefinition("AutoroutePart", part => part
|
||||||
@@ -44,6 +59,15 @@ namespace Orchard.Autoroute {
|
|||||||
.AddColumn<bool>("UseCulturePattern", c => c.WithDefault(false))
|
.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;
|
return 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,8 +140,10 @@ namespace Orchard.Autoroute.Services {
|
|||||||
var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>();
|
var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>();
|
||||||
|
|
||||||
// return a default pattern if set
|
// return a default pattern if set
|
||||||
if (settings.Patterns.Any(x => x.Culture == culture)) {
|
var patternCultureSearch = settings.Patterns.Any(x => x.Culture == culture) ? culture : null;
|
||||||
return settings.Patterns.Where(x => x.Culture == culture).ElementAt(Convert.ToInt32(settings.DefaultPatterns.Where(x => x.Culture == culture).FirstOrDefault().PatternIndex));
|
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
|
// return a default pattern if none is defined
|
||||||
|
|||||||
Reference in New Issue
Block a user