From 88c258ef55b1b057e167f4b2bde0ee6fa0af7b6f Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Thu, 31 Oct 2013 12:12:07 -0700 Subject: [PATCH] Shifting Menu Items --- .../Drivers/MenuWidgetPartDriver.cs | 21 ++--- .../Drivers/ShapeMenuItemPartDriver.cs | 4 +- .../Handlers/MenuItemPartHandler.cs | 9 +- .../Handlers/MenuWidgetPartHandler.cs | 5 +- .../Handlers/ShapeMenuItemPartHandler.cs | 11 --- src/Orchard.Web/Core/Navigation/Migrations.cs | 23 +---- .../Core/Navigation/Models/MenuItemPart.cs | 7 +- .../Navigation/Models/MenuItemPartRecord.cs | 7 -- .../Core/Navigation/Models/MenuWidgetPart.cs | 31 ++++--- .../Navigation/Models/MenuWidgetPartRecord.cs | 13 --- .../Navigation/Models/ShapeMenuItemPart.cs | 8 +- .../Models/ShapeMenuItemPartRecord.cs | 10 --- .../Services/DefaultMenuProvider.cs | 1 - src/Orchard.Web/Core/Orchard.Core.csproj | 7 +- .../Commands/WidgetCommands.cs | 2 +- .../Upgrade/Controllers/InfosetController.cs | 83 ++++++++++++++++++- .../Upgrade/Controllers/MenuController.cs | 2 +- .../Upgrade/Views/Infoset/Index.cshtml | 18 ++++ 18 files changed, 135 insertions(+), 127 deletions(-) delete mode 100644 src/Orchard.Web/Core/Navigation/Handlers/ShapeMenuItemPartHandler.cs delete mode 100644 src/Orchard.Web/Core/Navigation/Models/MenuItemPartRecord.cs delete mode 100644 src/Orchard.Web/Core/Navigation/Models/MenuWidgetPartRecord.cs delete mode 100644 src/Orchard.Web/Core/Navigation/Models/ShapeMenuItemPartRecord.cs diff --git a/src/Orchard.Web/Core/Navigation/Drivers/MenuWidgetPartDriver.cs b/src/Orchard.Web/Core/Navigation/Drivers/MenuWidgetPartDriver.cs index db5558cf1..d31fe909f 100644 --- a/src/Orchard.Web/Core/Navigation/Drivers/MenuWidgetPartDriver.cs +++ b/src/Orchard.Web/Core/Navigation/Drivers/MenuWidgetPartDriver.cs @@ -1,10 +1,7 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.Linq; -using System.Web.Routing; using Orchard.ContentManagement; -using Orchard.ContentManagement.Aspects; using Orchard.ContentManagement.Drivers; using Orchard.ContentManagement.Handlers; using Orchard.Core.Navigation.Models; @@ -44,12 +41,8 @@ namespace Orchard.Core.Navigation.Drivers { protected override DriverResult Display(MenuWidgetPart part, string displayType, dynamic shapeHelper) { return ContentShape( "Parts_MenuWidget", () => { - if(part.Menu == null) { - return null; - } - - var menu = _menuService.GetMenu(part.Menu.Id); - + var menu = _menuService.GetMenu(part.MenuContentItemId); + if(menu == null) { return null; } @@ -164,8 +157,9 @@ namespace Orchard.Core.Navigation.Drivers { protected override DriverResult Editor(MenuWidgetPart part, dynamic shapeHelper) { return ContentShape("Parts_MenuWidget_Edit", () => { + var model = new MenuWidgetViewModel { - CurrentMenuId = part.Menu == null ? -1 : part.Menu.Id, + CurrentMenuId = part.MenuContentItemId, StartLevel = part.StartLevel, StopLevel = part.Levels, Breadcrumb = part.Breadcrumb, @@ -188,8 +182,7 @@ namespace Orchard.Core.Navigation.Drivers { part.Breadcrumb = model.Breadcrumb; part.AddHomePage = model.AddHomePage; part.AddCurrentPage = model.AddCurrentPage; - part.ShowFullMenu = model.ShowFullMenu; - part.Menu = _contentManager.Get(model.CurrentMenuId).Record; + part.MenuContentItemId = model.CurrentMenuId; } return Editor(part, shapeHelper); @@ -203,11 +196,11 @@ namespace Orchard.Core.Navigation.Drivers { context.ImportAttribute(part.PartDefinition.Name, "AddHomePage", x => part.AddHomePage = Convert.ToBoolean(x)); context.ImportAttribute(part.PartDefinition.Name, "ShowFullMenu", x => part.ShowFullMenu = Convert.ToBoolean(x)); - context.ImportAttribute(part.PartDefinition.Name, "Menu", x => part.Menu = context.GetItemFromSession(x).Record); + context.ImportAttribute(part.PartDefinition.Name, "Menu", x => part.MenuContentItemId = context.GetItemFromSession(x).Id); } protected override void Exporting(MenuWidgetPart part, ExportContentContext context) { - var menuIdentity = _contentManager.GetItemMetadata(_contentManager.Get(part.Menu.Id)).Identity; + var menuIdentity = _contentManager.GetItemMetadata(_contentManager.Get(part.MenuContentItemId)).Identity; context.Element(part.PartDefinition.Name).SetAttributeValue("Menu", menuIdentity); context.Element(part.PartDefinition.Name).SetAttributeValue("StartLevel", part.StartLevel); diff --git a/src/Orchard.Web/Core/Navigation/Drivers/ShapeMenuItemPartDriver.cs b/src/Orchard.Web/Core/Navigation/Drivers/ShapeMenuItemPartDriver.cs index e697c8e66..b2c5dc554 100644 --- a/src/Orchard.Web/Core/Navigation/Drivers/ShapeMenuItemPartDriver.cs +++ b/src/Orchard.Web/Core/Navigation/Drivers/ShapeMenuItemPartDriver.cs @@ -37,7 +37,7 @@ namespace Orchard.Core.Navigation.Drivers { } protected override void Importing(ShapeMenuItemPart part, ImportContentContext context) { - IfNotNull(context.Attribute(part.PartDefinition.Name, "ShapeType"), x => part.Record.ShapeType = x); + IfNotNull(context.Attribute(part.PartDefinition.Name, "ShapeType"), x => part.ShapeType = x); } private static void IfNotNull(T value, Action then) where T : class { @@ -47,7 +47,7 @@ namespace Orchard.Core.Navigation.Drivers { } protected override void Exporting(ShapeMenuItemPart part, ExportContentContext context) { - context.Element(part.PartDefinition.Name).SetAttributeValue("ShapeType", part.Record.ShapeType); + context.Element(part.PartDefinition.Name).SetAttributeValue("ShapeType", part.ShapeType); } } } diff --git a/src/Orchard.Web/Core/Navigation/Handlers/MenuItemPartHandler.cs b/src/Orchard.Web/Core/Navigation/Handlers/MenuItemPartHandler.cs index 575f991cb..92cc8cffd 100644 --- a/src/Orchard.Web/Core/Navigation/Handlers/MenuItemPartHandler.cs +++ b/src/Orchard.Web/Core/Navigation/Handlers/MenuItemPartHandler.cs @@ -1,15 +1,10 @@ -using JetBrains.Annotations; -using Orchard.ContentManagement; -using Orchard.Core.Navigation.Models; -using Orchard.Data; +using Orchard.Core.Navigation.Models; using Orchard.ContentManagement.Handlers; namespace Orchard.Core.Navigation.Handlers { - [UsedImplicitly] public class MenuItemPartHandler : ContentHandler { - public MenuItemPartHandler(IRepository repository) { + public MenuItemPartHandler() { Filters.Add(new ActivatingFilter("MenuItem")); - Filters.Add(StorageFilter.For(repository)); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Navigation/Handlers/MenuWidgetPartHandler.cs b/src/Orchard.Web/Core/Navigation/Handlers/MenuWidgetPartHandler.cs index 8f0a47740..9cbc034dc 100644 --- a/src/Orchard.Web/Core/Navigation/Handlers/MenuWidgetPartHandler.cs +++ b/src/Orchard.Web/Core/Navigation/Handlers/MenuWidgetPartHandler.cs @@ -1,12 +1,9 @@ using Orchard.ContentManagement.Handlers; using Orchard.Core.Navigation.Models; -using Orchard.Data; namespace Orchard.Core.Navigation.Handlers { public class MenuWidgetPartHandler : ContentHandler { - public MenuWidgetPartHandler(IRepository repository) { - Filters.Add(StorageFilter.For(repository)); - + public MenuWidgetPartHandler() { OnInitializing((context, part) => { part.StartLevel = 1; }); } } diff --git a/src/Orchard.Web/Core/Navigation/Handlers/ShapeMenuItemPartHandler.cs b/src/Orchard.Web/Core/Navigation/Handlers/ShapeMenuItemPartHandler.cs deleted file mode 100644 index 64edfc040..000000000 --- a/src/Orchard.Web/Core/Navigation/Handlers/ShapeMenuItemPartHandler.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Orchard.Core.Navigation.Models; -using Orchard.Data; -using Orchard.ContentManagement.Handlers; - -namespace Orchard.Core.Navigation.Handlers { - public class ShapeMenuItemPartHandler : ContentHandler { - public ShapeMenuItemPartHandler(IRepository repository) { - Filters.Add(StorageFilter.For(repository)); - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Navigation/Migrations.cs b/src/Orchard.Web/Core/Navigation/Migrations.cs index 66e9d8f94..7b4715d51 100644 --- a/src/Orchard.Web/Core/Navigation/Migrations.cs +++ b/src/Orchard.Web/Core/Navigation/Migrations.cs @@ -10,12 +10,6 @@ namespace Orchard.Core.Navigation { .Attachable() .WithDescription("Provides an easy way to create a ContentMenuItem from the content editor.")); - SchemaBuilder.CreateTable("MenuItemPartRecord", - table => table - .ContentPartRecord() - .Column("Url", column => column.WithLength(1024)) - ); - SchemaBuilder.CreateTable("MenuPartRecord", table => table .ContentPartRecord() @@ -38,16 +32,6 @@ namespace Orchard.Core.Navigation { .WithPart("TitlePart") ); - SchemaBuilder.CreateTable("MenuWidgetPartRecord", table => table - .ContentPartRecord() - .Column("StartLevel") - .Column("Levels") - .Column("Breadcrumb") - .Column("AddHomePage") - .Column("AddCurrentPage") - .Column("Menu_id") - ); - ContentDefinitionManager.AlterTypeDefinition("MenuWidget", cfg => cfg .WithPart("CommonPart") .WithPart("IdentityPart") @@ -78,12 +62,7 @@ namespace Orchard.Core.Navigation { ContentDefinitionManager.AlterPartDefinition("AdminMenuPart", builder => builder .Attachable() .WithDescription("Adds a menu item to the Admin menu that links to this content item.")); - - SchemaBuilder.CreateTable("ShapeMenuItemPartRecord", - table => table.ContentPartRecord() - .Column("ShapeType") - ); - + ContentDefinitionManager.AlterTypeDefinition("ShapeMenuItem", cfg => cfg .WithPart("ShapeMenuItemPart") diff --git a/src/Orchard.Web/Core/Navigation/Models/MenuItemPart.cs b/src/Orchard.Web/Core/Navigation/Models/MenuItemPart.cs index 549485c12..e26371568 100644 --- a/src/Orchard.Web/Core/Navigation/Models/MenuItemPart.cs +++ b/src/Orchard.Web/Core/Navigation/Models/MenuItemPart.cs @@ -1,11 +1,10 @@ using Orchard.ContentManagement; namespace Orchard.Core.Navigation.Models { - public class MenuItemPart : ContentPart { - + public class MenuItemPart : ContentPart { public string Url { - get { return Record.Url; } - set { Record.Url = value; } + get { return this.Retrieve(x => x.Url); } + set { this.Store(x => x.Url, value); } } } } diff --git a/src/Orchard.Web/Core/Navigation/Models/MenuItemPartRecord.cs b/src/Orchard.Web/Core/Navigation/Models/MenuItemPartRecord.cs deleted file mode 100644 index c39cf0283..000000000 --- a/src/Orchard.Web/Core/Navigation/Models/MenuItemPartRecord.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Orchard.ContentManagement.Records; - -namespace Orchard.Core.Navigation.Models { - public class MenuItemPartRecord : ContentPartRecord { - public virtual string Url { get; set; } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Navigation/Models/MenuWidgetPart.cs b/src/Orchard.Web/Core/Navigation/Models/MenuWidgetPart.cs index 340f1c181..288ea1387 100644 --- a/src/Orchard.Web/Core/Navigation/Models/MenuWidgetPart.cs +++ b/src/Orchard.Web/Core/Navigation/Models/MenuWidgetPart.cs @@ -1,37 +1,36 @@ using Orchard.ContentManagement; -using Orchard.ContentManagement.Records; namespace Orchard.Core.Navigation.Models { - public class MenuWidgetPart : ContentPart { + public class MenuWidgetPart : ContentPart { public int StartLevel { - get { return Retrieve(x => x.StartLevel); } - set { Store(x => x.StartLevel, value); } + get { return this.Retrieve(x => x.StartLevel); } + set { this.Store(x => x.StartLevel, value); } } public int Levels { - get { return Retrieve(x => x.Levels); } - set { Store(x => x.Levels, value); } + get { return this.Retrieve(x => x.Levels); } + set { this.Store(x => x.Levels, value); } } public bool Breadcrumb { - get { return Retrieve(x => x.Breadcrumb); } - set { Store(x => x.Breadcrumb, value); } + get { return this.Retrieve(x => x.Breadcrumb); } + set { this.Store(x => x.Breadcrumb, value); } } public bool AddHomePage { - get { return Retrieve(x => x.AddHomePage); } - set { Store(x => x.AddHomePage, value); } + get { return this.Retrieve(x => x.AddHomePage); } + set { this.Store(x => x.AddHomePage, value); } } public bool AddCurrentPage { - get { return Retrieve(x => x.AddCurrentPage); } - set { Store(x => x.AddCurrentPage, value); } + get { return this.Retrieve(x => x.AddCurrentPage); } + set { this.Store(x => x.AddCurrentPage, value); } } - - public ContentItemRecord Menu { - get { return Record.Menu; } - set { Record.Menu = value; } + + public int MenuContentItemId { + get { return this.Retrieve(x => x.MenuContentItemId); } + set { this.Store(x => x.MenuContentItemId, value); } } public bool ShowFullMenu { diff --git a/src/Orchard.Web/Core/Navigation/Models/MenuWidgetPartRecord.cs b/src/Orchard.Web/Core/Navigation/Models/MenuWidgetPartRecord.cs deleted file mode 100644 index 76c58a2f2..000000000 --- a/src/Orchard.Web/Core/Navigation/Models/MenuWidgetPartRecord.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Orchard.ContentManagement.Records; - -namespace Orchard.Core.Navigation.Models { - public class MenuWidgetPartRecord : ContentPartRecord { - public virtual int StartLevel { get; set; } - public virtual int Levels { get; set; } - public virtual bool Breadcrumb { get; set; } - public virtual bool AddHomePage { get; set; } - public virtual bool AddCurrentPage { get; set; } - - public virtual ContentItemRecord Menu { get; set; } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Navigation/Models/ShapeMenuItemPart.cs b/src/Orchard.Web/Core/Navigation/Models/ShapeMenuItemPart.cs index 83bedbce5..f26f7e318 100644 --- a/src/Orchard.Web/Core/Navigation/Models/ShapeMenuItemPart.cs +++ b/src/Orchard.Web/Core/Navigation/Models/ShapeMenuItemPart.cs @@ -1,13 +1,13 @@ using Orchard.ContentManagement; namespace Orchard.Core.Navigation.Models { - public class ShapeMenuItemPart : ContentPart { + public class ShapeMenuItemPart : ContentPart { /// /// Maximum number of items to retrieve from db /// - public virtual string ShapeType { - get { return Record.ShapeType; } - set { Record.ShapeType = value; } + public string ShapeType { + get { return this.Retrieve(x => x.ShapeType); } + set { this.Store(x => x.ShapeType, value); } } } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Navigation/Models/ShapeMenuItemPartRecord.cs b/src/Orchard.Web/Core/Navigation/Models/ShapeMenuItemPartRecord.cs deleted file mode 100644 index adf8edb12..000000000 --- a/src/Orchard.Web/Core/Navigation/Models/ShapeMenuItemPartRecord.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Orchard.ContentManagement.Records; - -namespace Orchard.Core.Navigation.Models { - public class ShapeMenuItemPartRecord : ContentPartRecord { - /// - /// The shape to display - /// - public virtual string ShapeType { get; set; } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Navigation/Services/DefaultMenuProvider.cs b/src/Orchard.Web/Core/Navigation/Services/DefaultMenuProvider.cs index b5456481f..d153c4f41 100644 --- a/src/Orchard.Web/Core/Navigation/Services/DefaultMenuProvider.cs +++ b/src/Orchard.Web/Core/Navigation/Services/DefaultMenuProvider.cs @@ -17,7 +17,6 @@ namespace Orchard.Core.Navigation.Services { var menuParts = _contentManager .Query() .Where(x => x.MenuId == menu.Id) - .WithQueryHints(new QueryHints().ExpandRecords()) .List(); foreach (var menuPart in menuParts) { diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj index 24c512de2..8b2805cea 100644 --- a/src/Orchard.Web/Core/Orchard.Core.csproj +++ b/src/Orchard.Web/Core/Orchard.Core.csproj @@ -143,14 +143,12 @@ + - - - @@ -202,12 +200,10 @@ - - @@ -372,7 +368,6 @@ - diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Commands/WidgetCommands.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Commands/WidgetCommands.cs index 81fbd034a..044812188 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/Commands/WidgetCommands.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Commands/WidgetCommands.cs @@ -112,7 +112,7 @@ namespace Orchard.Widgets.Commands { if(menu != null) { widget.RenderTitle = false; - widget.As().Menu = menu.ContentItem.Record; + widget.As().MenuContentItemId = menu.ContentItem.Id; } } diff --git a/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs b/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs index ec4564f12..09100ac4a 100644 --- a/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs +++ b/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs @@ -48,7 +48,7 @@ namespace Upgrade.Controllers { var site = _orchardServices.WorkContext.CurrentSite.As(); // SiteSettingsPartRecord - _upgradeService.ExecuteReader("SELECT * FROM " + _upgradeService.GetPrefixedTableName("Orchard_Core_SiteSettingsPartRecord"), + _upgradeService.ExecuteReader("SELECT * FROM " + _upgradeService.GetPrefixedTableName("Settings_SiteSettingsPartRecord"), (reader, connection) => { site.HomePage = (string)reader["HomePage"]; site.PageSize = (int)reader["PageSize"]; @@ -61,15 +61,15 @@ namespace Upgrade.Controllers { site.SuperUser = (string)reader["SuperUser"]; }); - _upgradeService.ExecuteReader("DROP TABLE " + _upgradeService.GetPrefixedTableName("Orchard_Core_SiteSettingsPartRecord"), null); + _upgradeService.ExecuteReader("DROP TABLE " + _upgradeService.GetPrefixedTableName("Settings_SiteSettingsPartRecord"), null); // SiteSettings2PartRecord - _upgradeService.ExecuteReader("SELECT * FROM " + _upgradeService.GetPrefixedTableName("Orchard_Core_SiteSettings2PartRecord"), + _upgradeService.ExecuteReader("SELECT * FROM " + _upgradeService.GetPrefixedTableName("Settings_SiteSettings2PartRecord"), (reader, connection) => { site.BaseUrl = (string)reader["BaseUrl"]; }); - _upgradeService.ExecuteReader("DROP TABLE " + _upgradeService.GetPrefixedTableName("Orchard_Core_SiteSettings2PartRecord"), null); + _upgradeService.ExecuteReader("DROP TABLE " + _upgradeService.GetPrefixedTableName("Settings_SiteSettings2PartRecord"), null); // ThemeSiteSettingsPartRecord _upgradeService.ExecuteReader("SELECT * FROM " + _upgradeService.GetPrefixedTableName("Orchard_Themes_ThemeSiteSettingsPartRecord"), @@ -247,5 +247,80 @@ namespace Upgrade.Controllers { return new JsonResult { Data = lastContentItemId }; } + + [HttpPost] + public JsonResult MigrateMenuWidgetPart(int id) { + if (!_orchardServices.Authorizer.Authorize(StandardPermissions.SiteOwner)) + throw new AuthenticationException(""); + + var lastContentItemId = id; + + _upgradeService.ExecuteReader("SELECT TOP " + BATCH + " * FROM " + _upgradeService.GetPrefixedTableName("Navigation_MenuWidgetPartRecord") + " WHERE Id > " + id, + (reader, connection) => { + lastContentItemId = (int)reader["Id"]; + var contentPermissionPart = _orchardServices.ContentManager.Get(lastContentItemId); + + contentPermissionPart.As().Store("MenuWidgetPart", "StartLevel", (int)reader["StartLevel"]); + contentPermissionPart.As().Store("MenuWidgetPart", "Levels", (int)reader["Levels"]); + contentPermissionPart.As().Store("MenuWidgetPart", "Breadcrumb", (bool)reader["Breadcrumb"]); + contentPermissionPart.As().Store("MenuWidgetPart", "AddHomePage", (bool)reader["AddHomePage"]); + contentPermissionPart.As().Store("MenuWidgetPart", "AddCurrentPage", (bool)reader["AddCurrentPage"]); + contentPermissionPart.As().Store("MenuWidgetPart", "MenuContentItemId", (int)reader["Menu_id"]); + }); + + if (lastContentItemId == id) { + // delete the table only when there is no more content to process + _upgradeService.ExecuteReader("DROP TABLE " + _upgradeService.GetPrefixedTableName("Navigation_MenuWidgetPartRecord"), null); + } + + return new JsonResult { Data = lastContentItemId }; + } + + [HttpPost] + public JsonResult MigrateShapeMenuItemPart(int id) { + if (!_orchardServices.Authorizer.Authorize(StandardPermissions.SiteOwner)) + throw new AuthenticationException(""); + + var lastContentItemId = id; + + _upgradeService.ExecuteReader("SELECT TOP " + BATCH + " * FROM " + _upgradeService.GetPrefixedTableName("Navigation_ShapeMenuItemPartRecord") + " WHERE Id > " + id, + (reader, connection) => { + lastContentItemId = (int)reader["Id"]; + var contentPermissionPart = _orchardServices.ContentManager.Get(lastContentItemId); + + contentPermissionPart.As().Store("ShapeMenuItemPart", "ShapeType", (string)reader["ShapeType"]); + }); + + if (lastContentItemId == id) { + // delete the table only when there is no more content to process + _upgradeService.ExecuteReader("DROP TABLE " + _upgradeService.GetPrefixedTableName("Navigation_ShapeMenuItemPartRecord"), null); + } + + return new JsonResult { Data = lastContentItemId }; + } + + + [HttpPost] + public JsonResult MigrateMenuItemPart(int id) { + if (!_orchardServices.Authorizer.Authorize(StandardPermissions.SiteOwner)) + throw new AuthenticationException(""); + + var lastContentItemId = id; + + _upgradeService.ExecuteReader("SELECT TOP " + BATCH + " * FROM " + _upgradeService.GetPrefixedTableName("Navigation_MenuItemPartRecord") + " WHERE Id > " + id, + (reader, connection) => { + lastContentItemId = (int)reader["Id"]; + var contentPermissionPart = _orchardServices.ContentManager.Get(lastContentItemId); + + contentPermissionPart.As().Store("MenuItemPart", "Url", (string)reader["Url"]); + }); + + if (lastContentItemId == id) { + // delete the table only when there is no more content to process + _upgradeService.ExecuteReader("DROP TABLE " + _upgradeService.GetPrefixedTableName("Navigation_MenuItemPartRecord"), null); + } + + return new JsonResult { Data = lastContentItemId }; + } } } diff --git a/src/Orchard.Web/Modules/Upgrade/Controllers/MenuController.cs b/src/Orchard.Web/Modules/Upgrade/Controllers/MenuController.cs index 0b935aa4c..56be01d4c 100644 --- a/src/Orchard.Web/Modules/Upgrade/Controllers/MenuController.cs +++ b/src/Orchard.Web/Modules/Upgrade/Controllers/MenuController.cs @@ -76,7 +76,7 @@ namespace Upgrade.Controllers { var menuWidget = widget.As(); - menuWidget.Menu = mainMenu.ContentItem.Record; + menuWidget.MenuContentItemId = mainMenu.ContentItem.Id; menuWidget.StartLevel = 1; menuWidget.Levels = 1; diff --git a/src/Orchard.Web/Modules/Upgrade/Views/Infoset/Index.cshtml b/src/Orchard.Web/Modules/Upgrade/Views/Infoset/Index.cshtml index c101cde2f..80f3c6253 100644 --- a/src/Orchard.Web/Modules/Upgrade/Views/Infoset/Index.cshtml +++ b/src/Orchard.Web/Modules/Upgrade/Views/Infoset/Index.cshtml @@ -51,6 +51,24 @@ +
+ @T("Migrating Menu Widget Parts:") + @T("This migration step will copy all Menu Widget parts to Infosets.") + +
+ +
+ @T("Migrating Shape Menu Item Parts:") + @T("This migration step will copy all Shape Menu Item parts to Infosets.") + +
+ +
+ @T("Migrating Menu Item Parts:") + @T("This migration step will copy all Menu Item parts to Infosets.") + +
+ @using (Script.Foot()) {