From 89f7a31beff6bb065b5722c4a7fc69523f66a917 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 2 Oct 2013 20:00:01 +1000 Subject: [PATCH] Updates the Create/AddMenu overloads to ensure a name is specified, fixes all localization of all menu items for all new trees. --- .../MyPackage/Common/Js/MyPackage.js | 59 ------------- .../ServerSidePropertyEditorsController.cs | 15 ---- .../MyPackage/System/MyStartupHandler.cs | 41 --------- .../MyPackage/Trees/LegacyTestTree.cs | 35 +++++++- .../ServerEnvironment.cshtml | 9 -- .../App_Plugins/MyPackage/Views/Web.config | 58 ------------ src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 7 +- .../Trees/ContentTreeController.cs | 51 +++++------ .../Trees/ContentTreeControllerBase.cs | 4 +- .../Trees/DataTypeTreeController.cs | 7 +- .../Trees/LegacyTreeDataConverter.cs | 2 +- src/Umbraco.Web/Trees/MediaTreeController.cs | 16 ++-- src/Umbraco.Web/Trees/MemberTreeController.cs | 8 +- src/Umbraco.Web/Trees/Menu/MenuItem.cs | 12 ++- .../Trees/Menu/MenuItemCollection.cs | 88 ++++++++++++------- 15 files changed, 139 insertions(+), 273 deletions(-) delete mode 100644 src/Umbraco.Web.UI/App_Plugins/MyPackage/Common/Js/MyPackage.js delete mode 100644 src/Umbraco.Web.UI/App_Plugins/MyPackage/Controllers/ServerSidePropertyEditorsController.cs delete mode 100644 src/Umbraco.Web.UI/App_Plugins/MyPackage/System/MyStartupHandler.cs delete mode 100644 src/Umbraco.Web.UI/App_Plugins/MyPackage/Views/ServerSidePropertyEditors/ServerEnvironment.cshtml delete mode 100644 src/Umbraco.Web.UI/App_Plugins/MyPackage/Views/Web.config diff --git a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Common/Js/MyPackage.js b/src/Umbraco.Web.UI/App_Plugins/MyPackage/Common/Js/MyPackage.js deleted file mode 100644 index 9e84ccb37d..0000000000 --- a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Common/Js/MyPackage.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -(function () { - - angular.module("myPackage.directives", []); - angular.module("myPackage.controllers", []); - - angular.module("myPackage.directives").directive('valPostcode', function () { - - /// - /// A custom directive to validate for postcodes - /// - - return { - require: 'ngModel', - link: function (scope, elm, attrs, ctrl) { - - if (!attrs.valPostcode) - throw "valPostcode requires an attribute value specifying the country for the postcode"; - - var patternValidator = function (viewValue) { - //NOTE: we don't validate on empty values, use required validator for that - if (viewValue) { - var country = scope.$eval(attrs.valPostcode); - switch (country) { - case "Australia": - if (/^\d{4}$/.test(viewValue)) { - ctrl.$setValidity('valPostcode', true); - //reset the error msg - ctrl.errorMsg = ""; - return viewValue; - } - else { - // it is invalid, return undefined (no model update) - ctrl.$setValidity('valPostcode', false); - //assign an error msg property to the current validator - ctrl.errorMsg = "Australian postcodes must be a 4 digit number"; - return undefined; - } - - default: - throw "The country specified does not have validation logic applied"; - } - } - else { - // there is no value to validate so return that it is valid. - ctrl.$setValidity('valPostcode', true); - return viewValue; - } - }; - - ctrl.$formatters.push(patternValidator); - ctrl.$parsers.push(patternValidator); - } - }; - }); - - -})(); \ No newline at end of file diff --git a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Controllers/ServerSidePropertyEditorsController.cs b/src/Umbraco.Web.UI/App_Plugins/MyPackage/Controllers/ServerSidePropertyEditorsController.cs deleted file mode 100644 index 5671a9a870..0000000000 --- a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Controllers/ServerSidePropertyEditorsController.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Web.Mvc; - -namespace Umbraco.Web.UI.App_Plugins.MyPackage.Controllers -{ - - public class ServerSidePropertyEditorsController : Controller - { - [HttpGet] - public ActionResult ServerEnvironment() - { - return View(); - } - - } -} diff --git a/src/Umbraco.Web.UI/App_Plugins/MyPackage/System/MyStartupHandler.cs b/src/Umbraco.Web.UI/App_Plugins/MyPackage/System/MyStartupHandler.cs deleted file mode 100644 index 00d9904919..0000000000 --- a/src/Umbraco.Web.UI/App_Plugins/MyPackage/System/MyStartupHandler.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Collections.Generic; -using System.Web; -using System.Web.Mvc; -using System.Web.Routing; -using Umbraco.Core; -using Umbraco.Web.UI.JavaScript; - -namespace Umbraco.Web.UI.App_Plugins.MyPackage.System -{ - public class MyStartupHandler : ApplicationEventHandler - { - protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) - { - base.ApplicationStarted(umbracoApplication, applicationContext); - - //create a custom server variable to be exposed in JS - ServerVariablesParser.Parsing += (sender, dictionary) => - { - - var httpContext = HttpContext.Current; - if (httpContext == null) return; - - var urlHelper = new UrlHelper(new RequestContext(new HttpContextWrapper(httpContext), new RouteData())); - - dictionary.Add("MyPackage", new Dictionary() - { - {"serverEnvironmentView", urlHelper.Action("ServerEnvironment", "ServerSidePropertyEditors", new {area = "MyPackage"})} - }); - }; - - //For testing for now we'll route to /Belle/Main - var route = RouteTable.Routes.MapRoute( - "umbraco-server-side-property-editors", - "Belle/PropertyEditors/{controller}/{action}/{id}", - new { controller = "ServerSidePropertyEditors", action = "Index", id = UrlParameter.Optional }); - //assign it to an area so that the plugin view engine looks for us - route.DataTokens.Add("area", "MyPackage"); - } - - } -} \ No newline at end of file diff --git a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Trees/LegacyTestTree.cs b/src/Umbraco.Web.UI/App_Plugins/MyPackage/Trees/LegacyTestTree.cs index 0cd5d43d8a..8655af9b11 100644 --- a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Trees/LegacyTestTree.cs +++ b/src/Umbraco.Web.UI/App_Plugins/MyPackage/Trees/LegacyTestTree.cs @@ -1,8 +1,41 @@ -using System.Text; +using System; +using System.Net.Http.Formatting; +using System.Text; +using Umbraco.Core; +using Umbraco.Web.Mvc; +using Umbraco.Web.Trees; +using Umbraco.Web.Trees.Menu; using umbraco.cms.presentation.Trees; +using Constants = Umbraco.Core.Constants; namespace Umbraco.Web.UI.App_Plugins.MyPackage.Trees { + //[Tree(Constants.Applications.Settings, "myTree", "My Tree")] + //[PluginController("MyPackage")] + //public class MyCustomTree : TreeController + //{ + // protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection queryStrings) + // { + // if (id == Constants.System.Root.ToInvariantString()) + // { + // var tree = new TreeNodeCollection + // { + // CreateTreeNode("1", queryStrings, "My Node 1"), + // CreateTreeNode("2", queryStrings, "My Node 2"), + // CreateTreeNode("3", queryStrings, "My Node 3") + // }; + // return tree; + // } + // throw new NotSupportedException(); + // } + + // protected override MenuItemCollection GetMenuForNode(string id, FormDataCollection queryStrings) + // { + // var menu = new MenuItemCollection(); + // menu.AddMenuItem(new MenuItem("create", "Create")); + // } + //} + public class LegacyTestTree : BaseTree { public LegacyTestTree(string application) : base(application) diff --git a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Views/ServerSidePropertyEditors/ServerEnvironment.cshtml b/src/Umbraco.Web.UI/App_Plugins/MyPackage/Views/ServerSidePropertyEditors/ServerEnvironment.cshtml deleted file mode 100644 index f949999089..0000000000 --- a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Views/ServerSidePropertyEditors/ServerEnvironment.cshtml +++ /dev/null @@ -1,9 +0,0 @@ -@model dynamic - - -

- Computer Name@Environment.MachineName -

-

- Computer Time@DateTime.Now -

\ No newline at end of file diff --git a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Views/Web.config b/src/Umbraco.Web.UI/App_Plugins/MyPackage/Views/Web.config deleted file mode 100644 index f179ab8806..0000000000 --- a/src/Umbraco.Web.UI/App_Plugins/MyPackage/Views/Web.config +++ /dev/null @@ -1,58 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 2e2b2089e2..06b5f301ab 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -292,11 +292,9 @@ Properties\SolutionInfo.cs - - default.aspx @@ -590,7 +588,6 @@ - @@ -615,8 +612,6 @@ - - 404handlers.config @@ -2540,8 +2535,8 @@ - + diff --git a/src/Umbraco.Web/Trees/ContentTreeController.cs b/src/Umbraco.Web/Trees/ContentTreeController.cs index ffa35655e1..080ca2a559 100644 --- a/src/Umbraco.Web/Trees/ContentTreeController.cs +++ b/src/Umbraco.Web/Trees/ContentTreeController.cs @@ -106,8 +106,8 @@ namespace Umbraco.Web.Trees .Select(x => new MenuItem(x)); //these two are the standard items - menu.AddMenuItem(); - menu.AddMenuItem(true).ConvertLegacyMenuItem(null, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionNew.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionSort.Instance.Alias), true).ConvertLegacyMenuItem(null, "content", "content"); //filter the standard items FilterUserAllowedMenuItems(menu, nodeActions); @@ -118,14 +118,9 @@ namespace Umbraco.Web.Trees } // add default actions for *all* users - menu.AddMenuItem().ConvertLegacyMenuItem(null, "content", "content"); - menu.AddMenuItem(true); - - foreach (var menuItem in menu.MenuItems) - { - menuItem.Name = ui.Text("actions", menuItem.Alias); - } - + menu.AddMenuItem(ui.Text("actions", ActionRePublish.Instance.Alias)).ConvertLegacyMenuItem(null, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionRefresh.Instance.Alias), true); + return menu; } @@ -150,10 +145,6 @@ namespace Umbraco.Web.Trees //set the default to create nodeMenu.DefaultMenuAlias = ActionNew.Instance.Alias; - foreach (var menuItem in nodeMenu.MenuItems) - { - menuItem.Name = ui.Text("actions", menuItem.Alias); - } return nodeMenu; } @@ -170,26 +161,26 @@ namespace Umbraco.Web.Trees protected MenuItemCollection GetAllNodeMenuItems(IUmbracoEntity item) { var menu = new MenuItemCollection(); - menu.AddMenuItem(); - menu.AddMenuItem(true); + menu.AddMenuItem(ui.Text("actions", ActionNew.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionDelete.Instance.Alias)); //need to ensure some of these are converted to the legacy system - until we upgrade them all to be angularized. - menu.AddMenuItem(true); - menu.AddMenuItem(); - - menu.AddMenuItem(true).ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionMove.Instance.Alias), true); + menu.AddMenuItem(ui.Text("actions", ActionCopy.Instance.Alias)); - menu.AddMenuItem().ConvertLegacyMenuItem(item, "content", "content"); - menu.AddMenuItem(true).ConvertLegacyMenuItem(item, "content", "content"); - menu.AddMenuItem().ConvertLegacyMenuItem(item, "content", "content"); - menu.AddMenuItem().ConvertLegacyMenuItem(item, "content", "content"); - menu.AddMenuItem().ConvertLegacyMenuItem(item, "content", "content"); - menu.AddMenuItem(true).ConvertLegacyMenuItem(item, "content", "content"); - menu.AddMenuItem(true).ConvertLegacyMenuItem(item, "content", "content"); - menu.AddMenuItem(true).ConvertLegacyMenuItem(item, "content", "content"); - menu.AddMenuItem().ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionSort.Instance.Alias), true).ConvertLegacyMenuItem(item, "content", "content"); - menu.AddMenuItem(true); + menu.AddMenuItem(ui.Text("actions", ActionRollback.Instance.Alias)).ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionPublish.Instance.Alias), true).ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionToPublish.Instance.Alias)).ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionAssignDomain.Instance.Alias)).ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionRights.Instance.Alias)).ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionProtect.Instance.Alias), true).ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionUnPublish.Instance.Alias), true).ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionNotify.Instance.Alias), true).ConvertLegacyMenuItem(item, "content", "content"); + menu.AddMenuItem(ui.Text("actions", ActionSendToTranslate.Instance.Alias)).ConvertLegacyMenuItem(item, "content", "content"); + + menu.AddMenuItem(ui.Text("actions", ActionRefresh.Instance.Alias), true); return menu; } diff --git a/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs b/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs index a1e646e70a..ff4a6f2fd1 100644 --- a/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs +++ b/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs @@ -96,8 +96,8 @@ namespace Umbraco.Web.Trees if (RecycleBinId.ToInvariantString() == id) { var menu = new MenuItemCollection(); - menu.AddMenuItem(); - menu.AddMenuItem(true); + menu.AddMenuItem(ui.Text("actions", ActionEmptyTranscan.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionRefresh.Instance.Alias), true); return menu; } return PerformGetMenuForNode(id, queryStrings); diff --git a/src/Umbraco.Web/Trees/DataTypeTreeController.cs b/src/Umbraco.Web/Trees/DataTypeTreeController.cs index 278b4a188b..348fa88628 100644 --- a/src/Umbraco.Web/Trees/DataTypeTreeController.cs +++ b/src/Umbraco.Web/Trees/DataTypeTreeController.cs @@ -7,6 +7,7 @@ using System.Web.Http; using Umbraco.Core; using Umbraco.Web.Mvc; using Umbraco.Web.Trees.Menu; +using umbraco; using umbraco.BusinessLogic.Actions; using Constants = Umbraco.Core.Constants; @@ -45,13 +46,13 @@ namespace Umbraco.Web.Trees if (id == Constants.System.Root.ToInvariantString()) { // root actions - menu.AddMenuItem(); - menu.AddMenuItem(true); + menu.AddMenuItem(ui.Text("actions", ActionNew.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionRefresh.Instance.Alias), true); return menu; } //only have delete for each node - menu.AddMenuItem(); + menu.AddMenuItem(ui.Text("actions", ActionDelete.Instance.Alias)); return menu; } } diff --git a/src/Umbraco.Web/Trees/LegacyTreeDataConverter.cs b/src/Umbraco.Web/Trees/LegacyTreeDataConverter.cs index d7fb72d053..290c722cd0 100644 --- a/src/Umbraco.Web/Trees/LegacyTreeDataConverter.cs +++ b/src/Umbraco.Web/Trees/LegacyTreeDataConverter.cs @@ -147,7 +147,7 @@ namespace Umbraco.Web.Trees } else { - var menuItem = collection.AddMenuItem(t); + var menuItem = collection.AddMenuItem(t, ui.Text("actions", t.Alias)); var currentAction = t; diff --git a/src/Umbraco.Web/Trees/MediaTreeController.cs b/src/Umbraco.Web/Trees/MediaTreeController.cs index e4ebb5a5e0..8f806f980e 100644 --- a/src/Umbraco.Web/Trees/MediaTreeController.cs +++ b/src/Umbraco.Web/Trees/MediaTreeController.cs @@ -76,9 +76,9 @@ namespace Umbraco.Web.Trees } // root actions - menu.AddMenuItem(); - menu.AddMenuItem(true).ConvertLegacyMenuItem(null, "media", "media"); - menu.AddMenuItem(true); + menu.AddMenuItem(ui.Text("actions", ActionNew.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionSort.Instance.Alias), true).ConvertLegacyMenuItem(null, "media", "media"); + menu.AddMenuItem(ui.Text("actions", ActionRefresh.Instance.Alias), true); return menu; } @@ -93,11 +93,11 @@ namespace Umbraco.Web.Trees throw new HttpResponseException(HttpStatusCode.NotFound); } //return a normal node menu: - menu.AddMenuItem(); - menu.AddMenuItem(); - menu.AddMenuItem(); - menu.AddMenuItem().ConvertLegacyMenuItem(null, "media", "media"); - menu.AddMenuItem(true); + menu.AddMenuItem(ui.Text("actions", ActionNew.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionMove.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionDelete.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionSort.Instance.Alias)).ConvertLegacyMenuItem(null, "media", "media"); + menu.AddMenuItem(ui.Text("actions", ActionRefresh.Instance.Alias), true); return menu; } diff --git a/src/Umbraco.Web/Trees/MemberTreeController.cs b/src/Umbraco.Web/Trees/MemberTreeController.cs index 081f7c8c33..50c22812eb 100644 --- a/src/Umbraco.Web/Trees/MemberTreeController.cs +++ b/src/Umbraco.Web/Trees/MemberTreeController.cs @@ -79,13 +79,13 @@ namespace Umbraco.Web.Trees menu.DefaultMenuAlias = ActionNew.Instance.Alias; // root actions - menu.AddMenuItem(); - menu.AddMenuItem(true); + menu.AddMenuItem(ui.Text("actions", ActionNew.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionRefresh.Instance.Alias), true); return menu; } - menu.AddMenuItem(); - menu.AddMenuItem(true); + menu.AddMenuItem(ui.Text("actions", ActionDelete.Instance.Alias)); + menu.AddMenuItem(ui.Text("actions", ActionRefresh.Instance.Alias), true); return menu; } } diff --git a/src/Umbraco.Web/Trees/Menu/MenuItem.cs b/src/Umbraco.Web/Trees/Menu/MenuItem.cs index a417a0043c..ed5d9c5778 100644 --- a/src/Umbraco.Web/Trees/Menu/MenuItem.cs +++ b/src/Umbraco.Web/Trees/Menu/MenuItem.cs @@ -2,6 +2,7 @@ using System.Runtime.Serialization; using umbraco.interfaces; using System.Collections.Generic; +using Umbraco.Core; namespace Umbraco.Web.Trees.Menu { @@ -16,10 +17,17 @@ namespace Umbraco.Web.Trees.Menu AdditionalData = new Dictionary(); } - public MenuItem(IAction legacyMenu) + public MenuItem(string alias, string name) : this() { - Name = legacyMenu.Alias; + Alias = alias; + Name = name; + } + + public MenuItem(IAction legacyMenu, string name = "") + : this() + { + Name = name.IsNullOrWhiteSpace() ? legacyMenu.Alias : name; Alias = legacyMenu.Alias; SeperatorBefore = false; Icon = legacyMenu.Icon; diff --git a/src/Umbraco.Web/Trees/Menu/MenuItemCollection.cs b/src/Umbraco.Web/Trees/Menu/MenuItemCollection.cs index 6f88ddfdb6..626a7f9f20 100644 --- a/src/Umbraco.Web/Trees/Menu/MenuItemCollection.cs +++ b/src/Umbraco.Web/Trees/Menu/MenuItemCollection.cs @@ -42,7 +42,9 @@ namespace Umbraco.Web.Trees.Menu /// /// Adds a menu item /// - internal MenuItem AddMenuItem(IAction action) + /// + /// The text to display for the menu item, will default to the IAction alias if not specified + internal MenuItem AddMenuItem(IAction action, string name) { var item = new MenuItem(action); @@ -68,14 +70,21 @@ namespace Umbraco.Web.Trees.Menu { _menuItems.Add(item); } - - //TODO: Implement more overloads for MenuItem with dictionary vals - - public TMenuItem AddMenuItem(bool hasSeparator = false, IDictionary additionalData = null) + + /// + /// Adds a menu item + /// + /// + /// + /// + /// The text to display for the menu item, will default to the IAction alias if not specified + /// + /// + public TMenuItem AddMenuItem(string name, bool hasSeparator = false, IDictionary additionalData = null) where TAction : IAction where TMenuItem : MenuItem, new() { - var item = CreateMenuItem(hasSeparator, additionalData); + var item = CreateMenuItem(name, hasSeparator, additionalData); if (item == null) return null; var customMenuItem = new TMenuItem @@ -95,11 +104,12 @@ namespace Umbraco.Web.Trees.Menu /// /// Adds a menu item /// + /// The text to display for the menu item, will default to the IAction alias if not specified /// - public MenuItem AddMenuItem() + public MenuItem AddMenuItem(string name) where T : IAction { - return AddMenuItem(false, null); + return AddMenuItem(name, false, null); } /// @@ -108,23 +118,51 @@ namespace Umbraco.Web.Trees.Menu /// /// /// + /// The text to display for the menu item, will default to the IAction alias if not specified /// - public MenuItem AddMenuItem(string key, string value, bool hasSeparator = false) + public MenuItem AddMenuItem(string name, string key, string value, bool hasSeparator = false) where T : IAction { - return AddMenuItem(hasSeparator, new Dictionary { { key, value } }); + return AddMenuItem(name, hasSeparator, new Dictionary { { key, value } }); } - internal MenuItem CreateMenuItem(bool hasSeparator = false, IDictionary additionalData = null) + /// + /// Adds a menu item with a dictionary which is merged to the AdditionalData bag + /// + /// + /// + /// /// The text to display for the menu item, will default to the IAction alias if not specified + /// + public MenuItem AddMenuItem(string name, bool hasSeparator = false, IDictionary additionalData = null) + where T : IAction + { + var item = CreateMenuItem(name, hasSeparator, additionalData); + if (item != null) + { + _menuItems.Add(item); + return item; + } + return null; + } + + /// + /// + /// + /// + /// + /// The text to display for the menu item, will default to the IAction alias if not specified + /// + /// + internal MenuItem CreateMenuItem(string name, bool hasSeparator = false, IDictionary additionalData = null) where T : IAction { var item = ActionsResolver.Current.GetAction(); if (item != null) { - var menuItem = new MenuItem(item) - { - SeperatorBefore = hasSeparator - }; + var menuItem = new MenuItem(item, name) + { + SeperatorBefore = hasSeparator + }; if (additionalData != null) { @@ -134,7 +172,7 @@ namespace Umbraco.Web.Trees.Menu } } - DetectLegacyActionMenu(typeof (T), menuItem); + DetectLegacyActionMenu(typeof(T), menuItem); //TODO: Once we implement 'real' menu items, not just IActions we can implement this since // people may need to pass specific data to their menu items @@ -147,24 +185,6 @@ namespace Umbraco.Web.Trees.Menu return null; } - /// - /// Adds a menu item with a dictionary which is merged to the AdditionalData bag - /// - /// - /// - /// - public MenuItem AddMenuItem(bool hasSeparator = false, IDictionary additionalData = null) - where T : IAction - { - var item = CreateMenuItem(hasSeparator, additionalData); - if (item != null) - { - _menuItems.Add(item); - return item; - } - return null; - } - /// /// Checks if the IAction type passed in is attributed with LegacyActionMenuItemAttribute and if so /// ensures that the correct action metadata is added.