Support installing packages from "Modules" admin UI

--HG--
branch : dev
This commit is contained in:
Renaud Paquay
2010-07-18 13:10:10 -07:00
parent e94d07a907
commit 0cc4193584
2 changed files with 35 additions and 31 deletions

View File

@@ -1,23 +1,29 @@
using System;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Orchard.Data.Migration;
using Orchard.Localization;
using Orchard.Modules.ViewModels;
using Orchard.Mvc.Results;
using Orchard.Packaging;
using Orchard.UI.Notify;
using Orchard.Utility.Extensions;
namespace Orchard.Modules.Controllers {
public class AdminController : Controller {
private readonly IModuleService _moduleService;
private readonly IDataMigrationManager _dataMigrationManager;
private readonly IPackageManager _packageManager;
public AdminController(IOrchardServices services,
IModuleService moduleService,
IDataMigrationManager dataMigrationManager,
IPackageManager packageManager) {
public AdminController(IOrchardServices services, IModuleService moduleService, IDataMigrationManager dataMigrationManager) {
Services = services;
_moduleService = moduleService;
_dataMigrationManager = dataMigrationManager;
_packageManager = packageManager;
T = NullLocalizer.Instance;
}
@@ -54,14 +60,18 @@ namespace Orchard.Modules.Controllers {
foreach (string fileName in Request.Files) {
var file = Request.Files[fileName];
//todo: upload & process module package
var info = _packageManager.Install(file.InputStream);
Services.Notifier.Information(T("Installed package \"{0}\", version {1} of type \"{2}\" at location \"{3}\"",
info.ExtensionName, info.ExtensionVersion, info.ExtensionType, info.ExtensionPath));
}
//todo: add success message
return RedirectToAction("index");
}
catch (Exception exception) {
for (var scan = exception; scan != null; scan = scan.InnerException) {
Services.Notifier.Error(T("Uploading module package failed: {0}", exception.Message));
}
return View("add", viewModel);
}
}

View File

@@ -28,20 +28,19 @@ namespace Orchard.Modules.Services {
public IOrchardServices Services { get; set; }
public IModule GetModuleByName(string moduleName) {
return
_extensionManager.AvailableExtensions().Where(
e =>
string.Equals(e.Name, moduleName, StringComparison.OrdinalIgnoreCase) &&
string.Equals(e.ExtensionType, ModuleExtensionType, StringComparison.OrdinalIgnoreCase)).Select(
descriptor => AssembleModuleFromDescriptor(descriptor)).FirstOrDefault();
return _extensionManager
.AvailableExtensions()
.Where(e => string.Equals(e.Name, moduleName, StringComparison.OrdinalIgnoreCase))
.Where(e => string.Equals(e.ExtensionType, ModuleExtensionType, StringComparison.OrdinalIgnoreCase))
.Select(descriptor => AssembleModuleFromDescriptor(descriptor))
.FirstOrDefault();
}
public IEnumerable<IModule> GetInstalledModules() {
return
_extensionManager.AvailableExtensions().Where(
e => String.Equals(e.ExtensionType, ModuleExtensionType, StringComparison.OrdinalIgnoreCase)).Select
(
descriptor => AssembleModuleFromDescriptor(descriptor));
return _extensionManager
.AvailableExtensions()
.Where(e => String.Equals(e.ExtensionType, ModuleExtensionType, StringComparison.OrdinalIgnoreCase))
.Select(descriptor => AssembleModuleFromDescriptor(descriptor));
}
public void InstallModule(HttpPostedFileBase file) {
@@ -56,13 +55,8 @@ namespace Orchard.Modules.Services {
var enabledFeatures = _shellDescriptorManager.GetShellDescriptor().Features;
return GetInstalledModules()
.SelectMany(m => _extensionManager.LoadFeatures(m.Features))
.Select(
f =>
AssembleModuleFromDescriptor(f,
enabledFeatures.FirstOrDefault(
sf =>
string.Equals(sf.Name, f.Descriptor.Name,
StringComparison.OrdinalIgnoreCase)) != null));
.Select(f => AssembleModuleFromDescriptor(f, enabledFeatures
.FirstOrDefault(sf => string.Equals(sf.Name, f.Descriptor.Name, StringComparison.OrdinalIgnoreCase)) != null));
}
public void EnableFeatures(IEnumerable<string> featureNames) {