diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Commands/PackagingCommands.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Commands/PackagingCommands.cs index edb7f3c05..da966983b 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Commands/PackagingCommands.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Commands/PackagingCommands.cs @@ -1,4 +1,6 @@ -using System.IO; +using System; +using System.IO; +using System.Web; using System.Web.Hosting; using Orchard.Commands; using Orchard.Environment.Extensions; @@ -53,21 +55,34 @@ namespace Orchard.Packaging.Commands { [CommandName("package install")] [OrchardSwitches("Version")] public void InstallPackage(string packageId, string location) { - _packageManager.Install(packageId, Version, Path.GetFullPath(location), ApplicationPath); - - foreach(var message in _notifier.List()) { - Context.Output.WriteLine(message.Message); + try { + _packageManager.Install(packageId, Version, Path.GetFullPath(location), ApplicationPath); + + foreach (var message in _notifier.List()) { + Context.Output.WriteLine(message.Message); + } + } + catch(Exception e) { + // Exceptions area thrown by NuGet as error messages + Context.Output.WriteLine(HttpUtility.HtmlDecode(T("Could not install the package: {0}", e.Message).Text)); } } [CommandHelp("package uninstall \r\n\t" + "Uninstall a module or a theme.")] [CommandName("package uninstall")] public void UninstallPackage(string packageId) { - _packageManager.Uninstall(packageId, ApplicationPath); + try { + _packageManager.Uninstall(packageId, ApplicationPath); - foreach ( var message in _notifier.List() ) { - Context.Output.WriteLine(message.Message); + foreach ( var message in _notifier.List() ) { + Context.Output.WriteLine(message.Message); + } } + catch(Exception e) { + // Exceptions area thrown by NuGet as error messages + Context.Output.WriteLine(HttpUtility.HtmlDecode(T("Could not unintall the package: {0}", e.Message).Text)); + } + } } } diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs index 2289eee42..9ba5f7a50 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Web.Hosting; using System.Web.Mvc; using System.Xml.Linq; using Orchard.Environment.Extensions; @@ -126,54 +127,16 @@ namespace Orchard.Packaging.Controllers { }); } - public ActionResult Harvest(string extensionName, string feedUrl) { - return View(new PackagingHarvestViewModel { - ExtensionName = extensionName, - FeedUrl = feedUrl, - Sources = _packagingSourceManager.GetSources(), - Extensions = _extensionManager.AvailableExtensions() - }); - } + public ActionResult Install(string packageId, string version, int sourceId, string redirectTo) { + var source = _packagingSourceManager.GetSources().Where(s => s.Id == sourceId).FirstOrDefault(); - [HttpPost] - public ActionResult Harvest(PackagingHarvestViewModel model) { - #if REFACTORING - model.Sources = _packagingSourceManager.GetSources(); - model.Extensions = _extensionManager.AvailableExtensions(); - - var packageData = _packageManager.Harvest(model.ExtensionName); - - if (string.IsNullOrEmpty(model.FeedUrl)) { - return new DownloadStreamResult( - packageData.ExtensionName + "-" + packageData.ExtensionVersion + ".zip", - "application/x-package", - packageData.PackageStream); + if(source == null) { + return HttpNotFound(); } - if (!model.Sources.Any(src => src.FeedUrl == model.FeedUrl)) { - ModelState.AddModelError("FeedUrl", T("May only push directly to one of the configured sources.").ToString()); - return View(model); - } + _packageManager.Install(packageId, version, source.FeedUrl, HostingEnvironment.MapPath("~/")); - _packageManager.Push(packageData, model.FeedUrl, model.User, model.Password); - _notifier.Information(T("Harvested {0} and published onto {1}", model.ExtensionName, model.FeedUrl)); - - Update(null); - - return RedirectToAction("Harvest", new { model.ExtensionName, model.FeedUrl }); -#else - return View(); -#endif - - } - - public ActionResult Install(string syndicationId, string cameFrom) { -#if REFACTORING - var packageData = _packageManager.Download(syndicationId); - _packageManager.Install(packageData.PackageStream); - _notifier.Information(T("Installed module")); -#endif - return RedirectToAction(cameFrom == "Themes" ? "ThemesIndex" : "ModulesIndex"); + return RedirectToAction(redirectTo == "Themes" ? "Themes" : "Modules"); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj index 08ed0a314..a7d44ccc3 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj @@ -108,10 +108,8 @@ - - diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/IPackageManager.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/IPackageManager.cs index 37e9a06a0..9fcbd6323 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/IPackageManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/IPackageManager.cs @@ -1,7 +1,7 @@ namespace Orchard.Packaging.Services { public interface IPackageManager : IDependency { PackageData Harvest(string extensionName); - PackageInfo Install(string packageId, string version, string location, string solutionFolder); - void Uninstall(string packageId, string solutionFolder); + PackageInfo Install(string packageId, string version, string location, string applicationPath); + void Uninstall(string packageId, string applicationPath); } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageInstaller.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageInstaller.cs index 49f395843..30c5752e8 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageInstaller.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageInstaller.cs @@ -72,7 +72,7 @@ namespace Orchard.Packaging.Services { var project = new FileBasedProjectSystem(applicationPath) { Logger = logger }; var projectManager = new ProjectManager( sourceRepository, // source repository for the package to install - new DefaultPackagePathResolver(location), + new DefaultPackagePathResolver(applicationPath), project, new ExtensionReferenceRepository(project, sourceRepository, _extensionManager) ) {Logger = logger}; diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs index 6c7eebd33..7b68c5e47 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs @@ -33,12 +33,12 @@ namespace Orchard.Packaging.Services { }; } - public PackageInfo Install(string packageId, string version, string location, string solutionFolder) { - return _packageExpander.Install(packageId, version, location, solutionFolder); + public PackageInfo Install(string packageId, string version, string location, string applicationPath) { + return _packageExpander.Install(packageId, version, location, applicationPath); } - public void Uninstall(string packageId, string solutionFolder) { - _packageExpander.Uninstall(packageId, solutionFolder); + public void Uninstall(string packageId, string applicationPath) { + _packageExpander.Uninstall(packageId, applicationPath); } #endregion } diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml deleted file mode 100644 index ccfea4ab2..000000000 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml +++ /dev/null @@ -1,32 +0,0 @@ -@model Orchard.Packaging.ViewModels.PackagingHarvestViewModel -

- @Html.TitleForPage(T("Packaging").ToString(), T("Harvest Packages").ToString())

- @Html.Partial("_Subnav", Model) - -@using (Html.BeginFormAntiForgeryPost()) { - @Html.ValidationSummary(T("Package creation was unsuccessful. Please correct the errors and try again.").ToString()) - foreach (var group in Model.Extensions.Where(x => !x.Location.StartsWith("~/Core")).GroupBy(x => x.ExtensionType)) { -
- @T("Harvest") @group.Key -
    - @foreach (var item in group) { -
  • - -
  • - } -
- @Html.ValidationMessageFor(m => m.ExtensionName) -
- } -
- @Html.LabelFor(m => m.FeedUrl, T("Feed Url")) - @Html.DropDownListFor(m => m.FeedUrl, new[]{new SelectListItem{Text=T("Download").ToString(),Value=""}}.Concat( Model.Sources.Select(x => new SelectListItem { Text = T("Push to {0}", x.FeedUrl).ToString(), Value = x.FeedUrl }))) - @Html.ValidationMessageFor(m=>m.FeedUrl) -
-
- -
-} diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Modules.cshtml b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Modules.cshtml index a32d125b9..5392cb647 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Modules.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Modules.cshtml @@ -28,14 +28,14 @@

@(item.Description == null ? T("(No description").Text : item.Description)

    - @*todo: (sebros) find a way to get the update date*@
  • @T("Last Updated: {0}", DateTime.Now.ToLocalTime())
  • +
  • @T("Last Updated: {0}", DateTime.Now.ToLocalTime())
  •  | @T("Author: {0}", item.Authors)
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Themes.cshtml b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Themes.cshtml index 1a224efdb..2d0650dfc 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Themes.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Themes.cshtml @@ -35,7 +35,7 @@

@(item.Description == null ? T("(No description").Text : item.Description)

    - @*todo: (sebros) find a way to get the update date*@
  • @T("Last Updated: {0}", DateTime.Now.ToLocalTime())
  • +
  • @T("Last Updated: {0}", DateTime.Now.ToLocalTime())
  •  | @T("Author: {0}", item.Authors)
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/_Subnav.cshtml b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/_Subnav.cshtml deleted file mode 100644 index 7e5a4bb24..000000000 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/_Subnav.cshtml +++ /dev/null @@ -1,8 +0,0 @@ -@model Orchard.Packaging.ViewModels.PackagingHarvestViewModel -

- @Html.ActionLink(T("Browse Repository Packages").ToString(), "Index") - • - @Html.ActionLink(T("Harvest Local Packages").ToString(), "Harvest") - • - @Html.ActionLink(T("Edit Repository Sources").ToString(), "Sources") -