Saving restored version as Draft instead of Published, depending on ContentTypeSettings,Draftable.

This commit is contained in:
Sipke Schoorstra
2014-10-21 16:06:59 -07:00
parent a4cbb97b9f
commit ccc07b73e2
2 changed files with 12 additions and 8 deletions

View File

@@ -2,6 +2,8 @@
using Orchard.AuditTrail.Helpers;
using Orchard.AuditTrail.Models;
using Orchard.ContentManagement;
using Orchard.ContentManagement.MetaData;
using Orchard.Core.Contents.Settings;
using Orchard.Localization;
using Orchard.Security;
using Orchard.UI.Admin;
@@ -13,11 +15,13 @@ namespace Orchard.AuditTrail.Controllers {
private readonly IAuthorizer _authorizer;
private readonly IContentManager _contentManager;
private readonly INotifier _notifier;
private readonly IContentDefinitionManager _contentDefinitionManager;
public ContentController(IAuthorizer authorizer, IContentManager contentManager, INotifier notifier) {
public ContentController(IAuthorizer authorizer, IContentManager contentManager, INotifier notifier, IContentDefinitionManager contentDefinitionManager) {
_authorizer = authorizer;
_contentManager = contentManager;
_notifier = notifier;
_contentDefinitionManager = contentDefinitionManager;
T = NullLocalizer.Instance;
}
@@ -44,11 +48,11 @@ namespace Orchard.AuditTrail.Controllers {
if (!_authorizer.Authorize(Core.Contents.Permissions.PublishContent, contentItem))
return new HttpUnauthorizedResult();
var title = _contentManager.GetItemMetadata(contentItem).DisplayText;
var currentVersion = contentItem.Version;
var newContentItem = _contentManager.Rollback(contentItem, VersionOptions.Rollback(version, publish: true));
var contentType = _contentDefinitionManager.GetTypeDefinition(contentItem.ContentType);
var draftable = contentType.Settings.GetModel<ContentTypeSettings>().Draftable;
_contentManager.Rollback(contentItem, VersionOptions.Rollback(version, publish: !draftable));
_notifier.Information(T("{0} has been rolled back from version {1} to version {2} as version {3}.", title, currentVersion, version, newContentItem.Version));
_notifier.Information(T("Version {0} has been restored.", version));
returnUrl = Url.IsLocalUrl(returnUrl)
? returnUrl

View File

@@ -572,9 +572,6 @@ namespace Orchard.ContentManagement {
// Get the latest version.
var latestVersionRecord = contentItem.Record.Versions.Single(x => x.Latest);
// Unpublish the latest version.
latestVersionRecord.Published = false;
// Get the specified version.
var specifiedVersionContentItem =
contentItem.VersionRecord.Number == options.VersionNumber || contentItem.VersionRecord.Id == options.VersionRecordId
@@ -589,6 +586,9 @@ namespace Orchard.ContentManagement {
Handlers.Invoke(handler => handler.RolledBack(new RollbackContentContext(rolledBackContentItem, options)), Logger);
if (options.IsPublished) {
// Unpublish the latest version.
latestVersionRecord.Published = false;
var publishContext = new PublishContentContext(rolledBackContentItem, previousItemVersionRecord: latestVersionRecord);
Handlers.Invoke(handler => handler.Publishing(publishContext), Logger);