public void RestoreWithPublishUnpublishesPreviousLatestVersion() { // Generate some versions var gamma1 = _manager.Create(DefaultGammaName, VersionOptions.Published); Flush(); var gamma2 = _manager.GetDraftRequired(gamma1.Id); _manager.Publish(gamma2); Flush(); var gamma3 = _manager.GetDraftRequired(gamma1.Id); _manager.Publish(gamma3); Flush(); // Restore to version 1. var gamma4 = _manager.Restore(gamma1, VersionOptions.Restore(1, publish: true)); FlushAndClear(); // Assert that version 3 is no longer published and that version 4 is now published. var gamma = _manager.Get(gamma1.Id, VersionOptions.Number(3)); Assert.That(gamma.VersionRecord.Published, Is.False); Assert.That(gamma4.VersionRecord.Published, Is.True); }
public ContentItem Restore(ContentItem contentItem) { var versions = contentItem.Record.Versions.OrderBy(x => x.Number).ToArray(); var lastVersion = versions.Last(); if (lastVersion.Latest || lastVersion.Published) throw new InvalidOperationException(String.Format("Cannot restore content item with ID {0} ftom the recycle bin, since that item is not deleted", contentItem.Id)); return _contentManager.Restore(contentItem, VersionOptions.Restore(lastVersion.Number, publish: false)); }
public ActionResult Restore(int id, int version, string returnUrl) { var contentItem = _contentManager.Get(id, VersionOptions.Number(version)); if (!_authorizer.Authorize(Core.Contents.Permissions.PublishContent, contentItem)) { return(new HttpUnauthorizedResult()); } var contentType = _contentDefinitionManager.GetTypeDefinition(contentItem.ContentType); var draftable = contentType.Settings.GetModel <ContentTypeSettings>().Draftable; var restoredContentItem = _contentManager.Restore(contentItem, VersionOptions.Restore(version, publish: !draftable)); var restoredContentItemTitle = _contentManager.GetItemMetadata(restoredContentItem).DisplayText; _notifier.Information(T(""{0}" has been restored.", restoredContentItemTitle)); return(this.RedirectReturn(returnUrl, () => Url.Action("Index", "Admin"))); }