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);
        }
Example #2
0
        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("&quot;{0}&quot; has been restored.", restoredContentItemTitle));

            return(this.RedirectReturn(returnUrl, () => Url.Action("Index", "Admin")));
        }