diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs index af2ed168f..d692251d9 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs @@ -18,13 +18,14 @@ namespace Orchard.Blogs { private void BuildMenu(NavigationItemBuilder menu) { var blogs = _blogService.Get(); - var singleBlog = blogs.Count() == 1 ? blogs.ElementAt(0) : null; + var blogCount = blogs.Count(); + var singleBlog = blogCount == 1 ? blogs.ElementAt(0) : null; - if (singleBlog == null) + if (blogCount > 0 && singleBlog == null) menu.Add("Manage Blogs", "1.0", item => item.Action("List", "BlogAdmin", new {area = "Orchard.Blogs"}).Permission(Permissions.MetaListBlogs)); - else + else if (singleBlog != null) menu.Add("Manage Blog", "1.0", item => item.Action("Item", "BlogAdmin", new {area = "Orchard.Blogs", blogSlug = singleBlog.Slug}).Permission(Permissions.MetaListBlogs)); diff --git a/src/Orchard.Web/Modules/Orchard.Pages/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Pages/AdminMenu.cs index abbf4c137..4a184c6c6 100644 --- a/src/Orchard.Web/Modules/Orchard.Pages/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Pages/AdminMenu.cs @@ -1,14 +1,29 @@ -using Orchard.UI.Navigation; +using Orchard.Pages.Services; +using Orchard.UI.Navigation; namespace Orchard.Pages { public class AdminMenu : INavigationProvider { + private readonly IPageService _pageService; + + public AdminMenu(IPageService pageService) { + _pageService = pageService; + } + public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add("Pages", "1", - menu => menu - .Add("Manage Pages", "1.0", item => item.Action("List", "Admin", new { area = "Orchard.Pages" }).Permission(Permissions.MetaListPages)) - .Add("Add New Page", "1.1", item => item.Action("Create", "Admin", new { area = "Orchard.Pages" }).Permission(Permissions.EditPages))); + builder.Add("Pages", "1", BuildMenu); + } + + private void BuildMenu(NavigationItemBuilder menu) { + if (_pageService.GetCount() > 0) + menu.Add("Manage Pages", "1.0", + item => + item.Action("List", "Admin", new {area = "Orchard.Pages"}).Permission(Permissions.MetaListPages)); + + menu.Add("Add New Page", "1.1", + item => + item.Action("Create", "Admin", new {area = "Orchard.Pages"}).Permission(Permissions.EditPages)); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Pages/Services/IPageService.cs b/src/Orchard.Web/Modules/Orchard.Pages/Services/IPageService.cs index b88cd6aa9..6b0e49344 100644 --- a/src/Orchard.Web/Modules/Orchard.Pages/Services/IPageService.cs +++ b/src/Orchard.Web/Modules/Orchard.Pages/Services/IPageService.cs @@ -4,6 +4,7 @@ using Orchard.Pages.Models; namespace Orchard.Pages.Services { public interface IPageService : IDependency { + int GetCount(); IEnumerable Get(); IEnumerable Get(PageStatus status); Page Get(string slug); diff --git a/src/Orchard.Web/Modules/Orchard.Pages/Services/PageService.cs b/src/Orchard.Web/Modules/Orchard.Pages/Services/PageService.cs index 31af06827..3d9f6b83d 100644 --- a/src/Orchard.Web/Modules/Orchard.Pages/Services/PageService.cs +++ b/src/Orchard.Web/Modules/Orchard.Pages/Services/PageService.cs @@ -23,6 +23,11 @@ namespace Orchard.Pages.Services { _slugConstraint = slugConstraint; } + public int GetCount() { + //TODO: (erikpo) Need to add a count method to IContentQuery so it doesn't need to pull out all pages to get a count + return _contentManager.Query(VersionOptions.Latest).List().Count(); + } + public IEnumerable Get() { return Get(PageStatus.All); }