Monitor "~/Modules" path to detect add/remove of modules

--HG--
branch : dev
This commit is contained in:
Renaud Paquay
2010-07-01 17:29:53 -07:00
parent 9af69afef0
commit 6b2c1788ab

View File

@@ -15,6 +15,7 @@ namespace Orchard.Environment.Extensions {
private readonly IDependenciesFolder _dependenciesFolder; private readonly IDependenciesFolder _dependenciesFolder;
private readonly IExtensionManager _extensionManager; private readonly IExtensionManager _extensionManager;
private readonly IVirtualPathProvider _virtualPathProvider; private readonly IVirtualPathProvider _virtualPathProvider;
private readonly IVirtualPathMonitor _virtualPathMonitor;
private readonly IEnumerable<IExtensionLoader> _loaders; private readonly IEnumerable<IExtensionLoader> _loaders;
private readonly IHostEnvironment _hostEnvironment; private readonly IHostEnvironment _hostEnvironment;
private readonly IBuildManager _buildManager; private readonly IBuildManager _buildManager;
@@ -23,6 +24,7 @@ namespace Orchard.Environment.Extensions {
IDependenciesFolder dependenciesFolder, IDependenciesFolder dependenciesFolder,
IExtensionManager extensionManager, IExtensionManager extensionManager,
IVirtualPathProvider virtualPathProvider, IVirtualPathProvider virtualPathProvider,
IVirtualPathMonitor virtualPathMonitor,
IEnumerable<IExtensionLoader> loaders, IEnumerable<IExtensionLoader> loaders,
IHostEnvironment hostEnvironment, IHostEnvironment hostEnvironment,
IBuildManager buildManager) { IBuildManager buildManager) {
@@ -30,6 +32,7 @@ namespace Orchard.Environment.Extensions {
_dependenciesFolder = dependenciesFolder; _dependenciesFolder = dependenciesFolder;
_extensionManager = extensionManager; _extensionManager = extensionManager;
_virtualPathProvider = virtualPathProvider; _virtualPathProvider = virtualPathProvider;
_virtualPathMonitor = virtualPathMonitor;
_loaders = loaders.OrderBy(l => l.Order); _loaders = loaders.OrderBy(l => l.Order);
_hostEnvironment = hostEnvironment; _hostEnvironment = hostEnvironment;
_buildManager = buildManager; _buildManager = buildManager;
@@ -287,6 +290,10 @@ namespace Orchard.Environment.Extensions {
} }
public void MonitorExtensions(Action<IVolatileToken> monitor) { public void MonitorExtensions(Action<IVolatileToken> monitor) {
// Monitor add/remove of any module
monitor(_virtualPathMonitor.WhenPathChanges("~/Modules"));
// Give loaders a chance to monitor any additional changes
var extensions = _extensionManager.AvailableExtensions().Where(d => d.ExtensionType == "Module").ToList(); var extensions = _extensionManager.AvailableExtensions().Where(d => d.ExtensionType == "Module").ToList();
foreach (var extension in extensions) { foreach (var extension in extensions) {
foreach (var loader in _loaders) { foreach (var loader in _loaders) {