programatically set the condition for save and publish so we can disable the button instead of removing it

This commit is contained in:
Mads Rasmussen
2024-04-09 15:31:58 +02:00
parent 98f5cd2f56
commit 383fe6d05b
2 changed files with 25 additions and 4 deletions

View File

@@ -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();

View File

@@ -106,10 +106,6 @@ const workspaceActions: Array<ManifestWorkspaceActions> = [
alias: 'Umb.Condition.WorkspaceAlias',
match: workspace.alias,
},
{
alias: 'Umb.Condition.UserPermission.Document',
allOf: [UMB_USER_PERMISSION_DOCUMENT_UPDATE, UMB_USER_PERMISSION_DOCUMENT_PUBLISH],
},
],
},
{