Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions DNN Platform/Library/Entities/Tabs/TabController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ namespace DotNetNuke.Entities.Tabs
using DotNetNuke.Entities.Content;
using DotNetNuke.Entities.Content.Common;
using DotNetNuke.Entities.Content.Taxonomy;
using DotNetNuke.Entities.Content.Workflow;
using DotNetNuke.Entities.Modules;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Entities.Tabs.Actions;
Expand Down Expand Up @@ -2415,8 +2416,14 @@ private int AddTabInternal(TabInfo tab, int afterTabId, int beforeTabId, bool in
AddAllTabsModules(tab);
}

// Check Tab Versioning
if (tab.PortalID == Null.NullInteger || !TabVersionSettings.Instance.IsVersioningEnabled(tab.PortalID, tab.TabID))
// Publish immediately if versioning/workflow are not active or site workflow is Direct Publish
var versioningEnabled = tab.PortalID != Null.NullInteger && TabVersionSettings.Instance.IsVersioningEnabled(tab.PortalID);
var workflowEnabled = tab.PortalID != Null.NullInteger && TabWorkflowSettings.Instance.IsWorkflowEnabled(tab.PortalID);
var directPublishWorkflowId = tab.PortalID != Null.NullInteger ? SystemWorkflowManager.Instance.GetDirectPublishWorkflow(tab.PortalID)?.WorkflowID ?? Null.NullInteger : Null.NullInteger;
var defaultWorkflowId = tab.PortalID != Null.NullInteger ? TabWorkflowSettings.Instance.GetDefaultTabWorkflowId(tab.PortalID) : Null.NullInteger;
var isDirectPublishWorkflow = workflowEnabled && directPublishWorkflowId != Null.NullInteger && defaultWorkflowId == directPublishWorkflowId;

if (tab.PortalID == Null.NullInteger || !versioningEnabled || !workflowEnabled || isDirectPublishWorkflow)
{
this.MarkAsPublished(tab);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -810,14 +810,27 @@ public PageSettings GetPageSettings(int pageId, PortalSettings requestPortalSett
page.EnabledVersioning = TabVersionSettings.Instance.IsVersioningEnabled(portalSettings.PortalId, pageId);
page.WorkflowEnabled = TabWorkflowSettings.Instance.IsWorkflowEnabled(portalSettings.PortalId, pageId);
page.WorkflowId = WorkflowHelper.GetTabWorkflowId(tab);
page.WorkflowName = WorkflowHelper.GetTabWorkflowName(tab);

var workflow = WorkflowManager.Instance.GetWorkflow(page.WorkflowId);
page.WorkflowName = workflow?.WorkflowName ?? WorkflowHelper.GetTabWorkflowName(tab);

var isWorkflowCompleted = WorkflowHelper.IsWorkflowCompleted(tab);
var isWorkflowOnDraft = WorkflowEngine.Instance.IsWorkflowOnDraft(tab);

page.StateId = tab.StateID;
page.StateName = tab.StateID != Null.NullInteger ? WorkflowStateManager.Instance.GetWorkflowState(tab.StateID).StateName : null;
page.PublishStatus = tab.HasBeenPublished && page.IsWorkflowCompleted ? "Published" : "Draft";
page.StateName = tab.StateID != Null.NullInteger
? WorkflowStateManager.Instance.GetWorkflowState(tab.StateID)?.StateName
: workflow == null
? null
: isWorkflowCompleted
? workflow.LastState?.StateName
: workflow.FirstState?.StateName;

page.HasAVisibleVersion = tab.HasAVisibleVersion;
page.HasBeenPublished = tab.HasBeenPublished;
page.IsWorkflowCompleted = WorkflowHelper.IsWorkflowCompleted(tab);
page.IsWorkflowOnDraft = WorkflowEngine.Instance.IsWorkflowOnDraft(tab);
page.IsWorkflowCompleted = isWorkflowCompleted;
page.IsWorkflowOnDraft = isWorkflowOnDraft;
page.PublishStatus = tab.HasBeenPublished && isWorkflowCompleted ? "Published" : "Draft";

return page;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public static DateTime GetTabLastPublishedOn(TabInfo tab)
public static int GetTabWorkflowId(TabInfo tab)
{
return tab.StateID == Null.NullInteger
? TabWorkflowSettings.Instance.GetDefaultTabWorkflowId(PortalSettings.Current.PortalId)
? TabWorkflowSettings.Instance.GetDefaultTabWorkflowId(tab.PortalID)
: WorkflowStateManager.Instance.GetWorkflowState(tab.StateID).WorkflowID;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ public class CompleteWorkflowMenu : WorkflowBaseMenuItem

/// <inheritdoc/>
public override bool Visible() => base.Visible()
&& !this.IsDirectPublishWorkflow
&& (this.IsReviewOrOtherIntermediateStateWithPermissions == true
|| (this.IsPriorState == true && this.IsDraftWithPermissions == true) // for Save Draft workflow
|| (this.IsLastState == true && this.HasUnpublishVersion && this.HasDraftPermission == true)); // for Direct Publish workflow
|| (this.IsLastState == true && this.HasUnpublishVersion && this.HasDraftPermission == true)); // handles other workflow scenarios (not Direct Publish)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ public class DiscardWorkflowMenu : WorkflowBaseMenuItem

/// <inheritdoc/>
public override bool Visible() => base.Visible()
&& !this.IsDirectPublishWorkflow
&& ((this.IsLastState == false && (this.IsDraftWithPermissions == true || this.IsReviewOrOtherIntermediateStateWithPermissions == true))
|| (this.IsLastState == true && this.HasUnpublishVersion && this.HasDraftPermission)); // for Direct Publish workflow
|| (this.IsLastState == true && this.HasUnpublishVersion && this.HasDraftPermission)); // handles other workflow scenarios (not Direct Publish)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public abstract class WorkflowBaseMenuItem : BaseMenuItem
[SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "Breaking change")]
internal bool HasDraftPermission => PermissionProvider.Instance().CanAddContentToPage(TabController.CurrentPage);

internal bool IsDirectPublishWorkflow => this.Workflow?.WorkflowKey == SystemWorkflowManager.DirectPublishWorkflowKey;

private static ContentItem ContentItem => Util.GetContentController().GetContentItem(TabController.CurrentPage.ContentItemId);

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