mcpField
U
umbraco-entity-bulk-actions

umbraco-entity-bulk-actions

github.com/umbraco開発27390 回インストール6 週間前に更新
リポジトリ

umbraco-entity-bulk-actions について

Umbraco バックオフィス向けのエンティティ一括アクション実装を支援する開発スキルです。マニフェストやアクションクラス、リポジトリの利用方法を案内し、最新ドキュメントの確認を促します。

主な機能

  1. 01選択したエンティティへの一括操作
  2. 02マニフェストとアクションクラスの生成
  3. 03リポジトリ経由のエンティティ処理
  4. 04条件による表示制御

活用シーン

  1. 01コンテンツの一括公開や削除
  2. 02選択したメディアへの独自処理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-entity-bulk-actions

インストール後、Claude Code で/umbraco-entity-bulk-actionsを入力して読み込まれたか確認します。

詳細

Umbraco エンティティ一括操作

これは何ですか?

エンティティ一括操作は、複数のアイテムを一度に選択してアクションを実行します。ユーザーが複数のアイテムを選択するとコレクション選択ツールバーに表示され、複数のエンティティに対して一括公開、削除、カスタム処理などのバッチ操作を同時に実行できます。

ドキュメント

実装する前に、常に最新のドキュメントを取得してください:

関連する Foundation スキル

  • リポジトリパターン: データアクセスが必要な一括操作を実装する場合

    • 参照スキル: umbraco-repository-pattern
  • 条件: コレクションや権限に基づいて一括操作の表示を制御する場合

    • 参照スキル: umbraco-conditions

ワークフロー

  1. ドキュメントを取得 - 上記の URL に対して WebFetch を使用します
  2. 質問する - どのコレクションですか? どの一括操作ですか? どのエンティティタイプですか?
  3. ファイルを生成 - 最新のドキュメントに基づいてマニフェスト + 一括操作クラスを作成します
  4. 説明 - 何が作成されたか、どのようにテストするかを示します

最小限の例

マニフェスト (manifests.ts)
import 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];
一括操作の実装 (my-bulk-action.ts)
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.Document - コンテンツコレクション
  • Umb.Collection.Media - メディアコレクション
  • Umb.Collection.Member - メンバーコレクション

以上です! 常に最新のドキュメントを取得し、例は最小限に保ち、完全に動作するコードを生成してください。

コメント