From ff412f1f7e81e0fa2436b2bd29db50c4b353934c Mon Sep 17 00:00:00 2001 From: suhacan Date: Fri, 11 Dec 2009 00:40:44 +0000 Subject: [PATCH] - Themes: adding views and actions for installing a theme. - Extensions: Added a new method to the IExtensionManager for installing extensions (from local zip files currently) --HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4043760 --- .../Environment/DefaultOrchardHostTests.cs | 5 +++++ .../StandardExtensionRouteProviderTests.cs | 5 +++++ src/Orchard.Web/Core/Orchard.Core.csproj | 1 + .../Core/Themes/Controllers/AdminController.cs | 16 ++++++++++++++++ .../Core/Themes/Views/Admin/Index.aspx | 4 +++- .../Core/Themes/Views/Admin/Install.aspx | 13 +++++++++++++ src/Orchard/Extensions/ExtensionManager.cs | 6 ++++++ 7 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/Orchard.Web/Core/Themes/Views/Admin/Install.aspx diff --git a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs index d1aece32f..3a365a5cf 100644 --- a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs +++ b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.Web; using System.Web.Mvc; using System.Web.Routing; using Autofac; @@ -54,6 +55,10 @@ namespace Orchard.Tests.Environment { public IEnumerable ActiveExtensions() { return Enumerable.Empty(); } + + public void InstallExtension(HttpPostedFileBase extensionBundle) { + throw new NotImplementedException(); + } } [Test] diff --git a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs index 76a27e542..811c78639 100644 --- a/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs +++ b/src/Orchard.Tests/Mvc/Routes/StandardExtensionRouteProviderTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Web; using System.Web.Routing; using NUnit.Framework; using Orchard.Mvc.Routes; @@ -52,6 +53,10 @@ namespace Orchard.Tests.Mvc.Routes { } }; } + + public void InstallExtension(HttpPostedFileBase extensionBundle) { + throw new NotImplementedException(); + } } } } diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj index b17571471..acfc5ebd3 100644 --- a/src/Orchard.Web/Core/Orchard.Core.csproj +++ b/src/Orchard.Web/Core/Orchard.Core.csproj @@ -136,6 +136,7 @@ + diff --git a/src/Orchard.Web/Core/Themes/Controllers/AdminController.cs b/src/Orchard.Web/Core/Themes/Controllers/AdminController.cs index 1f55c745f..326a756cc 100644 --- a/src/Orchard.Web/Core/Themes/Controllers/AdminController.cs +++ b/src/Orchard.Web/Core/Themes/Controllers/AdminController.cs @@ -4,6 +4,7 @@ using Orchard.Core.Themes.ViewModels; using Orchard.Localization; using Orchard.Themes; using Orchard.UI.Notify; +using Orchard.Mvc.ViewModels; namespace Orchard.Core.Themes.Controllers { [ValidateInput(false)] @@ -42,5 +43,20 @@ namespace Orchard.Core.Themes.Controllers { return RedirectToAction("Index"); } } + + public ActionResult Install() { + return View(new AdminViewModel()); + } + + [AcceptVerbs(HttpVerbs.Post)] + public ActionResult Install(FormCollection input) { + try { + return RedirectToAction("Index"); + } + catch (Exception exception) { + _notifier.Error("Installing theme failed: " + exception.Message); + return RedirectToAction("Index"); + } + } } } diff --git a/src/Orchard.Web/Core/Themes/Views/Admin/Index.aspx b/src/Orchard.Web/Core/Themes/Views/Admin/Index.aspx index e53bd2684..c4dc206ab 100644 --- a/src/Orchard.Web/Core/Themes/Views/Admin/Index.aspx +++ b/src/Orchard.Web/Core/Themes/Views/Admin/Index.aspx @@ -13,7 +13,8 @@

Current Theme

<% if (Model.CurrentTheme == null) { %> - There is no current theme in the application. The built-in theme will be used. +

There is no current theme in the application. The built-in theme will be used.
+ <%=Html.ActionLink("Install a new Theme", "Install") %>

<% } else { %>

<%= Model.CurrentTheme.DisplayName %>

" alt="<%= Model.CurrentTheme.DisplayName %>" />
@@ -21,6 +22,7 @@ <%= Model.CurrentTheme.Version %>
<%= Model.CurrentTheme.Description %>
<%= Model.CurrentTheme.HomePage %>
+ <%=Html.ActionLink("Install a new Theme", "Install") %>

<% } %>
diff --git a/src/Orchard.Web/Core/Themes/Views/Admin/Install.aspx b/src/Orchard.Web/Core/Themes/Views/Admin/Install.aspx new file mode 100644 index 000000000..00ebef63a --- /dev/null +++ b/src/Orchard.Web/Core/Themes/Views/Admin/Install.aspx @@ -0,0 +1,13 @@ +<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> +<%@ Import Namespace="Orchard.Mvc.Html"%> +<% Html.Include("AdminHead"); %> +

Install Theme

+ <% using (Html.BeginForm("Install", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" })) {%> + <%= Html.ValidationSummary() %> +
+ +
+ +
+ <% } %> +<% Html.Include("AdminFoot"); %> \ No newline at end of file diff --git a/src/Orchard/Extensions/ExtensionManager.cs b/src/Orchard/Extensions/ExtensionManager.cs index 729192183..d86b79bb9 100644 --- a/src/Orchard/Extensions/ExtensionManager.cs +++ b/src/Orchard/Extensions/ExtensionManager.cs @@ -3,11 +3,13 @@ using System.Collections.Generic; using System.Linq; using Orchard.Extensions.Loaders; using Yaml.Grammar; +using System.Web; namespace Orchard.Extensions { public interface IExtensionManager { IEnumerable AvailableExtensions(); IEnumerable ActiveExtensions(); + void InstallExtension(HttpPostedFileBase extensionBundle); } public class ExtensionManager : IExtensionManager { @@ -66,6 +68,10 @@ namespace Orchard.Extensions { return _activeExtensions; } + public void InstallExtension(HttpPostedFileBase extensionBundle) { + throw new NotImplementedException(); + } + private IEnumerable BuildActiveExtensions() { //TODO: this component needs access to some "current settings" to know which are active foreach (var descriptor in AvailableExtensions()) {