diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs
index 385dec318..17584ff9a 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs
@@ -1,8 +1,12 @@
-using System.Linq;
+using System;
+using System.Linq;
+using System.Web;
using System.Web.Mvc;
using Orchard.Localization;
using Orchard.Modules.ViewModels;
using Orchard.Mvc.Results;
+using Orchard.UI.Notify;
+using Orchard.Utility.Extensions;
namespace Orchard.Modules.Controllers {
public class AdminController : Controller {
@@ -26,7 +30,37 @@ namespace Orchard.Modules.Controllers {
}
public ActionResult Add() {
- return View(new ModulesIndexViewModel());
+ return View(new ModuleAddViewModel());
+ }
+
+ [HttpPost, ActionName("Add")]
+ public ActionResult AddPOST() {
+ // module not used for anything other than display (and that only to not have object in the view 'T')
+ var viewModel = new ModuleAddViewModel();
+ try {
+ UpdateModel(viewModel);
+ if (!Services.Authorizer.Authorize(Permissions.ManageModules, T("Couldn't upload module package.")))
+ return new HttpUnauthorizedResult();
+
+ if (string.IsNullOrWhiteSpace(Request.Files[0].FileName)) {
+ ModelState.AddModelError("File", T("Select a file to upload.").ToString());
+ }
+
+ if (!ModelState.IsValid)
+ return View("add", viewModel);
+
+ foreach (string fileName in Request.Files) {
+ var file = Request.Files[fileName];
+ //todo: upload & process module package
+ }
+
+ //todo: add success message
+ return RedirectToAction("index");
+ }
+ catch (Exception exception) {
+ Services.Notifier.Error(T("Uploading module package failed: {0}", exception.Message));
+ return View("add", viewModel);
+ }
}
public ActionResult Features() {
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj b/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj
index 93d91910f..2668aeaf5 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj
@@ -75,7 +75,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModuleAddViewModel.cs b/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModuleAddViewModel.cs
new file mode 100644
index 000000000..4ac1f0328
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModuleAddViewModel.cs
@@ -0,0 +1,6 @@
+using Orchard.Mvc.ViewModels;
+
+namespace Orchard.Modules.ViewModels {
+ public class ModuleAddViewModel : BaseViewModel {
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModuleEditViewModel.cs b/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModuleEditViewModel.cs
deleted file mode 100644
index f366e748f..000000000
--- a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModuleEditViewModel.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using Orchard.Mvc.ViewModels;
-
-namespace Orchard.Modules.ViewModels {
- public class ModuleEditViewModel : BaseViewModel {
- public string Name { get; set; }
- }
-}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Add.ascx b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Add.ascx
index 239de7a6d..a38b16634 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Add.ascx
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Add.ascx
@@ -1,2 +1,12 @@
-<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl