From 9094d3d94b65a95725492f310441be1cf4a83435 Mon Sep 17 00:00:00 2001 From: Erik Porter Date: Wed, 24 Feb 2010 15:34:06 -0800 Subject: [PATCH] Made the blog menu dynamic based off of how many blogs there are in the system for easier navigation --HG-- branch : dev --- .../Modules/Orchard.Blogs/AdminMenu.cs | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs index a564bee0e..af2ed168f 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs @@ -1,14 +1,42 @@ -using Orchard.UI.Navigation; +using System.Linq; +using Orchard.Blogs.Services; +using Orchard.UI.Navigation; namespace Orchard.Blogs { public class AdminMenu : INavigationProvider { + private readonly IBlogService _blogService; + + public AdminMenu(IBlogService blogService) { + _blogService = blogService; + } + public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add("Blogs", "2", - menu => menu - .Add("Manage Blogs", "1.0", item => item.Action("List", "BlogAdmin", new { area = "Orchard.Blogs" }).Permission(Permissions.MetaListBlogs)) - .Add("Add New Blog", "1.1", item => item.Action("Create", "BlogAdmin", new { area = "Orchard.Blogs" }).Permission(Permissions.ManageBlogs))); + builder.Add("Blogs", "2", BuildMenu); + } + + private void BuildMenu(NavigationItemBuilder menu) { + var blogs = _blogService.Get(); + var singleBlog = blogs.Count() == 1 ? blogs.ElementAt(0) : null; + + if (singleBlog == null) + menu.Add("Manage Blogs", "1.0", + item => + item.Action("List", "BlogAdmin", new {area = "Orchard.Blogs"}).Permission(Permissions.MetaListBlogs)); + else + menu.Add("Manage Blog", "1.0", + item => + item.Action("Item", "BlogAdmin", new {area = "Orchard.Blogs", blogSlug = singleBlog.Slug}).Permission(Permissions.MetaListBlogs)); + + menu.Add("Add New Blog", "1.1", + item => + item.Action("Create", "BlogAdmin", new {area = "Orchard.Blogs"}).Permission(Permissions.ManageBlogs)); + + if (singleBlog != null) + menu.Add("Add New Post", "1.2", + item => + item.Action("Create", "BlogPostAdmin", new {area = "Orchard.Blogs", blogSlug = singleBlog.Slug}).Permission(Permissions.PublishBlogPost)); } } } \ No newline at end of file