From 6456a30859a0e3a780bc1c541b36ecf767dff0a7 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Thu, 24 Feb 2011 16:46:50 -0800 Subject: [PATCH] Refactoring Packaging AdminMenu --HG-- branch : dev extra : transplant_source : %EC%C1%8B%1E%F3%9F%7B4%87%84%3C%CBg%B4%86XK%9D%20%C8 --- .../Modules/Orchard.Packaging/AdminMenu.cs | 76 +++++-------------- .../AdminMenuGalleryUpdates.cs | 58 ++++++++++++++ .../Orchard.Packaging.csproj | 1 + 3 files changed, 76 insertions(+), 59 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.Packaging/AdminMenuGalleryUpdates.cs diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenu.cs index 448aaf826..5e11bc50c 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenu.cs @@ -1,8 +1,5 @@ -using System.Linq; -using Orchard.Environment.Extensions; -using Orchard.Environment.Extensions.Models; +using Orchard.Environment.Extensions; using Orchard.Localization; -using Orchard.Packaging.Services; using Orchard.UI.Navigation; using Orchard.Security; @@ -10,67 +7,28 @@ namespace Orchard.Packaging { [OrchardFeature("Gallery")] public class AdminMenu : INavigationProvider { public Localizer T { get; set; } - public string MenuName { get { return "admin"; } } - private readonly IBackgroundPackageUpdateStatus _backgroundPackageUpdateStatus; - - public AdminMenu(IBackgroundPackageUpdateStatus backgroundPackageUpdateStatus) { - _backgroundPackageUpdateStatus = backgroundPackageUpdateStatus; + public string MenuName { + get { return "admin"; } } - public AdminMenu() {} - public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Themes"), menu => menu - .Add(T("Gallery"), "1", item => item.Action("Themes", "Gallery", new { area = "Orchard.Packaging" }) - .Permission(StandardPermissions.SiteOwner).LocalNav())); - - builder.Add(T("Modules"), menu => menu - .Add(T("Gallery"), "2", item => item.Action("Modules", "Gallery", new { area = "Orchard.Packaging" }) - .Permission(StandardPermissions.SiteOwner).LocalNav())); - - builder.Add(T("Settings"), menu => menu - .Add(T("Gallery"), "1", item => item.Action("Sources", "Gallery", new { area = "Orchard.Packaging" }) - .Permission(StandardPermissions.SiteOwner))); - - builder.Add(T("Modules"), menu => menu - .Add(T("Install"), "99", item => item.Action("AddModule", "PackagingServices", new { area = "Orchard.Packaging" }) - .Permission(StandardPermissions.SiteOwner).LocalNav())); - - builder.Add(T("Themes"), menu => menu - .Add(T("Install"), "99", item => item.Action("AddTheme", "PackagingServices", new { area = "Orchard.Packaging" }) - .Permission(StandardPermissions.SiteOwner).LocalNav())); - - if (_backgroundPackageUpdateStatus != null) { - // Only available if feature is enabled - - int modulesUpdateCount = GetUpdateCount(DefaultExtensionTypes.Module); - LocalizedString modulesCaption = (modulesUpdateCount == 0 ? T("Updates") : T("Updates ({0})", modulesUpdateCount)); - - int themesUpdateCount = GetUpdateCount(DefaultExtensionTypes.Theme); - LocalizedString themesCaption = (themesUpdateCount == 0 ? T("Updates") : T("Updates ({0})", themesUpdateCount)); - - builder.Add(T("Modules"), "20", menu => menu - .Add(modulesCaption, "30.0", item => item.Action("ModulesUpdates", "GalleryUpdates", new { area = "Orchard.Packaging" }) - .Permission(StandardPermissions.SiteOwner).LocalNav())); - - builder.Add(T("Themes"), "25", menu => menu - .Add(themesCaption, "30.0", item => item.Action("ThemesUpdates", "GalleryUpdates", new { area = "Orchard.Packaging" }) - .Permission(StandardPermissions.SiteOwner).LocalNav())); - } + builder + .Add(T("Modules"), menu => menu + .Add(T("Gallery"), "3", item => Describe(item, "Modules", "Gallery", true)) + .Add(T("Upload"), "9", item => Describe(item, "AddModule", "PackagingServices", true))) + .Add(T("Themes"), menu => menu + .Add(T("Gallery"), "3", item => Describe(item, "Themes", "Gallery", true)) + .Add(T("Upload"), "9", item => Describe(item, "AddTheme", "PackagingServices", true))) + .Add(T("Settings"), menu => menu + .Add(T("Gallery"), "1", item => Describe(item, "Sources", "Gallery", false))); } - private int GetUpdateCount(string extensionType) { - try { - // Admin menu should never block, so simply return the result from the background task - return _backgroundPackageUpdateStatus.Value == null ? - 0 : - _backgroundPackageUpdateStatus.Value.Entries.Where(updatePackageEntry => - updatePackageEntry.NewVersionToInstall != null && - updatePackageEntry.ExtensionsDescriptor.ExtensionType.Equals(extensionType)).Count(); - } catch { - return 0; - } + static NavigationItemBuilder Describe(NavigationItemBuilder item, string actionName, string controllerName, bool localNav) { + item = item.Action(actionName, controllerName, new { area = "Orchard.Packaging" }).Permission(StandardPermissions.SiteOwner); + if (localNav) + item = item.LocalNav(); + return item; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenuGalleryUpdates.cs b/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenuGalleryUpdates.cs new file mode 100644 index 000000000..20321bb9d --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenuGalleryUpdates.cs @@ -0,0 +1,58 @@ +using System.Linq; +using Orchard.Environment.Extensions; +using Orchard.Environment.Extensions.Models; +using Orchard.Localization; +using Orchard.Mvc.Html; +using Orchard.Packaging.Services; +using Orchard.Security; +using Orchard.UI.Navigation; + +namespace Orchard.Packaging { + [OrchardFeature("Gallery.Updates")] + public class AdminMenuGalleryUpdates : INavigationProvider { + public Localizer T { get; set; } + + public string MenuName { + get { return "admin"; } + } + + readonly IBackgroundPackageUpdateStatus _backgroundPackageUpdateStatus; + + public AdminMenuGalleryUpdates(IBackgroundPackageUpdateStatus backgroundPackageUpdateStatus) { + _backgroundPackageUpdateStatus = backgroundPackageUpdateStatus; + } + + public void GetNavigation(NavigationBuilder builder) { + var modulesCaption = T.Plural("Updates", "Updates ({0})", GetUpdateCount(DefaultExtensionTypes.Module)); + var themesCaption = T.Plural("Updates", "Updates ({0})", GetUpdateCount(DefaultExtensionTypes.Theme)); + + builder + .Add(T("Modules"), menu => menu + .Add(modulesCaption, "8", item => Describe(item, "ModulesUpdates", "GalleryUpdates", true))) + .Add(T("Themes"), menu => menu + .Add(themesCaption, "8", item => Describe(item, "ThemesUpdates", "GalleryUpdates", true))); + } + + int GetUpdateCount(string extensionType) { + try { + // Admin menu should never block, so simply return the result from the background task + if (_backgroundPackageUpdateStatus.Value == null) + return 0; + + return _backgroundPackageUpdateStatus.Value.Entries.Count(updatePackageEntry => + updatePackageEntry.NewVersionToInstall != null && + updatePackageEntry.ExtensionsDescriptor.ExtensionType == extensionType); + } + catch { + return 0; + } + } + + static NavigationItemBuilder Describe(NavigationItemBuilder item, string actionName, string controllerName, bool localNav) { + item = item.Action(actionName, controllerName, new { area = "Orchard.Packaging" }).Permission(StandardPermissions.SiteOwner); + if (localNav) + item = item.LocalNav(); + return item; + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj index 061e5732c..bfe35d837 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj @@ -59,6 +59,7 @@ +