From 0e4bcc96e7f60f657e4b485f6a036c8f7c8e9ff2 Mon Sep 17 00:00:00 2001 From: Ed Parry Date: Wed, 13 Jun 2018 20:38:03 +0100 Subject: [PATCH] U4-9367 Refined context menu for content in the recycle bin (#2687) --- .../Trees/ContentTreeController.cs | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web/Trees/ContentTreeController.cs b/src/Umbraco.Web/Trees/ContentTreeController.cs index ea644f5dc8..29b300cb62 100644 --- a/src/Umbraco.Web/Trees/ContentTreeController.cs +++ b/src/Umbraco.Web/Trees/ContentTreeController.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.Linq; using System.Net; -using System.Net.Http; using System.Net.Http.Formatting; using System.Web.Http; using Umbraco.Core; @@ -15,10 +13,7 @@ using Umbraco.Web.Mvc; using Umbraco.Web.WebApi.Filters; using umbraco; using umbraco.BusinessLogic.Actions; -using umbraco.businesslogic; using umbraco.businesslogic.Actions; -using umbraco.cms.businesslogic.web; -using umbraco.interfaces; using Umbraco.Web.Models.ContentEditing; using Umbraco.Web.Search; using Constants = Umbraco.Core.Constants; @@ -174,16 +169,13 @@ namespace Umbraco.Web.Trees return menu; } - var nodeMenu = GetAllNodeMenuItems(item); - var allowedMenuItems = GetAllowedUserMenuItemsForNode(item); - - FilterUserAllowedMenuItems(nodeMenu, allowedMenuItems); - - //if the media item is in the recycle bin, don't have a default menu, just show the regular menu + var nodeMenu = GetAllNodeMenuItems(item); + + //if the content node is in the recycle bin, don't have a default menu, just show the regular menu if (item.Path.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Contains(RecycleBinId.ToInvariantString())) { nodeMenu.DefaultMenuAlias = null; - nodeMenu.Items.Insert(2, new MenuItem(ActionRestore.Instance, ui.Text("actions", ActionRestore.Instance.Alias))); + nodeMenu = GetNodeMenuItemsForDeletedContent(item); } else { @@ -191,6 +183,8 @@ namespace Umbraco.Web.Trees nodeMenu.DefaultMenuAlias = ActionNew.Instance.Alias; } + var allowedMenuItems = GetAllowedUserMenuItemsForNode(item); + FilterUserAllowedMenuItems(nodeMenu, allowedMenuItems); return nodeMenu; } @@ -248,9 +242,25 @@ namespace Umbraco.Web.Trees return menu; } + /// + /// Returns a collection of all menu items that can be on a deleted (in recycle bin) content node + /// + /// + /// + protected MenuItemCollection GetNodeMenuItemsForDeletedContent(IUmbracoEntity item) + { + var menu = new MenuItemCollection(); + menu.Items.Add(ui.Text("actions", ActionRestore.Instance.Alias)); + menu.Items.Add(ui.Text("actions", ActionDelete.Instance.Alias)); + + menu.Items.Add(ui.Text("actions", ActionRefresh.Instance.Alias), true); + + return menu; + } + public IEnumerable Search(string query, int pageSize, long pageIndex, out long totalFound, string searchFrom = null) { return _treeSearcher.ExamineSearch(Umbraco, query, UmbracoEntityTypes.Document, pageSize, pageIndex, out totalFound, searchFrom); } } -} \ No newline at end of file +}