Esempio n. 1
0
        /// <summary>Publishes the given version.</summary>
        /// <param name="version">The version to publish.</param>
        /// <returns>The published (master) version.</returns>
        public static ContentItem MakeMasterVersion(this IVersionManager versionManager, ContentItem versionToPublish)
        {
            if (!versionToPublish.VersionOf.HasValue)
            {
                return(versionToPublish);
            }

            var master = versionToPublish.VersionOf;

            versionManager.ReplaceVersion(master, versionToPublish, storeCurrentVersion: versionToPublish.VersionOf.Value.State == ContentState.Published);
            return(master);
        }
        /// <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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
 public override void Process(CommandContext state)
 {
     versionMaker.ReplaceVersion(state.Content.VersionOf, state.Content, true);
 }