Adding Url to the Navigation MenuItem and making use of it in the MainMenu

- giving it a Url property
- adding/changing NavigationBuilder Add methods to account for also being able to set the url
- updating the MainMenu to be able to add menu items w/ or w/out a Url (based on Is<MenuItem>)

--HG--
branch : dev
This commit is contained in:
Nathan Heskew
2010-02-12 02:01:50 -08:00
parent 04aa71bc18
commit f63f3ee501
4 changed files with 39 additions and 9 deletions

View File

@@ -3,6 +3,7 @@ using Orchard.ContentManagement;
using Orchard.Core.Navigation.Models;
using Orchard.Core.Navigation.Records;
using Orchard.UI.Navigation;
using MenuItem=Orchard.Core.Navigation.Models.MenuItem;
namespace Orchard.Core.Navigation.Services {
public class MainMenu : INavigationProvider {
@@ -15,13 +16,25 @@ namespace Orchard.Core.Navigation.Services {
public string MenuName { get { return "mainmenu"; } }
public void GetNavigation(NavigationBuilder builder) {
IEnumerable<MenuPart> menuParts = _contentManager.Query<MenuPart, MenuPartRecord>().Where(x => x.AddToMainMenu).List();
IEnumerable<MenuPart> menuParts = _contentManager.Query<MenuPart, MenuPartRecord>().Where(x => x.OnMainMenu).List();
foreach (var menuPart in menuParts) {
if (menuPart != null ) {
MenuPart part = menuPart;
// Add item url.
builder.Add(menu => menu
.Add(part.MenuText, part.MenuPosition));
if (part.Is<MenuItem>())
builder.Add(menu => menu.Add(part.MenuText, part.MenuPosition, part.As<MenuItem>().Url));
else
builder.Add(
menu =>
menu.Add(part.MenuText, part.MenuPosition,
nib =>
nib.Action(
part.ContentItem.ContentManager.GetItemMetadata(part.ContentItem).
DisplayRouteValues["action"] as string,
part.ContentItem.ContentManager.GetItemMetadata(part.ContentItem).
DisplayRouteValues["controller"] as string,
part.ContentItem.ContentManager.GetItemMetadata(part.ContentItem).
DisplayRouteValues)));
}
}
}