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" %> -

<%=Html.TitleForPage(T("Install a Module").ToString()) %>

+<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> +<%@ Import Namespace="Orchard.Modules.ViewModels" %> +<%@ Import Namespace="Orchard.Mvc.Html" %> +

<%=Html.TitleForPage(T("Install a Module").ToString()) %>

<% +using (Html.BeginFormAntiForgeryPost(Url.Action("add", new { area = "Orchard.Modules" }), FormMethod.Post, new { enctype = "multipart/form-data" })) { %> +<%=Html.ValidationSummary() +%>
+ + +
+<% +} %> \ No newline at end of file