+
- @T("Insert/Upload Image")
- @T("Browse Gallery") diff --git a/src/Orchard.Web/Modules/Orchard.MediaPicker/Views/Admin/Tab_Gallery.cshtml b/src/Orchard.Web/Modules/Orchard.MediaPicker/Views/Admin/Tab_Gallery.cshtml index 40f882e1e..edffe48ab 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaPicker/Views/Admin/Tab_Gallery.cshtml +++ b/src/Orchard.Web/Modules/Orchard.MediaPicker/Views/Admin/Tab_Gallery.cshtml @@ -17,7 +17,7 @@ @{ var uploadAction = Url.Action("AddFromClient", "Admin", new { area = "Orchard.Media" }); } -
+
-
@FolderLink(T("Media Folders").ToString(), "") @@ -32,6 +32,7 @@
+
-
diff --git a/src/Orchard.Web/Modules/Orchard.MediaPicker/Views/Admin/Tab_Url.cshtml b/src/Orchard.Web/Modules/Orchard.MediaPicker/Views/Admin/Tab_Url.cshtml
index aae5e7006..51d45520c 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaPicker/Views/Admin/Tab_Url.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.MediaPicker/Views/Admin/Tab_Url.cshtml
@@ -12,7 +12,7 @@
mediaPath = "";
}
}
-
+
@@ -32,8 +32,8 @@
-
-
+ extensionDisplayEventHandlers,
+ IOrchardServices services,
IModuleService moduleService,
IDataMigrationManager dataMigrationManager,
IReportsCoordinator reportsCoordinator,
IExtensionManager extensionManager,
IFeatureManager featureManager,
- ShellDescriptor shellDescriptor)
+ ShellDescriptor shellDescriptor,
+ IShapeFactory shapeFactory)
{
Services = services;
+ _extensionDisplayEventHandler = extensionDisplayEventHandlers.FirstOrDefault();
_moduleService = moduleService;
_dataMigrationManager = dataMigrationManager;
_reportsCoordinator = reportsCoordinator;
_extensionManager = extensionManager;
_featureManager = featureManager;
_shellDescriptor = shellDescriptor;
+ Shape = shapeFactory;
T = NullLocalizer.Instance;
Logger = NullLogger.Instance;
@@ -48,20 +58,44 @@ namespace Orchard.Modules.Controllers {
public Localizer T { get; set; }
public IOrchardServices Services { get; set; }
public ILogger Logger { get; set; }
+ public dynamic Shape { get; set; }
- public ActionResult Index() {
+ public ActionResult Index(ModulesIndexOptions options, PagerParameters pagerParameters) {
if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not allowed to manage modules")))
return new HttpUnauthorizedResult();
- IEnumerable modules = _extensionManager.AvailableExtensions()
- .Where(x => DefaultExtensionTypes.IsModule(x.ExtensionType))
- .Select(extensionDescriptor => new Module(extensionDescriptor) {
- IsRecentlyInstalled = _moduleService.IsRecentlyInstalled(extensionDescriptor)
- });
+ Pager pager = new Pager(Services.WorkContext.CurrentSite, pagerParameters);
- return View(new ModulesIndexViewModel {
+ IEnumerable modules = _extensionManager.AvailableExtensions()
+ .Where(extensionDescriptor => DefaultExtensionTypes.IsModule(extensionDescriptor.ExtensionType) &&
+ (string.IsNullOrEmpty(options.SearchText) || extensionDescriptor.Name.ToLowerInvariant().Contains(options.SearchText.ToLowerInvariant())))
+ .OrderBy(extensionDescriptor => extensionDescriptor.Name)
+ .Select(extensionDescriptor => {
+ ModuleEntry moduleEntry = new ModuleEntry {
+ Descriptor = extensionDescriptor,
+ IsRecentlyInstalled = _moduleService.IsRecentlyInstalled(extensionDescriptor)
+ };
+
+ if (_extensionDisplayEventHandler != null) {
+ foreach (string notification in _extensionDisplayEventHandler.Displaying(moduleEntry.Descriptor)) {
+ moduleEntry.Notifications.Add(notification);
+ }
+ }
+
+ return moduleEntry;
+ });
+
+ int totalItemCount = modules.Count();
+
+ if (pager.PageSize != 0) {
+ modules = modules.Skip((pager.Page - 1) * pager.PageSize).Take(pager.PageSize);
+ }
+
+ return View(new ModulesIndexViewModel {
Modules = modules,
- InstallModules = _featureManager.GetEnabledFeatures().FirstOrDefault(f => f.Id == "PackagingServices") != null
+ InstallModules = _featureManager.GetEnabledFeatures().FirstOrDefault(f => f.Id == "PackagingServices") != null,
+ Options = options,
+ Pager = Shape.Pager(pager).TotalItemCount(totalItemCount)
});
}
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Events/IExtensionDisplayEventHandler.cs b/src/Orchard.Web/Modules/Orchard.Modules/Events/IExtensionDisplayEventHandler.cs
new file mode 100644
index 000000000..731ddaef6
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Events/IExtensionDisplayEventHandler.cs
@@ -0,0 +1,12 @@
+using System.Collections.Generic;
+using Orchard.Environment.Extensions.Models;
+using Orchard.Events;
+
+namespace Orchard.Modules.Events {
+ public interface IExtensionDisplayEventHandler : IEventHandler {
+ ///
+ /// Called before an extension is displayed
+ ///
+ IEnumerable Displaying(ExtensionDescriptor extensionDescriptor);
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/Module.cs b/src/Orchard.Web/Modules/Orchard.Modules/Models/ModuleEntry.cs
similarity index 62%
rename from src/Orchard.Web/Modules/Orchard.Modules/ViewModels/Module.cs
rename to src/Orchard.Web/Modules/Orchard.Modules/Models/ModuleEntry.cs
index 7364692fc..7f67c69ae 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/Module.cs
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Models/ModuleEntry.cs
@@ -1,21 +1,16 @@
-using Orchard.Environment.Extensions.Models;
+using System.Collections.Generic;
+using Orchard.Environment.Extensions.Models;
-namespace Orchard.Modules.ViewModels {
+namespace Orchard.Modules.Models {
///
/// Represents a module.
///
- public class Module {
+ public class ModuleEntry {
///
/// Default constructor.
///
- public Module() {}
-
- ///
- /// Instantiates a module based on an extension descriptor.
- ///
- /// The extension descriptor.
- public Module(ExtensionDescriptor extensionDescriptor) {
- Descriptor = extensionDescriptor;
+ public ModuleEntry() {
+ Notifications = new List();
}
///
@@ -32,5 +27,10 @@ namespace Orchard.Modules.ViewModels {
/// Boolean value indicating if the feature was recently installed.
///
public bool IsRecentlyInstalled { get; set; }
+
+ ///
+ /// List of module notifications.
+ ///
+ public List Notifications { get; set; }
}
}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModuleFeature.cs b/src/Orchard.Web/Modules/Orchard.Modules/Models/ModuleFeature.cs
similarity index 93%
rename from src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModuleFeature.cs
rename to src/Orchard.Web/Modules/Orchard.Modules/Models/ModuleFeature.cs
index 24b912816..2ca10f4fd 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModuleFeature.cs
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Models/ModuleFeature.cs
@@ -1,6 +1,6 @@
using Orchard.Environment.Extensions.Models;
-namespace Orchard.Modules.ViewModels {
+namespace Orchard.Modules.Models {
///
/// Represents a module's feature.
///
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj b/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj
index 732a63aff..66746e9da 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj
@@ -43,6 +43,7 @@
False
..\..\..\..\lib\autofac\Autofac.dll
+
@@ -52,14 +53,15 @@
+
-
-
+
+
@@ -98,6 +100,9 @@
+
+
+
+
@@ -64,9 +64,11 @@
-
+
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs
index 28846a644..ba9ab98d7 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs
@@ -3,21 +3,26 @@ using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Orchard.Data.Migration;
+using Orchard.DisplayManagement;
using Orchard.Environment.Descriptor.Models;
using Orchard.Environment.Extensions;
using Orchard.Environment.Extensions.Models;
using Orchard.Environment.Features;
using Orchard.Localization;
using Orchard.Logging;
+using Orchard.Modules.Events;
+using Orchard.Modules.Models;
using Orchard.Modules.Services;
using Orchard.Modules.ViewModels;
using Orchard.Reports.Services;
using Orchard.Security;
+using Orchard.UI.Navigation;
using Orchard.UI.Notify;
using Orchard.Utility.Extensions;
namespace Orchard.Modules.Controllers {
public class AdminController : Controller {
+ private readonly IExtensionDisplayEventHandler _extensionDisplayEventHandler;
private readonly IModuleService _moduleService;
private readonly IDataMigrationManager _dataMigrationManager;
private readonly IReportsCoordinator _reportsCoordinator;
@@ -25,21 +30,26 @@ namespace Orchard.Modules.Controllers {
private readonly IFeatureManager _featureManager;
private readonly ShellDescriptor _shellDescriptor;
- public AdminController(IOrchardServices services,
+ public AdminController(
+ IEnumerable
+
+