mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 11:44:58 +08:00
Split feature lifetime events to "xx'ing" and "xx'ed"
--HG-- branch : dev
This commit is contained in:
@@ -1,14 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Web;
|
|
||||||
using Orchard.Environment;
|
using Orchard.Environment;
|
||||||
|
using Orchard.Environment.Extensions.Models;
|
||||||
using Orchard.Tasks.Indexing;
|
using Orchard.Tasks.Indexing;
|
||||||
using Orchard.ContentManagement;
|
using Orchard.ContentManagement;
|
||||||
|
|
||||||
namespace Orchard.Indexing {
|
namespace Orchard.Indexing {
|
||||||
public class DefaultIndexingUpdater : IFeatureEventHandler {
|
public class DefaultIndexingUpdater : IFeatureEventHandler {
|
||||||
|
|
||||||
private readonly IIndexingTaskManager _indexingTaskManager;
|
private readonly IIndexingTaskManager _indexingTaskManager;
|
||||||
private readonly IContentManager _contentManager;
|
private readonly IContentManager _contentManager;
|
||||||
|
|
||||||
@@ -17,10 +14,16 @@ namespace Orchard.Indexing {
|
|||||||
_contentManager = contentManager;
|
_contentManager = contentManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Install(Environment.Extensions.Models.Feature feature) {
|
public void Installing(Feature feature) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Enable(Environment.Extensions.Models.Feature feature) {
|
public void Installed(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Enabling(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Enabled(Feature feature) {
|
||||||
// create indexing tasks for all currently existing content, even when the module is enabled again
|
// create indexing tasks for all currently existing content, even when the module is enabled again
|
||||||
// as some content might have been created while this module was not active, and indexing tasks
|
// as some content might have been created while this module was not active, and indexing tasks
|
||||||
// would not exist for them, resulting in an uncomplete index.
|
// would not exist for them, resulting in an uncomplete index.
|
||||||
@@ -30,10 +33,16 @@ namespace Orchard.Indexing {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Disable(Environment.Extensions.Models.Feature feature) {
|
public void Disabling(Feature feature) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Uninstall(Environment.Extensions.Models.Feature feature) {
|
public void Disabled(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Uninstalling(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Uninstalled(Feature feature) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,4 +1,5 @@
|
|||||||
using Orchard.Environment;
|
using System;
|
||||||
|
using Orchard.Environment;
|
||||||
using Orchard.Environment.Extensions;
|
using Orchard.Environment.Extensions;
|
||||||
using Orchard.Environment.Extensions.Models;
|
using Orchard.Environment.Extensions.Models;
|
||||||
using Orchard.Localization;
|
using Orchard.Localization;
|
||||||
@@ -15,17 +16,31 @@ namespace Orchard.Packaging {
|
|||||||
|
|
||||||
public Localizer T { get; set; }
|
public Localizer T { get; set; }
|
||||||
|
|
||||||
public void Install(Feature feature) {
|
public void Installing(Feature feature) {
|
||||||
_packagingSourceManager.AddSource( "Orchard Extensions Gallery", "http://feed.nuget.org/ctp2/odata/v1" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Enable(Feature feature) {
|
public void Installed(Feature feature) {
|
||||||
|
if (feature.Descriptor.Id == "Gallery") {
|
||||||
|
_packagingSourceManager.AddSource("Orchard Extensions Gallery", "http://feed.nuget.org/ctp2/odata/v1");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Disable(Feature feature) {
|
public void Enabling(Feature feature) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Uninstall(Feature feature) {
|
public void Enabled(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Disabling(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Disabled(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Uninstalling(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Uninstalled(Feature feature) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Orchard.Environment;
|
using Orchard.Environment;
|
||||||
@@ -24,15 +25,30 @@ namespace Orchard.Roles {
|
|||||||
|
|
||||||
public ILogger Logger { get; set; }
|
public ILogger Logger { get; set; }
|
||||||
|
|
||||||
void IFeatureEventHandler.Install(Feature feature) {
|
void IFeatureEventHandler.Installing(Feature feature) {
|
||||||
AddDefaultRolesForFeature(feature);
|
AddDefaultRolesForFeature(feature);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IFeatureEventHandler.Enable(Feature feature) {}
|
void IFeatureEventHandler.Installed(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
void IFeatureEventHandler.Disable(Feature feature) {}
|
void IFeatureEventHandler.Enabling(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
void IFeatureEventHandler.Uninstall(Feature feature) {}
|
void IFeatureEventHandler.Enabled(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void IFeatureEventHandler.Disabling(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void IFeatureEventHandler.Disabled(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void IFeatureEventHandler.Uninstalling(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void IFeatureEventHandler.Uninstalled(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
public void AddDefaultRolesForFeature(Feature feature) {
|
public void AddDefaultRolesForFeature(Feature feature) {
|
||||||
var featureName = feature.Descriptor.Id;
|
var featureName = feature.Descriptor.Id;
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using Orchard.Environment;
|
using System;
|
||||||
|
using Orchard.Environment;
|
||||||
using Orchard.Environment.Extensions.Models;
|
using Orchard.Environment.Extensions.Models;
|
||||||
|
|
||||||
namespace Orchard.Data.Migration {
|
namespace Orchard.Data.Migration {
|
||||||
@@ -21,18 +22,30 @@ namespace Orchard.Data.Migration {
|
|||||||
_dataMigrationManager = dataMigrationManager;
|
_dataMigrationManager = dataMigrationManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Install(Feature feature) {
|
public void Installing(Feature feature) {
|
||||||
var featureName = feature.Descriptor.Id;
|
var featureName = feature.Descriptor.Id;
|
||||||
_dataMigrationManager.Update(featureName);
|
_dataMigrationManager.Update(featureName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Enable(Feature feature) {
|
public void Installed(Feature feature) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Disable(Feature feature) {
|
public void Enabling(Feature feature) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Uninstall(Feature feature) {
|
public void Enabled(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Disabling(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Disabled(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Uninstalling(Feature feature) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Uninstalled(Feature feature) {
|
||||||
var featureName = feature.Descriptor.Id;
|
var featureName = feature.Descriptor.Id;
|
||||||
if ( _dataMigrationManager.IsFeatureAlreadyInstalled(featureName) ) {
|
if ( _dataMigrationManager.IsFeatureAlreadyInstalled(featureName) ) {
|
||||||
_dataMigrationManager.Uninstall(featureName);
|
_dataMigrationManager.Uninstall(featureName);
|
||||||
|
@@ -8,9 +8,13 @@ namespace Orchard.Environment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public interface IFeatureEventHandler : IEventHandler {
|
public interface IFeatureEventHandler : IEventHandler {
|
||||||
void Install(Feature feature);
|
void Installing(Feature feature);
|
||||||
void Enable(Feature feature);
|
void Installed(Feature feature);
|
||||||
void Disable(Feature feature);
|
void Enabling(Feature feature);
|
||||||
void Uninstall(Feature feature);
|
void Enabled(Feature feature);
|
||||||
|
void Disabling(Feature feature);
|
||||||
|
void Disabled(Feature feature);
|
||||||
|
void Uninstalling(Feature feature);
|
||||||
|
void Uninstalled(Feature feature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -157,28 +157,32 @@ namespace Orchard.Environment.State {
|
|||||||
// lower enabled states in reverse order
|
// lower enabled states in reverse order
|
||||||
foreach (var entry in allEntries.Reverse().Where(entry => entry.FeatureState.EnableState == ShellFeatureState.State.Falling)) {
|
foreach (var entry in allEntries.Reverse().Where(entry => entry.FeatureState.EnableState == ShellFeatureState.State.Falling)) {
|
||||||
Logger.Information("Disabling feature '{0}'", entry.Feature.Descriptor.Id);
|
Logger.Information("Disabling feature '{0}'", entry.Feature.Descriptor.Id);
|
||||||
_featureEvents.Disable(entry.Feature);
|
_featureEvents.Disabling(entry.Feature);
|
||||||
_stateManager.UpdateEnabledState(entry.FeatureState, ShellFeatureState.State.Down);
|
_stateManager.UpdateEnabledState(entry.FeatureState, ShellFeatureState.State.Down);
|
||||||
|
_featureEvents.Disabled(entry.Feature);
|
||||||
}
|
}
|
||||||
|
|
||||||
// lower installed states in reverse order
|
// lower installed states in reverse order
|
||||||
foreach (var entry in allEntries.Reverse().Where(entry => entry.FeatureState.InstallState == ShellFeatureState.State.Falling)) {
|
foreach (var entry in allEntries.Reverse().Where(entry => entry.FeatureState.InstallState == ShellFeatureState.State.Falling)) {
|
||||||
Logger.Information("Uninstalling feature '{0}'", entry.Feature.Descriptor.Id);
|
Logger.Information("Uninstalling feature '{0}'", entry.Feature.Descriptor.Id);
|
||||||
_featureEvents.Uninstall(entry.Feature);
|
_featureEvents.Uninstalling(entry.Feature);
|
||||||
_stateManager.UpdateInstalledState(entry.FeatureState, ShellFeatureState.State.Down);
|
_stateManager.UpdateInstalledState(entry.FeatureState, ShellFeatureState.State.Down);
|
||||||
|
_featureEvents.Uninstalled(entry.Feature);
|
||||||
}
|
}
|
||||||
|
|
||||||
// raise install and enabled states in order
|
// raise install and enabled states in order
|
||||||
foreach (var entry in allEntries.Where(entry => IsRising(entry.FeatureState))) {
|
foreach (var entry in allEntries.Where(entry => IsRising(entry.FeatureState))) {
|
||||||
if (entry.FeatureState.InstallState == ShellFeatureState.State.Rising) {
|
if (entry.FeatureState.InstallState == ShellFeatureState.State.Rising) {
|
||||||
Logger.Information("Installing feature '{0}'", entry.Feature.Descriptor.Id);
|
Logger.Information("Installing feature '{0}'", entry.Feature.Descriptor.Id);
|
||||||
_featureEvents.Install(entry.Feature);
|
_featureEvents.Installing(entry.Feature);
|
||||||
_stateManager.UpdateInstalledState(entry.FeatureState, ShellFeatureState.State.Up);
|
_stateManager.UpdateInstalledState(entry.FeatureState, ShellFeatureState.State.Up);
|
||||||
|
_featureEvents.Installed(entry.Feature);
|
||||||
}
|
}
|
||||||
if (entry.FeatureState.EnableState == ShellFeatureState.State.Rising) {
|
if (entry.FeatureState.EnableState == ShellFeatureState.State.Rising) {
|
||||||
Logger.Information("Enabling feature '{0}'", entry.Feature.Descriptor.Id);
|
Logger.Information("Enabling feature '{0}'", entry.Feature.Descriptor.Id);
|
||||||
_featureEvents.Enable(entry.Feature);
|
_featureEvents.Enabling(entry.Feature);
|
||||||
_stateManager.UpdateEnabledState(entry.FeatureState, ShellFeatureState.State.Up);
|
_stateManager.UpdateEnabledState(entry.FeatureState, ShellFeatureState.State.Up);
|
||||||
|
_featureEvents.Enabled(entry.Feature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user