From 4b93f3f493b1230dc1662d58e28c724d67b6a244 Mon Sep 17 00:00:00 2001 From: Chris Payne Date: Tue, 3 Nov 2015 14:44:25 +0000 Subject: [PATCH] Fires Updating and Updated events when menu items are re-ordered Fixes #6005 --- .../Navigation/Controllers/AdminController.cs | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs b/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs index 35c7c48d0..348a08968 100644 --- a/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs +++ b/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs @@ -1,14 +1,10 @@ using System.Collections.Generic; -using System.ComponentModel; using System.Linq; using System.Web.Mvc; -using System.Web.Routing; using Orchard.ContentManagement; -using Orchard.Core.Common.Models; using Orchard.Core.Navigation.Models; using Orchard.Core.Navigation.Services; using Orchard.Core.Navigation.ViewModels; -using Orchard.Core.Title.Models; using Orchard.Localization; using Orchard.Mvc.Extensions; using Orchard.UI; @@ -16,6 +12,7 @@ using Orchard.UI.Notify; using Orchard.UI.Navigation; using Orchard.Utility; using System; +using Orchard.ContentManagement.Handlers; using Orchard.Logging; using Orchard.Exceptions; @@ -24,17 +21,20 @@ namespace Orchard.Core.Navigation.Controllers { public class AdminController : Controller, IUpdateModel { private readonly IMenuService _menuService; private readonly INavigationManager _navigationManager; + private readonly IEnumerable _handlers; private readonly IMenuManager _menuManager; public AdminController( IOrchardServices orchardServices, IMenuService menuService, IMenuManager menuManager, - INavigationManager navigationManager) { + INavigationManager navigationManager, + IEnumerable handlers) { _menuService = menuService; _menuManager = menuManager; _navigationManager = navigationManager; - + _handlers = handlers; + Services = orchardServices; T = NullLocalizer.Instance; Logger = NullLogger.Instance; @@ -95,7 +95,16 @@ namespace Orchard.Core.Navigation.Controllers { if (menuItemEntries != null) { foreach (var menuItemEntry in menuItemEntries) { MenuPart menuPart = _menuService.Get(menuItemEntry.MenuItemId); - menuPart.MenuPosition = menuItemEntry.Position; + + if (menuPart.MenuPosition != menuItemEntry.Position) { + var context = new UpdateContentContext(menuPart.ContentItem); + + _handlers.Invoke(handler => handler.Updating(context), Logger); + + menuPart.MenuPosition = menuItemEntry.Position; + + _handlers.Invoke(handler => handler.Updated(context), Logger); + } } }