Skip to content

Commit 39811e5

Browse files
authored
Merge pull request #6836 from tvatavuk/versioning
Fix new pages remain in Draft when Versioning is enabled and Workflow is disabled
2 parents 27f3400 + 5a1405b commit 39811e5

File tree

6 files changed

+34
-10
lines changed

6 files changed

+34
-10
lines changed

DNN Platform/Library/Entities/Tabs/TabController.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ namespace DotNetNuke.Entities.Tabs
2121
using DotNetNuke.Entities.Content;
2222
using DotNetNuke.Entities.Content.Common;
2323
using DotNetNuke.Entities.Content.Taxonomy;
24+
using DotNetNuke.Entities.Content.Workflow;
2425
using DotNetNuke.Entities.Modules;
2526
using DotNetNuke.Entities.Portals;
2627
using DotNetNuke.Entities.Tabs.Actions;
@@ -2415,8 +2416,14 @@ private int AddTabInternal(TabInfo tab, int afterTabId, int beforeTabId, bool in
24152416
AddAllTabsModules(tab);
24162417
}
24172418

2418-
// Check Tab Versioning
2419-
if (tab.PortalID == Null.NullInteger || !TabVersionSettings.Instance.IsVersioningEnabled(tab.PortalID, tab.TabID))
2419+
// Publish immediately if versioning/workflow are not active or site workflow is Direct Publish
2420+
var versioningEnabled = tab.PortalID != Null.NullInteger && TabVersionSettings.Instance.IsVersioningEnabled(tab.PortalID);
2421+
var workflowEnabled = tab.PortalID != Null.NullInteger && TabWorkflowSettings.Instance.IsWorkflowEnabled(tab.PortalID);
2422+
var directPublishWorkflowId = tab.PortalID != Null.NullInteger ? SystemWorkflowManager.Instance.GetDirectPublishWorkflow(tab.PortalID)?.WorkflowID ?? Null.NullInteger : Null.NullInteger;
2423+
var defaultWorkflowId = tab.PortalID != Null.NullInteger ? TabWorkflowSettings.Instance.GetDefaultTabWorkflowId(tab.PortalID) : Null.NullInteger;
2424+
var isDirectPublishWorkflow = workflowEnabled && directPublishWorkflowId != Null.NullInteger && defaultWorkflowId == directPublishWorkflowId;
2425+
2426+
if (tab.PortalID == Null.NullInteger || !versioningEnabled || !workflowEnabled || isDirectPublishWorkflow)
24202427
{
24212428
this.MarkAsPublished(tab);
24222429
}

Dnn.AdminExperience/Dnn.PersonaBar.Extensions/Components/Pages/PagesControllerImpl.cs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -810,14 +810,27 @@ public PageSettings GetPageSettings(int pageId, PortalSettings requestPortalSett
810810
page.EnabledVersioning = TabVersionSettings.Instance.IsVersioningEnabled(portalSettings.PortalId, pageId);
811811
page.WorkflowEnabled = TabWorkflowSettings.Instance.IsWorkflowEnabled(portalSettings.PortalId, pageId);
812812
page.WorkflowId = WorkflowHelper.GetTabWorkflowId(tab);
813-
page.WorkflowName = WorkflowHelper.GetTabWorkflowName(tab);
813+
814+
var workflow = WorkflowManager.Instance.GetWorkflow(page.WorkflowId);
815+
page.WorkflowName = workflow?.WorkflowName ?? WorkflowHelper.GetTabWorkflowName(tab);
816+
817+
var isWorkflowCompleted = WorkflowHelper.IsWorkflowCompleted(tab);
818+
var isWorkflowOnDraft = WorkflowEngine.Instance.IsWorkflowOnDraft(tab);
819+
814820
page.StateId = tab.StateID;
815-
page.StateName = tab.StateID != Null.NullInteger ? WorkflowStateManager.Instance.GetWorkflowState(tab.StateID).StateName : null;
816-
page.PublishStatus = tab.HasBeenPublished && page.IsWorkflowCompleted ? "Published" : "Draft";
821+
page.StateName = tab.StateID != Null.NullInteger
822+
? WorkflowStateManager.Instance.GetWorkflowState(tab.StateID)?.StateName
823+
: workflow == null
824+
? null
825+
: isWorkflowCompleted
826+
? workflow.LastState?.StateName
827+
: workflow.FirstState?.StateName;
828+
817829
page.HasAVisibleVersion = tab.HasAVisibleVersion;
818830
page.HasBeenPublished = tab.HasBeenPublished;
819-
page.IsWorkflowCompleted = WorkflowHelper.IsWorkflowCompleted(tab);
820-
page.IsWorkflowOnDraft = WorkflowEngine.Instance.IsWorkflowOnDraft(tab);
831+
page.IsWorkflowCompleted = isWorkflowCompleted;
832+
page.IsWorkflowOnDraft = isWorkflowOnDraft;
833+
page.PublishStatus = tab.HasBeenPublished && isWorkflowCompleted ? "Published" : "Draft";
821834

822835
return page;
823836
}

Dnn.AdminExperience/Dnn.PersonaBar.Extensions/Components/Pages/WorkflowHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static DateTime GetTabLastPublishedOn(TabInfo tab)
4141
public static int GetTabWorkflowId(TabInfo tab)
4242
{
4343
return tab.StateID == Null.NullInteger
44-
? TabWorkflowSettings.Instance.GetDefaultTabWorkflowId(PortalSettings.Current.PortalId)
44+
? TabWorkflowSettings.Instance.GetDefaultTabWorkflowId(tab.PortalID)
4545
: WorkflowStateManager.Instance.GetWorkflowState(tab.StateID).WorkflowID;
4646
}
4747

Dnn.AdminExperience/EditBar/Dnn.EditBar.UI/Items/CompleteWorkflowMenu.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ public class CompleteWorkflowMenu : WorkflowBaseMenuItem
3434

3535
/// <inheritdoc/>
3636
public override bool Visible() => base.Visible()
37+
&& !this.IsDirectPublishWorkflow
3738
&& (this.IsReviewOrOtherIntermediateStateWithPermissions == true
3839
|| (this.IsPriorState == true && this.IsDraftWithPermissions == true) // for Save Draft workflow
39-
|| (this.IsLastState == true && this.HasUnpublishVersion && this.HasDraftPermission == true)); // for Direct Publish workflow
40+
|| (this.IsLastState == true && this.HasUnpublishVersion && this.HasDraftPermission == true)); // handles other workflow scenarios (not Direct Publish)
4041
}
4142
}

Dnn.AdminExperience/EditBar/Dnn.EditBar.UI/Items/DiscardWorkflowMenu.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ public class DiscardWorkflowMenu : WorkflowBaseMenuItem
3434

3535
/// <inheritdoc/>
3636
public override bool Visible() => base.Visible()
37+
&& !this.IsDirectPublishWorkflow
3738
&& ((this.IsLastState == false && (this.IsDraftWithPermissions == true || this.IsReviewOrOtherIntermediateStateWithPermissions == true))
38-
|| (this.IsLastState == true && this.HasUnpublishVersion && this.HasDraftPermission)); // for Direct Publish workflow
39+
|| (this.IsLastState == true && this.HasUnpublishVersion && this.HasDraftPermission)); // handles other workflow scenarios (not Direct Publish)
3940
}
4041
}

Dnn.AdminExperience/EditBar/Dnn.EditBar.UI/Items/WorkflowBaseMenuItem.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ public abstract class WorkflowBaseMenuItem : BaseMenuItem
6060
[SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "Breaking change")]
6161
internal bool HasDraftPermission => PermissionProvider.Instance().CanAddContentToPage(TabController.CurrentPage);
6262

63+
internal bool IsDirectPublishWorkflow => this.Workflow?.WorkflowKey == SystemWorkflowManager.DirectPublishWorkflowKey;
64+
6365
private static ContentItem ContentItem => Util.GetContentController().GetContentItem(TabController.CurrentPage.ContentItemId);
6466

6567
private static bool IsVersioningEnabled => TabVersionSettings.Instance.IsVersioningEnabled(PortalSettings.Current.PortalId, TabController.CurrentPage.TabID);

0 commit comments

Comments
 (0)