diff --git a/src/Orchard.Web/Core/Themes/Models/Theme.cs b/src/Orchard.Web/Core/Themes/Models/Theme.cs index 3724c25eb..444625c9a 100644 --- a/src/Orchard.Web/Core/Themes/Models/Theme.cs +++ b/src/Orchard.Web/Core/Themes/Models/Theme.cs @@ -14,6 +14,7 @@ namespace Orchard.Core.Themes.Models { public string Version { get; set; } public string Author { get; set; } public string HomePage { get; set; } + public string Tags { get; set; } #endregion } diff --git a/src/Orchard.Web/Core/Themes/Records/ThemeRecord.cs b/src/Orchard.Web/Core/Themes/Records/ThemeRecord.cs index e94479489..6a1f7e02e 100644 --- a/src/Orchard.Web/Core/Themes/Records/ThemeRecord.cs +++ b/src/Orchard.Web/Core/Themes/Records/ThemeRecord.cs @@ -8,5 +8,6 @@ namespace Orchard.Core.Themes.Records { public virtual string Version { get; set; } public virtual string Author { get; set; } public virtual string HomePage { get; set; } + public virtual string Tags { get; set; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Themes/Services/ThemeService.cs b/src/Orchard.Web/Core/Themes/Services/ThemeService.cs index 737b88030..0dbc1d4a8 100644 --- a/src/Orchard.Web/Core/Themes/Services/ThemeService.cs +++ b/src/Orchard.Web/Core/Themes/Services/ThemeService.cs @@ -74,6 +74,7 @@ namespace Orchard.Core.Themes.Services { HomePage = descriptor.HomePage ?? String.Empty, ThemeName = descriptor.Name, Version = descriptor.Version ?? String.Empty, + Tags = descriptor.Tags ?? String.Empty }; } } @@ -83,9 +84,7 @@ namespace Orchard.Core.Themes.Services { public IEnumerable GetInstalledThemes() { List themes = new List(); foreach (var descriptor in _extensionManager.AvailableExtensions()) { - //todo: (heskew) filter out Admin themes in a different manner - eventually we'll need a way to select the admin theme so there should be a clear separation - if (String.Equals(descriptor.ExtensionType, "Theme", StringComparison.OrdinalIgnoreCase) - && !(descriptor.Name.EndsWith("Admin", StringComparison.OrdinalIgnoreCase))) { + if (String.Equals(descriptor.ExtensionType, "Theme", StringComparison.OrdinalIgnoreCase)) { Theme theme = new Theme { Author = descriptor.Author ?? String.Empty, Description = descriptor.Description ?? String.Empty, @@ -93,14 +92,16 @@ namespace Orchard.Core.Themes.Services { HomePage = descriptor.HomePage ?? String.Empty, ThemeName = descriptor.Name, Version = descriptor.Version ?? String.Empty, + Tags = descriptor.Tags ?? String.Empty }; - themes.Add(theme); + if (!theme.Tags.Contains("hidden")) { + themes.Add(theme); + } } } return themes; } - public void InstallTheme(HttpPostedFileBase file) { _extensionManager.InstallExtension("Theme", file); } diff --git a/src/Orchard.Web/Themes/SafeMode/Theme.txt b/src/Orchard.Web/Themes/SafeMode/Theme.txt index 9c94620ba..d25fa82bc 100644 --- a/src/Orchard.Web/Themes/SafeMode/Theme.txt +++ b/src/Orchard.Web/Themes/SafeMode/Theme.txt @@ -2,5 +2,5 @@ author: Jonathan Wall description: The Orchard Theme for setup and failure conditions. version: 1.0 -tags: Orchard +tags: hidden homepage: http://www.orchardproject.net \ No newline at end of file diff --git a/src/Orchard.Web/Themes/TheAdmin/Theme.txt b/src/Orchard.Web/Themes/TheAdmin/Theme.txt index 33c63a180..6382f8be4 100644 --- a/src/Orchard.Web/Themes/TheAdmin/Theme.txt +++ b/src/Orchard.Web/Themes/TheAdmin/Theme.txt @@ -1,5 +1,6 @@ name: The Admin version: 1.0 author: Jon Wall +tags: hidden, admin description: An admin theme not to be used for the site so don't click "Activate" (or "Uninstall"). In the near future admin themes won't be mixed in with site themes. homepage: http://www.orchardproject.net \ No newline at end of file diff --git a/src/Orchard/Environment/ShellBuilders/SafeModeShellContainerFactory.cs b/src/Orchard/Environment/ShellBuilders/SafeModeShellContainerFactory.cs index f00f63d2e..93966bd0a 100644 --- a/src/Orchard/Environment/ShellBuilders/SafeModeShellContainerFactory.cs +++ b/src/Orchard/Environment/ShellBuilders/SafeModeShellContainerFactory.cs @@ -110,6 +110,7 @@ namespace Orchard.Environment.ShellBuilders { public string Version { get; set; } public string Author { get; set; } public string HomePage { get; set; } + public string Tags { get; set; } } private readonly SafeModeTheme _theme = new SafeModeTheme { diff --git a/src/Orchard/Extensions/ExtensionDescriptor.cs b/src/Orchard/Extensions/ExtensionDescriptor.cs index 81dc2a412..e3a71845f 100644 --- a/src/Orchard/Extensions/ExtensionDescriptor.cs +++ b/src/Orchard/Extensions/ExtensionDescriptor.cs @@ -21,5 +21,6 @@ public string Version { get; set; } public string Author { get; set; } public string HomePage { get; set; } + public string Tags { get; set; } } } diff --git a/src/Orchard/Extensions/ExtensionManager.cs b/src/Orchard/Extensions/ExtensionManager.cs index 763f302e1..6b0891536 100644 --- a/src/Orchard/Extensions/ExtensionManager.cs +++ b/src/Orchard/Extensions/ExtensionManager.cs @@ -56,7 +56,8 @@ namespace Orchard.Extensions { Description = GetValue(fields, "description"), Version = GetValue(fields, "version"), Author = GetValue(fields, "author"), - HomePage = GetValue(fields, "homepage") + HomePage = GetValue(fields, "homepage"), + Tags = GetValue(fields, "tags") }; } diff --git a/src/Orchard/Themes/ITheme.cs b/src/Orchard/Themes/ITheme.cs index 5354529b6..40205cc05 100644 --- a/src/Orchard/Themes/ITheme.cs +++ b/src/Orchard/Themes/ITheme.cs @@ -11,5 +11,6 @@ namespace Orchard.Themes { string Version { get; set; } string Author { get; set; } string HomePage { get; set; } + string Tags { get; set; } } }