programatically set the condition for save and publish so we can disable the button instead of removing it
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user