mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-21 19:34:40 +08:00
39
src/Orchard.Web/Core/Navigation/Handlers/MenuHandler.cs
Normal file
39
src/Orchard.Web/Core/Navigation/Handlers/MenuHandler.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using JetBrains.Annotations;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.Handlers;
|
||||
using Orchard.Core.Navigation.Services;
|
||||
using Orchard.Core.Title.Models;
|
||||
|
||||
namespace Orchard.Core.Navigation.Handlers {
|
||||
[UsedImplicitly]
|
||||
public class MenuHandler : ContentHandler {
|
||||
private readonly IMenuService _menuService;
|
||||
private readonly IContentManager _contentManager;
|
||||
|
||||
public MenuHandler(IMenuService menuService, IContentManager contentManager) {
|
||||
_menuService = menuService;
|
||||
_contentManager = contentManager;
|
||||
}
|
||||
|
||||
protected override void GetItemMetadata(GetContentItemMetadataContext context) {
|
||||
if(context.ContentItem.ContentType != "Menu") {
|
||||
return;
|
||||
}
|
||||
|
||||
context.Metadata.Identity.Add("name", context.ContentItem.As<TitlePart>().Title);
|
||||
}
|
||||
|
||||
protected override void Removing(RemoveContentContext context) {
|
||||
if (context.ContentItem.ContentType != "Menu") {
|
||||
return;
|
||||
}
|
||||
|
||||
// remove all menu items
|
||||
var menuParts = _menuService.GetMenuParts(context.ContentItem.Id);
|
||||
|
||||
foreach(var menuPart in menuParts) {
|
||||
_contentManager.Remove(menuPart.ContentItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user