diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-publish.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-publish.action.ts index 223602ad3c..b211cbfbaf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-publish.action.ts @@ -1,7 +1,32 @@ import { UMB_DOCUMENT_WORKSPACE_CONTEXT } from '../document-workspace.context-token.js'; +import { + UMB_USER_PERMISSION_DOCUMENT_PUBLISH, + UMB_USER_PERMISSION_DOCUMENT_UPDATE, +} from '../../user-permissions/constants.js'; +import { UmbDocumentUserPermissionCondition } from '../../user-permissions/document-user-permission.condition.js'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbWorkspaceActionBase } from '@umbraco-cms/backoffice/workspace'; export class UmbDocumentSaveAndPublishWorkspaceAction extends UmbWorkspaceActionBase { + constructor(host: UmbControllerHost, args: any) { + super(host, args); + + /* The action is disabled by default because the onChange callback + will first be triggered when the condition is changed to permitted */ + this.disable(); + + const condition = new UmbDocumentUserPermissionCondition(host, { + host, + config: { + alias: 'Umb.Condition.UserPermission.Document', + allOf: [UMB_USER_PERMISSION_DOCUMENT_UPDATE, UMB_USER_PERMISSION_DOCUMENT_PUBLISH], + }, + onChange: () => { + condition.permitted ? this.enable() : this.disable(); + }, + }); + } + async execute() { const workspaceContext = await this.getContext(UMB_DOCUMENT_WORKSPACE_CONTEXT); return workspaceContext.saveAndPublish(); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts index 0591d7ba88..65eb92d8b6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts @@ -106,10 +106,6 @@ const workspaceActions: Array = [ alias: 'Umb.Condition.WorkspaceAlias', match: workspace.alias, }, - { - alias: 'Umb.Condition.UserPermission.Document', - allOf: [UMB_USER_PERMISSION_DOCUMENT_UPDATE, UMB_USER_PERMISSION_DOCUMENT_PUBLISH], - }, ], }, {