diff --git a/src/Orchard.Web/Core/Contents/AdminMenu.cs b/src/Orchard.Web/Core/Contents/AdminMenu.cs index f3bb709c3..347090532 100644 --- a/src/Orchard.Web/Core/Contents/AdminMenu.cs +++ b/src/Orchard.Web/Core/Contents/AdminMenu.cs @@ -27,6 +27,7 @@ namespace Orchard.Core.Contents { var contentTypes = contentTypeDefinitions.Where(ctd => ctd.Settings.GetModel().Creatable).OrderBy(ctd => ctd.DisplayName); if (contentTypes.Count() > 0) { builder.Add(T("New"), "-1", menu => { + menu.LinkToFirstChild(false); foreach (var contentTypeDefinition in contentTypes) { var ci = _contentManager.New(contentTypeDefinition.Name); var cim = _contentManager.GetItemMetadata(ci); diff --git a/src/Orchard.Web/Themes/TheAdmin/Views/Menu.cshtml b/src/Orchard.Web/Themes/TheAdmin/Views/Menu.cshtml index ce2ec4b5c..715be0e3b 100644 --- a/src/Orchard.Web/Themes/TheAdmin/Views/Menu.cshtml +++ b/src/Orchard.Web/Themes/TheAdmin/Views/Menu.cshtml @@ -16,7 +16,7 @@ var firstOfTheSecond = secondLevelMenuItems.FirstOrDefault(); var sectionHeaderMarkup = firstLevelMenuItem.RouteValues != null || HasText(firstLevelMenuItem.Url) ? Html.Link(sectionHeaderText, (string)firstLevelMenuItem.Href) - : firstOfTheSecond != null + : firstOfTheSecond != null && firstLevelMenuItem.LinkToFirstChild ? Html.Link(sectionHeaderText, (string)firstOfTheSecond.Href) : new HtmlString(string.Format("{0}", Html.Encode(sectionHeaderText))); diff --git a/src/Orchard/UI/Navigation/MenuFilter.cs b/src/Orchard/UI/Navigation/MenuFilter.cs index efc437cf9..6e2a80875 100644 --- a/src/Orchard/UI/Navigation/MenuFilter.cs +++ b/src/Orchard/UI/Navigation/MenuFilter.cs @@ -41,6 +41,7 @@ namespace Orchard.UI.Navigation { var menuItemShape = shapeFactory.MenuItem() .Text(menuItem.Text) .Href(menuItem.Href) + .LinkToFirstChild(menuItem.LinkToFirstChild) .RouteValues(menuItem.RouteValues) .Item(menuItem) .Menu(menu) diff --git a/src/Orchard/UI/Navigation/MenuItem.cs b/src/Orchard/UI/Navigation/MenuItem.cs index 73bef8dc3..0e9d095ab 100644 --- a/src/Orchard/UI/Navigation/MenuItem.cs +++ b/src/Orchard/UI/Navigation/MenuItem.cs @@ -7,12 +7,14 @@ namespace Orchard.UI.Navigation { public class MenuItem { public MenuItem() { Permissions = Enumerable.Empty(); + LinkToFirstChild = true; } public string Text { get; set; } public string Url { get; set; } public string Href { get; set; } public string Position { get; set; } + public bool LinkToFirstChild { get; set; } public RouteValueDictionary RouteValues { get; set; } public IEnumerable Items { get; set; } public IEnumerable Permissions { get; set; } diff --git a/src/Orchard/UI/Navigation/NavigationItemBuilder.cs b/src/Orchard/UI/Navigation/NavigationItemBuilder.cs index 61bc5da3a..b809c918f 100644 --- a/src/Orchard/UI/Navigation/NavigationItemBuilder.cs +++ b/src/Orchard/UI/Navigation/NavigationItemBuilder.cs @@ -28,6 +28,11 @@ namespace Orchard.UI.Navigation { return this; } + public NavigationItemBuilder LinkToFirstChild(bool value) { + _item.LinkToFirstChild = value; + return this; + } + public NavigationItemBuilder Permission(Permission permission) { _item.Permissions = _item.Permissions.Concat(new[]{permission}); return this; diff --git a/src/Orchard/UI/Navigation/NavigationManager.cs b/src/Orchard/UI/Navigation/NavigationManager.cs index 125225eb2..0914df1f0 100644 --- a/src/Orchard/UI/Navigation/NavigationManager.cs +++ b/src/Orchard/UI/Navigation/NavigationManager.cs @@ -73,6 +73,7 @@ namespace Orchard.UI.Navigation { RouteValues = item.RouteValues, Text = item.Text, Url = item.Url, + LinkToFirstChild = item.LinkToFirstChild, Href = item.Href }; } @@ -106,6 +107,7 @@ namespace Orchard.UI.Navigation { Text = items.First().Text, Url = items.First().Url, Href = items.First().Href, + LinkToFirstChild = items.First().LinkToFirstChild, RouteValues = items.First().RouteValues, Items = Merge(items.Select(x => x.Items)).ToArray(), Position = SelectBestPositionValue(items.Select(x => x.Position)),