Loading...
Loading...
Implement entity bulk actions in Umbraco backoffice using official docs
npx skill4agent add umbraco/umbraco-cms-backoffice-skills umbraco-entity-bulk-actionsumbraco-repository-patternumbraco-conditionsimport type { ManifestEntityBulkAction } from '@umbraco-cms/backoffice/extension-registry';
import { MyBulkAction } from './my-bulk-action.js';
const manifest: ManifestEntityBulkAction = {
type: 'entityBulkAction',
alias: 'My.EntityBulkAction',
name: 'My Bulk Action',
weight: 10,
api: MyBulkAction,
meta: {
icon: 'icon-check',
label: 'Process Selected',
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'Umb.Collection.Document',
},
],
};
export const manifests = [manifest];import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-bulk-action';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
export class MyBulkAction extends UmbEntityBulkActionBase<never> {
constructor(host: UmbControllerHost, args: { selection: Array<string> }) {
super(host, args);
}
async execute() {
// this.selection contains array of unique identifiers
console.log('Processing items:', this.selection);
for (const unique of this.selection) {
// Process each selected item
console.log('Processing:', unique);
}
alert(`Processed ${this.selection.length} items`);
}
}import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-bulk-action';
export class MyBulkAction extends UmbEntityBulkActionBase<MyRepository> {
async execute() {
// Process all selected items via repository
for (const unique of this.selection) {
await this.repository?.processItem(unique);
}
}
}const manifest: ManifestEntityBulkAction = {
type: 'entityBulkAction',
alias: 'My.MediaBulkAction',
name: 'Process Media',
api: MyBulkAction,
meta: {
icon: 'icon-picture',
label: 'Optimize Images',
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'Umb.Collection.Media',
},
],
};Umb.Collection.DocumentUmb.Collection.MediaUmb.Collection.Member