From e30fcacf4e254b31a328064bd52bd3986240e701 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 9 Apr 2024 19:50:00 +0200 Subject: [PATCH] disable save and publish button when not allowed --- .../actions/save-and-preview.action.ts | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-preview.action.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-preview.action.ts index 67fea0b564..b6c2596618 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-preview.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/actions/save-and-preview.action.ts @@ -1,13 +1,29 @@ -import { UMB_DOCUMENT_WORKSPACE_CONTEXT } from '../document-workspace.context-token.js'; +import { UmbDocumentUserPermissionCondition } from '../../user-permissions/document-user-permission.condition.js'; +import { UMB_USER_PERMISSION_DOCUMENT_UPDATE } from '../../user-permissions/index.js'; import { UmbWorkspaceActionBase } from '@umbraco-cms/backoffice/workspace'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; export class UmbDocumentSaveAndPreviewWorkspaceAction 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], + }, + onChange: () => { + condition.permitted ? this.enable() : this.disable(); + }, + }); + } + async execute() { - const workspaceContext = await this.getContext(UMB_DOCUMENT_WORKSPACE_CONTEXT); - //const document = workspaceContext.getData(); - // TODO: handle errors - //if (!document) return; - //this.workspaceContext.repository?.saveAndPreview(); - //Remember to return a promise. + alert('Save and preview'); } }