From f327a328958628164cf86ead121545f140e4590d Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Mon, 12 May 2014 15:30:56 -0700 Subject: [PATCH] Showing allowed modules with dependencies --- .../Controllers/AdminController.cs | 9 +- .../ViewModels/FeaturesViewModel.cs | 4 + .../Views/Admin/Features.cshtml | 102 ++++++++++-------- 3 files changed, 66 insertions(+), 49 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs index 33dc4dedc..84a178432 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs @@ -81,7 +81,7 @@ namespace Orchard.Modules.Controllers { IEnumerable modules = _extensionManager.AvailableExtensions() .Where(extensionDescriptor => DefaultExtensionTypes.IsModule(extensionDescriptor.ExtensionType) && - ModuleIsAllowed(extensionDescriptor) && + (string.IsNullOrEmpty(options.SearchText) || extensionDescriptor.Name.ToLowerInvariant().Contains(options.SearchText.ToLowerInvariant()))) .OrderBy(extensionDescriptor => extensionDescriptor.Name) .Select(extensionDescriptor => new ModuleEntry { Descriptor = extensionDescriptor }); @@ -174,7 +174,7 @@ namespace Orchard.Modules.Controllers { var featuresThatNeedUpdate = _dataMigrationManager.GetFeaturesThatNeedUpdate(); IEnumerable features = _featureManager.GetAvailableFeatures() - .Where(f => !DefaultExtensionTypes.IsTheme(f.Extension.ExtensionType) && ModuleIsAllowed(f.Extension)) + .Where(f => !DefaultExtensionTypes.IsTheme(f.Extension.ExtensionType)) .Select(f => new ModuleFeature { Descriptor = f, IsEnabled = _shellDescriptor.Features.Any(sf => sf.Name == f.Id), @@ -184,7 +184,10 @@ namespace Orchard.Modules.Controllers { }) .ToList(); - return View(new FeaturesViewModel { Features = features }); + return View(new FeaturesViewModel { + Features = features, + IsAllowed = ModuleIsAllowed + }); } [HttpPost, ActionName("Features")] diff --git a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/FeaturesViewModel.cs b/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/FeaturesViewModel.cs index 2ea35614f..e00789428 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/FeaturesViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/FeaturesViewModel.cs @@ -1,10 +1,14 @@ +using System; using System.Collections.Generic; +using Orchard.Environment.Configuration; +using Orchard.Environment.Extensions.Models; using Orchard.Modules.Models; namespace Orchard.Modules.ViewModels { public class FeaturesViewModel { public IEnumerable Features { get; set; } public FeaturesBulkAction BulkAction { get; set; } + public Func IsAllowed { get; set; } } public enum FeaturesBulkAction { diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml index 42a05916a..c2cf94af1 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml @@ -35,10 +35,14 @@ - -
    @{ + +
      + @{ var featureGroups = Model.Features.OrderBy(f => f.Descriptor.Category, new DoghouseComparer("Core")).GroupBy(f => f.Descriptor.Category).ToList(); foreach (var featureGroup in featureGroups) { + if (!featureGroup.Any(x => Model.IsAllowed(x.Descriptor.Extension))) { + continue; + } var categoryName = LocalizedString.TextOrDefault(featureGroup.First().Descriptor.Category, T("Uncategorized")); var categoryClassName = string.Format("category {0}", Html.Encode(categoryName.ToString().HtmlClassify())); if (featureGroup == featureGroups.First()) { @@ -48,11 +52,15 @@ categoryClassName += " last"; } -
    • -

      @categoryName

      -
        @{ +
      • +

        @categoryName

        +
          + @{ var features = featureGroup.OrderBy(f => f.Descriptor.Name); foreach (var feature in features) { + if (!Model.IsAllowed(feature.Descriptor.Extension)) { + continue; + } //hmmm...I feel like I've done this before... var featureId = feature.Descriptor.Id.AsFeatureId(n => T(n)); var featureName = string.IsNullOrEmpty(feature.Descriptor.Name) ? feature.Descriptor.Id : feature.Descriptor.Name; @@ -74,57 +82,59 @@ var missingDependencies = feature.Descriptor.Dependencies .Where(d => !Model.Features.Any(f => f.Descriptor.Id.Equals(d, StringComparison.OrdinalIgnoreCase))); var showDisable = categoryName.ToString() != "Core"; - var showEnable = !missingDependencies.Any() && feature.Descriptor.Id != "Orchard.Setup"; - + var showEnable = Model.IsAllowed(feature.Descriptor.Extension) && !missingDependencies.Any() && feature.Descriptor.Id != "Orchard.Setup"; +
        • -
          -
          -

          - @if ((showEnable && !feature.IsEnabled) || (showDisable && feature.IsEnabled)) { -

          +

          @feature.Descriptor.Description

          + @if (feature.Descriptor.Dependencies != null && feature.Descriptor.Dependencies.Any()) { +
          +

          @T("Depends on:")

          + @Html.UnorderedList(dependencies, (s, i) => Html.Link(string.IsNullOrEmpty(s.Descriptor.Name) ? s.Descriptor.Id : s.Descriptor.Name, string.Format("#{0}", s.Descriptor.Id.AsFeatureId(n => T(n)))), "", "dependency", "") -
          } - @if (missingDependencies.Any()) { -
          -

          @T("Missing:")

          - @Html.UnorderedList(missingDependencies, (s, i) => MvcHtmlString.Create(s), "", "missingdependency", "") -
          } -
          -
          - @if (showDisable && feature.IsEnabled) { - var dependantsJoined = string.Join(", ", feature.DependentFeatures.Select(f => f.Name)); - @T("Disable") - } +
          } + @if (missingDependencies.Any()) { +
          +

          @T("Missing:")

          + @Html.UnorderedList(missingDependencies, (s, i) => MvcHtmlString.Create(s), "", "missingdependency", "") +
          } +
          +
          + @if (showDisable && feature.IsEnabled) { + var dependantsJoined = string.Join(", ", feature.DependentFeatures.Select(f => f.Name)); + @T("Disable") + } - @if (showEnable && !feature.IsEnabled) { - @T("Enable") - } + @if (showEnable && !feature.IsEnabled) { + @T("Enable") + } - @if (feature.NeedsUpdate) { - @T("Update") - } + @if (feature.NeedsUpdate) { + @T("Update") + } +
          - +
        • } + } +
      • } - }
      -
    • } -}
    } + } +
} using (Script.Foot()) {