Merge branch 'bug/handling-theme-dependencies' into dev

This commit is contained in:
Lombiq
2015-12-03 21:43:34 +01:00
5 changed files with 116 additions and 6 deletions

View File

@@ -35,6 +35,8 @@ namespace Orchard.Themes.Controllers {
private readonly IThemeService _themeService;
private readonly ShellSettings _shellSettings;
private const string AlreadyEnabledFeatures = "Orchard.Themes.AlreadyEnabledFeatures";
public AdminController(
IEnumerable<IExtensionDisplayEventHandler> extensionDisplayEventHandlers,
IOrchardServices services,
@@ -132,8 +134,11 @@ namespace Orchard.Themes.Controllers {
Services.Notifier.Error(T("Theme {0} was not found", themeId));
} else {
var alreadyEnabledFeatures = GetEnabledFeatures();
_themeService.EnableThemeFeatures(themeId);
_previewTheme.SetPreviewTheme(themeId);
alreadyEnabledFeatures.Except(new[] { themeId });
TempData[AlreadyEnabledFeatures] = alreadyEnabledFeatures;
}
return this.RedirectLocal(returnUrl, "~/");
@@ -161,6 +166,18 @@ namespace Orchard.Themes.Controllers {
if (!Services.Authorizer.Authorize(Permissions.ApplyTheme, T("Couldn't preview the current theme")))
return new HttpUnauthorizedResult();
if (TempData.ContainsKey(AlreadyEnabledFeatures)) {
var alreadyEnabledFeatures = TempData[AlreadyEnabledFeatures] as IEnumerable<string>;
if (alreadyEnabledFeatures != null) {
var afterEnabledFeatures = GetEnabledFeatures();
if (afterEnabledFeatures.Count() > alreadyEnabledFeatures.Count()) {
var disableFeatures = afterEnabledFeatures.Except(alreadyEnabledFeatures);
_themeService.DisablePreviewFeatures(disableFeatures);
}
}
}
_previewTheme.SetPreviewTheme(null);
return RedirectToAction("Index");
@@ -252,5 +269,9 @@ namespace Orchard.Themes.Controllers {
return string.IsNullOrEmpty(value);
}
}
public IEnumerable<string> GetEnabledFeatures() {
return _featureManager.GetEnabledFeatures().Select(f => f.Id);
}
}
}