V15: Collection Bulk Action Permissions conditions (#17593)

* Deprecated TypeScript exports

* Removed the Bulk Action Permission condition

* Removed the "bulkActionPermissions" configuration

It's now based on manifest/extension conditions.

* Added user permission checks for documents

(media do not yet have entity permissions)

* Added console warning for 'bulk-action-permissions' editor
This commit is contained in:
Lee Kelleher
2024-11-21 12:37:38 +00:00
committed by GitHub
parent b402c1ffe3
commit f899be9640
18 changed files with 43 additions and 92 deletions

View File

@@ -854,16 +854,6 @@ export const data: Array<UmbMockDataTypeModel> = [
],
},
{ alias: 'orderBy', value: 'updateDate' },
{
alias: 'bulkActionPermissions',
value: {
allowBulkPublish: true,
allowBulkUnpublish: false,
allowBulkCopy: true,
allowBulkMove: false,
allowBulkDelete: true,
},
},
{
alias: 'layouts',
value: [
@@ -898,16 +888,6 @@ export const data: Array<UmbMockDataTypeModel> = [
],
},
{ alias: 'orderBy', value: 'updateDate' },
{
alias: 'bulkActionPermissions',
value: {
allowBulkPublish: false,
allowBulkUnpublish: false,
allowBulkCopy: true,
allowBulkMove: true,
allowBulkDelete: true,
},
},
{
alias: 'layouts',
value: [

View File

@@ -4,6 +4,7 @@ import type { UmbConditionControllerArguments, UmbExtensionCondition } from '@um
import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
/** @deprecated No longer used internally. This will be removed in Umbraco 17. [LK] */
export class UmbCollectionBulkActionPermissionCondition
extends UmbConditionBase<CollectionBulkActionPermissionConditionConfig>
implements UmbExtensionCondition
@@ -21,4 +22,5 @@ export class UmbCollectionBulkActionPermissionCondition
}
}
/** @deprecated No longer used internally. This will be removed in Umbraco 17. [LK] */
export default UmbCollectionBulkActionPermissionCondition;

View File

@@ -1,3 +1,4 @@
export const UMB_COLLECTION_ALIAS_CONDITION = 'Umb.Condition.CollectionAlias';
/** @deprecated No longer used internally. This will be removed in Umbraco 17. [LK] */
export const UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION = 'Umb.Condition.CollectionBulkActionPermission';

View File

@@ -8,6 +8,7 @@ export const manifests: Array<ManifestCondition> = [
alias: UMB_COLLECTION_ALIAS_CONDITION,
api: () => import('./collection-alias.condition.js'),
},
/** @deprecated No longer used internally. This class will be removed in Umbraco 17. [LK] */
{
type: 'condition',
name: 'Collection Bulk Action Permission Condition',

View File

@@ -2,6 +2,7 @@ import type { UmbCollectionBulkActionPermissions } from '../types.js';
import type { UMB_COLLECTION_ALIAS_CONDITION, UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION } from './constants.js';
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
/** @deprecated No longer used internally. This will be removed in Umbraco 17. [LK] */
export type CollectionBulkActionPermissionConditionConfig = UmbConditionConfigBase<
typeof UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION
> & {

View File

@@ -5,6 +5,7 @@ import type { UmbPaginationManager } from '@umbraco-cms/backoffice/utils';
export type * from './extensions/index.js';
export type * from './conditions/types.js';
/** @deprecated No longer used internally. This will be removed in Umbraco 17. [LK] */
export interface UmbCollectionBulkActionPermissions {
allowBulkCopy: boolean;
allowBulkDelete: boolean;
@@ -16,6 +17,7 @@ export interface UmbCollectionBulkActionPermissions {
export interface UmbCollectionConfiguration {
unique?: string;
dataTypeId?: string;
/** @deprecated No longer used internally. This will be removed in Umbraco 17. [LK] */
allowedEntityBulkActions?: UmbCollectionBulkActionPermissions;
layouts?: Array<UmbCollectionLayoutConfiguration>;
orderBy?: string;

View File

@@ -1,4 +1,4 @@
import type { UmbCollectionBulkActionPermissions, UmbCollectionConfiguration } from '../../collection/types.js';
import type { UmbCollectionConfiguration } from '../../collection/types.js';
import { UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT } from './content-collection-workspace.context-token.js';
import { customElement, html, nothing, state } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
@@ -64,7 +64,6 @@ export class UmbContentCollectionWorkspaceViewElement extends UmbLitElement impl
const pageSize = Number(config.getValueByAlias('pageSize'));
return {
unique: this._documentUnique,
allowedEntityBulkActions: config?.getValueByAlias<UmbCollectionBulkActionPermissions>('bulkActionPermissions'),
layouts: config?.getValueByAlias('layouts'),
orderBy: config?.getValueByAlias('orderBy') ?? 'updateDate',
orderDirection: config?.getValueByAlias('orderDirection') ?? 'asc',

View File

@@ -1,13 +1,10 @@
import { UMB_DOCUMENT_COLLECTION_ALIAS } from '../../collection/index.js';
import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js';
import { UMB_DOCUMENT_TREE_ALIAS } from '../../tree/manifests.js';
import { UMB_USER_PERMISSION_DOCUMENT_DUPLICATE } from '../../user-permissions/constants.js';
import { UMB_BULK_DUPLICATE_DOCUMENT_REPOSITORY_ALIAS } from './repository/constants.js';
import { manifests as repositoryManifests } from './repository/manifests.js';
import {
UMB_COLLECTION_ALIAS_CONDITION,
UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
} from '@umbraco-cms/backoffice/collection';
import type { UmbCollectionBulkActionPermissions } from '@umbraco-cms/backoffice/collection';
import { UMB_COLLECTION_ALIAS_CONDITION } from '@umbraco-cms/backoffice/collection';
export const manifests: Array<UmbExtensionManifest> = [
{
@@ -27,8 +24,8 @@ export const manifests: Array<UmbExtensionManifest> = [
match: UMB_DOCUMENT_COLLECTION_ALIAS,
},
{
alias: UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
match: (permissions: UmbCollectionBulkActionPermissions) => permissions.allowBulkCopy,
alias: 'Umb.Condition.UserPermission.Document',
allOf: [UMB_USER_PERMISSION_DOCUMENT_DUPLICATE],
},
],
},

View File

@@ -1,14 +1,14 @@
import { UMB_DOCUMENT_COLLECTION_ALIAS } from '../collection/index.js';
import { UMB_DOCUMENT_ENTITY_TYPE } from '../entity.js';
import {
UMB_USER_PERMISSION_DOCUMENT_PUBLISH,
UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH,
} from '../user-permissions/constants.js';
import { manifests as duplicateToManifests } from './duplicate-to/manifests.js';
import { manifests as moveToManifests } from './move-to/manifests.js';
import { manifests as trashManifests } from './trash/manifests.js';
import type { UmbCollectionBulkActionPermissions } from '@umbraco-cms/backoffice/collection';
import { UMB_COLLECTION_ALIAS_CONDITION } from '@umbraco-cms/backoffice/collection';
import type { ManifestEntityBulkAction } from '@umbraco-cms/backoffice/extension-registry';
import {
UMB_COLLECTION_ALIAS_CONDITION,
UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
} from '@umbraco-cms/backoffice/collection';
export const entityBulkActions: Array<ManifestEntityBulkAction> = [
{
@@ -29,8 +29,8 @@ export const entityBulkActions: Array<ManifestEntityBulkAction> = [
match: UMB_DOCUMENT_COLLECTION_ALIAS,
},
{
alias: UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
match: (permissions: UmbCollectionBulkActionPermissions) => permissions.allowBulkPublish,
alias: 'Umb.Condition.UserPermission.Document',
allOf: [UMB_USER_PERMISSION_DOCUMENT_PUBLISH],
},
],
},
@@ -52,8 +52,8 @@ export const entityBulkActions: Array<ManifestEntityBulkAction> = [
match: UMB_DOCUMENT_COLLECTION_ALIAS,
},
{
alias: UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
match: (permissions: UmbCollectionBulkActionPermissions) => permissions.allowBulkUnpublish,
alias: 'Umb.Condition.UserPermission.Document',
allOf: [UMB_USER_PERMISSION_DOCUMENT_UNPUBLISH],
},
],
},

View File

@@ -1,14 +1,10 @@
import { UMB_DOCUMENT_COLLECTION_ALIAS } from '../../collection/index.js';
import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js';
import { UMB_DOCUMENT_TREE_ALIAS } from '../../tree/manifests.js';
import { UMB_USER_PERMISSION_DOCUMENT_MOVE } from '../../user-permissions/constants.js';
import { UMB_BULK_MOVE_DOCUMENT_REPOSITORY_ALIAS } from './repository/constants.js';
import { manifests as repositoryManifests } from './repository/manifests.js';
import {
UMB_COLLECTION_ALIAS_CONDITION,
UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
} from '@umbraco-cms/backoffice/collection';
import type { UmbCollectionBulkActionPermissions } from '@umbraco-cms/backoffice/collection';
import { UMB_COLLECTION_ALIAS_CONDITION } from '@umbraco-cms/backoffice/collection';
export const manifests: Array<UmbExtensionManifest> = [
{
@@ -28,8 +24,8 @@ export const manifests: Array<UmbExtensionManifest> = [
match: UMB_DOCUMENT_COLLECTION_ALIAS,
},
{
alias: UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
match: (permissions: UmbCollectionBulkActionPermissions) => permissions.allowBulkMove,
alias: 'Umb.Condition.UserPermission.Document',
allOf: [UMB_USER_PERMISSION_DOCUMENT_MOVE],
},
],
},

View File

@@ -1,12 +1,9 @@
import { UMB_DOCUMENT_COLLECTION_ALIAS } from '../../collection/index.js';
import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js';
import { UMB_USER_PERMISSION_DOCUMENT_DELETE } from '../../user-permissions/constants.js';
import { UMB_BULK_TRASH_DOCUMENT_REPOSITORY_ALIAS } from './repository/constants.js';
import { manifests as repositoryManifests } from './repository/manifests.js';
import {
UMB_COLLECTION_ALIAS_CONDITION,
UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
} from '@umbraco-cms/backoffice/collection';
import type { UmbCollectionBulkActionPermissions } from '@umbraco-cms/backoffice/collection';
import { UMB_COLLECTION_ALIAS_CONDITION } from '@umbraco-cms/backoffice/collection';
export const manifests: Array<UmbExtensionManifest> = [
{
@@ -25,8 +22,8 @@ export const manifests: Array<UmbExtensionManifest> = [
match: UMB_DOCUMENT_COLLECTION_ALIAS,
},
{
alias: UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
match: (permissions: UmbCollectionBulkActionPermissions) => permissions.allowBulkDelete,
alias: 'Umb.Condition.UserPermission.Document',
allOf: [UMB_USER_PERMISSION_DOCUMENT_DELETE],
},
],
},

View File

@@ -6,11 +6,8 @@ import { UmbDataTypeDetailRepository } from '@umbraco-cms/backoffice/data-type';
import { UmbEntityContext } from '@umbraco-cms/backoffice/entity';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor';
import {
UmbCollectionElement,
type UmbCollectionBulkActionPermissions,
type UmbCollectionConfiguration,
} from '@umbraco-cms/backoffice/collection';
import { UmbCollectionElement } from '@umbraco-cms/backoffice/collection';
import type { UmbCollectionConfiguration } from '@umbraco-cms/backoffice/collection';
import type { UmbDataTypeDetailModel } from '@umbraco-cms/backoffice/data-type';
import type { UmbRoute } from '@umbraco-cms/backoffice/router';
@@ -74,7 +71,6 @@ export class UmbMediaDashboardElement extends UmbLitElement {
return {
unique: '',
dataTypeId: '',
allowedEntityBulkActions: config?.getValueByAlias<UmbCollectionBulkActionPermissions>('bulkActionPermissions'),
layouts: config?.getValueByAlias('layouts'),
orderBy: config?.getValueByAlias('orderBy') ?? 'updateDate',
orderDirection: config?.getValueByAlias('orderDirection') ?? 'asc',

View File

@@ -3,11 +3,7 @@ import { UMB_MEDIA_ENTITY_TYPE } from '../../entity.js';
import { UMB_MEDIA_TREE_ALIAS } from '../../tree/constants.js';
import { UMB_BULK_MOVE_MEDIA_REPOSITORY_ALIAS } from './repository/constants.js';
import { manifests as repositoryManifests } from './repository/manifests.js';
import {
UMB_COLLECTION_ALIAS_CONDITION,
UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
} from '@umbraco-cms/backoffice/collection';
import type { UmbCollectionBulkActionPermissions } from '@umbraco-cms/backoffice/collection';
import { UMB_COLLECTION_ALIAS_CONDITION } from '@umbraco-cms/backoffice/collection';
const bulkMoveAction: UmbExtensionManifest = {
type: 'entityBulkAction',
@@ -25,10 +21,6 @@ const bulkMoveAction: UmbExtensionManifest = {
alias: UMB_COLLECTION_ALIAS_CONDITION,
match: UMB_MEDIA_COLLECTION_ALIAS,
},
{
alias: UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
match: (permissions: UmbCollectionBulkActionPermissions) => permissions.allowBulkMove,
},
],
};

View File

@@ -2,11 +2,7 @@ import { UMB_MEDIA_COLLECTION_ALIAS } from '../../collection/index.js';
import { UMB_MEDIA_ENTITY_TYPE } from '../../entity.js';
import { UMB_BULK_TRASH_MEDIA_REPOSITORY_ALIAS } from './repository/constants.js';
import { manifests as repositoryManifests } from './repository/manifests.js';
import {
UMB_COLLECTION_ALIAS_CONDITION,
UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
} from '@umbraco-cms/backoffice/collection';
import type { UmbCollectionBulkActionPermissions } from '@umbraco-cms/backoffice/collection';
import { UMB_COLLECTION_ALIAS_CONDITION } from '@umbraco-cms/backoffice/collection';
const bulkTrashAction: UmbExtensionManifest = {
type: 'entityBulkAction',
@@ -23,10 +19,6 @@ const bulkTrashAction: UmbExtensionManifest = {
alias: UMB_COLLECTION_ALIAS_CONDITION,
match: UMB_MEDIA_COLLECTION_ALIAS,
},
{
alias: UMB_COLLECTION_BULK_ACTION_PERMISSION_CONDITION,
match: (permissions: UmbCollectionBulkActionPermissions) => permissions.allowBulkDelete,
},
],
};

View File

@@ -1,5 +1,6 @@
import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/property-editor';
/** @deprecated No longer used internally. This will be removed in Umbraco 17. [LK] */
export const manifest: ManifestPropertyEditorUi = {
type: 'propertyEditorUi',
alias: 'Umb.PropertyEditorUi.Collection.BulkActionPermissions',

View File

@@ -18,6 +18,7 @@ type BulkActionPermissionType =
/**
* @element umb-property-editor-ui-collection-permissions
* @deprecated No longer used internally. This will be removed in Umbraco 17. [LK]
*/
@customElement('umb-property-editor-ui-collection-permissions')
export class UmbPropertyEditorUICollectionPermissionsElement
@@ -66,6 +67,12 @@ export class UmbPropertyEditorUICollectionPermissionsElement
this.dispatchEvent(new UmbPropertyValueChangeEvent());
}
protected override firstUpdated() {
console.warn(
'The `umb-property-editor-ui-collection-permissions` component has been deprecated, it will be removed in Umbraco 17.',
);
}
override render() {
return html`<uui-toggle
?checked=${this.value.allowBulkPublish}
@@ -100,6 +107,7 @@ export class UmbPropertyEditorUICollectionPermissionsElement
];
}
/** @deprecated No longer used internally. This will be removed in Umbraco 17. [LK] */
export default UmbPropertyEditorUICollectionPermissionsElement;
declare global {

View File

@@ -41,12 +41,6 @@ const propertyEditorUiManifest: ManifestPropertyEditorUi = {
propertyEditorUiAlias: 'Umb.PropertyEditorUi.Integer',
config: [{ alias: 'min', value: 0 }],
},
{
alias: 'bulkActionPermissions',
label: 'Bulk Action Permissions',
description: 'The bulk actions that are allowed on items in the Collection view.',
propertyEditorUiAlias: 'Umb.PropertyEditorUi.Collection.BulkActionPermissions',
},
{
alias: 'icon',
label: 'Workspace View icon',
@@ -85,10 +79,6 @@ const propertyEditorUiManifest: ManifestPropertyEditorUi = {
{ alias: 'pageSize', value: 10 },
{ alias: 'orderBy', value: 'sortOrder' },
{ alias: 'orderDirection', value: 'desc' },
{
alias: 'bulkActionPermissions',
value: { allowBulkPublish: true, allowBulkUnpublish: true, allowBulkCopy: true },
},
{ alias: 'icon', value: 'icon-list' },
],
},

View File

@@ -7,10 +7,7 @@ import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { UMB_DOCUMENT_COLLECTION_ALIAS } from '@umbraco-cms/backoffice/document';
import { UMB_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/property';
import { UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/content';
import type {
UmbCollectionBulkActionPermissions,
UmbCollectionConfiguration,
} from '@umbraco-cms/backoffice/collection';
import type { UmbCollectionConfiguration } from '@umbraco-cms/backoffice/collection';
/**
* @element umb-property-editor-ui-collection
@@ -58,7 +55,6 @@ export class UmbPropertyEditorUICollectionElement extends UmbLitElement implemen
): UmbCollectionConfiguration {
const pageSize = Number(config?.getValueByAlias('pageSize'));
return {
allowedEntityBulkActions: config?.getValueByAlias<UmbCollectionBulkActionPermissions>('bulkActionPermissions'),
layouts: config?.getValueByAlias('layouts'),
orderBy: config?.getValueByAlias('orderBy') ?? 'updateDate',
orderDirection: config?.getValueByAlias('orderDirection') ?? 'asc',