@theme.DisplayName
- @Html.Image(Href(Html.ThemePath(theme, "/Theme.png")), Html.Encode(theme.DisplayName), null)
+ @Html.Image(Href(theme.ThemePath("/Theme.png")), Html.Encode(theme.DisplayName), null)
@using (Html.BeginFormAntiForgeryPost(Url.Action(theme.Enabled ? "Disable" : "Enable"), FormMethod.Post, new { @class = "inline" })) {
@Html.Hidden("themeName", theme.ThemeName)
@@ -41,13 +41,13 @@
@Html.Hidden("themeName", theme.ThemeName)
}
-
@T("By") @theme.Author
+
@T("By") @theme.Descriptor.Author
- @T("Version:") @theme.Version
- @theme.Description
- @theme.HomePage
+ @T("Version:") @theme.Descriptor.Version
+ @theme.Descriptor.Description
+ @theme.Descriptor.WebSite
- @if(Model.FeaturesThatNeedUpdate.Contains(theme.ThemeName)){
+ @if(theme.NeedsUpdate){
using (Html.BeginFormAntiForgeryPost(Url.Action("Update"), FormMethod.Post, new { @class = "inline link" })) {
@Html.Hidden("themeName", theme.ThemeName)
diff --git a/src/Orchard.Web/Themes/Primus/Theme.png b/src/Orchard.Web/Themes/Primus/Theme.png
new file mode 100644
index 000000000..e1371de56
Binary files /dev/null and b/src/Orchard.Web/Themes/Primus/Theme.png differ
diff --git a/src/Orchard.Web/Themes/Primus/Theme.txt b/src/Orchard.Web/Themes/Primus/Theme.txt
new file mode 100644
index 000000000..ec969317d
--- /dev/null
+++ b/src/Orchard.Web/Themes/Primus/Theme.txt
@@ -0,0 +1,6 @@
+Name: Primus
+Author: Lou
+Description: desc
+Version: 0.1
+Website: http://whereslou.com
+Zones: Main, Sidebar
diff --git a/src/Orchard.Web/Themes/Secundus/Theme.png b/src/Orchard.Web/Themes/Secundus/Theme.png
new file mode 100644
index 000000000..e1371de56
Binary files /dev/null and b/src/Orchard.Web/Themes/Secundus/Theme.png differ
diff --git a/src/Orchard.Web/Themes/Secundus/Theme.txt b/src/Orchard.Web/Themes/Secundus/Theme.txt
new file mode 100644
index 000000000..5e4860dda
--- /dev/null
+++ b/src/Orchard.Web/Themes/Secundus/Theme.txt
@@ -0,0 +1,6 @@
+Name: Secundus
+Author: Lou
+Description: desc
+Version: 0.1
+Website: http://whereslou.com
+Zones: Main, Sidebar
diff --git a/src/Orchard.Web/Themes/Themes.csproj b/src/Orchard.Web/Themes/Themes.csproj
index 7b6afc1bf..6e4a12edf 100644
--- a/src/Orchard.Web/Themes/Themes.csproj
+++ b/src/Orchard.Web/Themes/Themes.csproj
@@ -49,6 +49,10 @@
+
+
+
+
@@ -93,7 +97,6 @@
-
-
+
diff --git a/src/Orchard/Environment/Features/FeatureManager.cs b/src/Orchard/Environment/Features/FeatureManager.cs
index d574b2481..b4f347f71 100644
--- a/src/Orchard/Environment/Features/FeatureManager.cs
+++ b/src/Orchard/Environment/Features/FeatureManager.cs
@@ -1,5 +1,8 @@
using System;
using System.Collections.Generic;
+using System.Linq;
+using Orchard.Environment.Descriptor;
+using Orchard.Environment.Descriptor.Models;
using Orchard.Environment.Extensions;
using Orchard.Environment.Extensions.Models;
@@ -8,16 +11,22 @@ namespace Orchard.Environment.Features {
IEnumerable GetAvailableFeatures();
IEnumerable GetEnabledFeatures();
- void EnableFeature(string name);
- void DisableFeature(string name);
+ void EnableFeatures(IEnumerable featureNames);
+ void DisableFeatures(IEnumerable featureNames);
}
-
public class FeatureManager : IFeatureManager {
private readonly IExtensionManager _extensionManager;
+ private readonly ShellDescriptor _shellDescriptor;
+ private readonly IShellDescriptorManager _shellDescriptorManager;
- public FeatureManager(IExtensionManager extensionManager) {
+ public FeatureManager(
+ IExtensionManager extensionManager,
+ ShellDescriptor shellDescriptor,
+ IShellDescriptorManager shellDescriptorManager) {
_extensionManager = extensionManager;
+ _shellDescriptor = shellDescriptor;
+ _shellDescriptorManager = shellDescriptorManager;
}
public IEnumerable GetAvailableFeatures() {
@@ -28,12 +37,30 @@ namespace Orchard.Environment.Features {
throw new NotImplementedException();
}
- public void EnableFeature(string name) {
- throw new NotImplementedException();
+ public void EnableFeatures(IEnumerable featureNames) {
+ var currentShellDescriptor = _shellDescriptorManager.GetShellDescriptor();
+
+ var updatedFeatures = currentShellDescriptor.Features
+ .Union(featureNames
+ .Where(name => !currentShellDescriptor.Features.Any(sf => sf.Name == name))
+ .Select(name => new ShellFeature {Name = name}));
+
+ _shellDescriptorManager.UpdateShellDescriptor(
+ currentShellDescriptor.SerialNumber,
+ updatedFeatures,
+ currentShellDescriptor.Parameters);
}
- public void DisableFeature(string name) {
- throw new NotImplementedException();
+ public void DisableFeatures(IEnumerable featureNames) {
+ var currentShellDescriptor = _shellDescriptorManager.GetShellDescriptor();
+
+ var updatedFeatures = currentShellDescriptor.Features
+ .Where(sf => !featureNames.Contains(sf.Name));
+
+ _shellDescriptorManager.UpdateShellDescriptor(
+ currentShellDescriptor.SerialNumber,
+ updatedFeatures,
+ currentShellDescriptor.Parameters);
}
diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj
index 6db017c77..294fc8e21 100644
--- a/src/Orchard/Orchard.Framework.csproj
+++ b/src/Orchard/Orchard.Framework.csproj
@@ -186,6 +186,7 @@
+
diff --git a/src/Orchard/Themes/IThemeManager.cs b/src/Orchard/Themes/IThemeManager.cs
index 1fc41ed14..40f37ccf4 100644
--- a/src/Orchard/Themes/IThemeManager.cs
+++ b/src/Orchard/Themes/IThemeManager.cs
@@ -1,42 +1,9 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Web.Routing;
-using Orchard.Environment.Extensions;
using Orchard.Environment.Extensions.Models;
namespace Orchard.Themes {
public interface IThemeManager : IDependency {
- [Obsolete]
ExtensionDescriptor GetRequestTheme(RequestContext requestContext);
}
-
- public class ThemeManager : IThemeManager {
- private readonly IEnumerable _themeSelectors;
- private readonly IExtensionManager _extensionManager;
-
- public ThemeManager(IEnumerable themeSelectors,
- IExtensionManager extensionManager) {
- _themeSelectors = themeSelectors;
- _extensionManager = extensionManager;
- }
-
- public ExtensionDescriptor GetRequestTheme(RequestContext requestContext) {
- var requestTheme = _themeSelectors
- .Select(x => x.GetTheme(requestContext))
- .Where(x => x != null)
- .OrderByDescending(x => x.Priority);
-
- if (requestTheme.Count() < 1)
- return null;
-
- foreach (var theme in requestTheme) {
- var t = _extensionManager.GetExtension(theme.ThemeName);
- if (t != null)
- return t;
- }
-
- return _extensionManager.GetExtension("SafeMode");
- }
- }
}
diff --git a/src/Orchard/Themes/ThemeManager.cs b/src/Orchard/Themes/ThemeManager.cs
new file mode 100644
index 000000000..21dd709a8
--- /dev/null
+++ b/src/Orchard/Themes/ThemeManager.cs
@@ -0,0 +1,36 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Web.Routing;
+using Orchard.Environment.Extensions;
+using Orchard.Environment.Extensions.Models;
+
+namespace Orchard.Themes {
+ public class ThemeManager : IThemeManager {
+ private readonly IEnumerable _themeSelectors;
+ private readonly IExtensionManager _extensionManager;
+
+ public ThemeManager(IEnumerable themeSelectors,
+ IExtensionManager extensionManager) {
+ _themeSelectors = themeSelectors;
+ _extensionManager = extensionManager;
+ }
+
+ public ExtensionDescriptor GetRequestTheme(RequestContext requestContext) {
+ var requestTheme = _themeSelectors
+ .Select(x => x.GetTheme(requestContext))
+ .Where(x => x != null)
+ .OrderByDescending(x => x.Priority);
+
+ if (requestTheme.Count() < 1)
+ return null;
+
+ foreach (var theme in requestTheme) {
+ var t = _extensionManager.GetExtension(theme.ThemeName);
+ if (t != null)
+ return t;
+ }
+
+ return _extensionManager.GetExtension("SafeMode");
+ }
+ }
+}
\ No newline at end of file