protected void gvHistory_RowCommand(object sender, GridViewCommandEventArgs e) { var stateChanger = Engine.Resolve <StateChanger>(); ContentItem currentVersion = Selection.SelectedItem; int versionIndex = Convert.ToInt32(e.CommandArgument); if (e.CommandName == "Publish") { if (currentVersion.VersionIndex == versionIndex) { currentVersion.SavedBy = User.Identity.Name; if (!currentVersion.Published.HasValue || currentVersion.Published.Value > Utility.CurrentTime()) { currentVersion.Published = N2.Utility.CurrentTime(); } stateChanger.ChangeTo(currentVersion, ContentState.Published); persister.Save(currentVersion); Refresh(currentVersion, ToolbarArea.Both); } else { N2.ContentItem versionToRestore = versioner.GetVersion(currentVersion, versionIndex); bool storeCurrent = versionToRestore.State == ContentState.Unpublished; ContentItem unpublishedVersion = versioner.ReplaceVersion(currentVersion, versionToRestore, storeCurrent); currentVersion.SavedBy = User.Identity.Name; if (!currentVersion.Published.HasValue || currentVersion.Published.Value > Utility.CurrentTime()) { currentVersion.Published = N2.Utility.CurrentTime(); } stateChanger.ChangeTo(currentVersion, ContentState.Published); persister.Save(currentVersion); Refresh(currentVersion, ToolbarArea.Both); } } else if (currentVersion.VersionIndex != versionIndex && e.CommandName == "Delete") { ContentItem item = versioner.GetVersion(currentVersion, versionIndex); versioner.DeleteVersion(item); } }
/// <summary> /// Used by Versions-Dialog -> previewedItem.VersionOf.HasValue = TRUE ? /// </summary> /// <param name="versionManager"></param> /// <param name="persister"></param> /// <param name="item">The item to be replaced (Master Version)</param> /// <param name="versionIndex">Index of the version to be published</param> public static void PublishVersion(this IVersionManager versionManager, IPersister persister, ContentItem item, int versionIndex) { if (!item.IsPage) { throw new ArgumentException("PublishVersion requires item to be a page"); } if (item.VersionIndex != versionIndex) { // unpublish/restore ContentItem itemToPublish = versionManager.GetVersion(item, versionIndex); bool storeCurrent = item.State == ContentState.Published || itemToPublish.State == ContentState.Unpublished; versionManager.ReplaceVersion(item, itemToPublish, storeCurrent); // returns old version } Publish(versionManager, persister, item); }
protected void gvHistory_RowCommand(object sender, GridViewCommandEventArgs e) { ContentItem currentVersion = Selection.SelectedItem; int versionIndex = Convert.ToInt32(e.CommandArgument); if (e.CommandName == "Publish") { versioner.PublishVersion(persister, currentVersion, versionIndex); Refresh(currentVersion, ToolbarArea.Both); } else if (e.CommandName == "Delete") // why not delete draft && currentVersion.VersionIndex != versionIndex) { // delete a version, not the item! ContentItem item = versioner.GetVersion(currentVersion, versionIndex); if (CanDeleteVersion(item)) { versioner.DeleteVersion(item); Refresh(currentVersion, ToolbarArea.Both); } } }