mcpField
U
umbraco-collection-action

umbraco-collection-action

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

umbraco-collection-action について

umbraco-collection-actionは、Umbracoコレクションのツールバー操作を実装するスキルです。コードを実行する操作やURLへ移動する操作について、マニフェストやクラス、モーダル処理の作成を案内します。

主な機能

  1. 01コレクション操作マニフェストの作成
  2. 02ツールバー操作のコード実装
  3. 03固定または動的URLへの移動
  4. 04モーダルダイアログの表示
  5. 05追加オプションのインジケーター表示

活用シーン

  1. 01コレクションに作成操作を追加
  2. 02操作からコレクションデータをエクスポート
  3. 03コレクションのツールバーから移動
  4. 04操作からモーダルを開く

インストール

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

$npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-collection-action

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

詳細

Umbraco コレクションアクション

これは何ですか?

コレクションアクションは、コレクションのツールバーに表示されるボタンであり、コレクション全体に対して実行できるアクションを提供します(個々のアイテムに対するものではありません。それらはエンティティ一括アクションです)。一般的な例としては、「新規作成」ボタンやエクスポート機能があります。アクションはコードを実行するか、URL に遷移するかのいずれかです。

ドキュメント

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

関連する基盤スキル

  • Context API: コレクションコンテキストにアクセスするため

    • 参照スキル: umbraco-context-api
  • モーダル: アクションがモーダルダイアログを開く場合

    • 参照スキル: umbraco-modals
  • 条件: アクションをいつ表示するかを制御するため

    • 参照スキル: umbraco-conditions

ワークフロー

  1. ドキュメントを取得 - 上記の URL に対して WebFetch を使用します
  2. 質問する - どのコレクションですか?どのアクションを実行しますか?遷移しますか、それとも実行しますか?
  3. ファイルを生成 - 最新のドキュメントに基づいてマニフェスト + アクションクラスを作成します
  4. 説明 - 作成されたものと、そのテスト方法を示します

最小限の例

マニフェスト (manifests.ts)
import type { ManifestCollectionAction } from '@umbraco-cms/backoffice/extension-registry';

const manifest: ManifestCollectionAction = {
  type: 'collectionAction',
  alias: 'My.CollectionAction.Create',
  name: 'Create Item Action',
  api: () => import('./create-action.js'),
  meta: {
    label: 'Create New',
  },
  conditions: [
    {
      alias: 'Umb.Condition.CollectionAlias',
      match: 'My.Collection',
    },
  ],
};

export const manifests = [manifest];
アクションの実装 (create-action.ts)
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';

export class CreateAction extends UmbCollectionActionBase {
  constructor(host: UmbControllerHost) {
    super(host);
  }

  async execute() {
    // Perform the action
    console.log('Create action executed');
  }
}

export default CreateAction;
リンクベースのアクション (getHref を使用)
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';

export class CreateLinkAction extends UmbCollectionActionBase {
  async getHref() {
    // Return URL to navigate to
    return '/section/my-section/workspace/my-workspace/create';
  }

  async execute() {
    // Not called when getHref returns a value
  }
}

export default CreateLinkAction;
モーダル付きのアクション
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';

export class ExportAction extends UmbCollectionActionBase {
  async execute() {
    const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);

    const modal = modalManager.open(this, MY_EXPORT_MODAL, {
      data: {
        collectionAlias: 'My.Collection',
      },
    });

    await modal.onSubmit();
  }
}

export default ExportAction;
追加オプションインジケーター付きのアクション
const manifest: ManifestCollectionAction = {
  type: 'collectionAction',
  alias: 'My.CollectionAction.CreateWithOptions',
  name: 'Create With Options',
  api: () => import('./create-options-action.js'),
  meta: {
    label: 'Create',
    additionalOptions: true, // Shows indicator that more options are available
  },
  conditions: [
    {
      alias: 'Umb.Condition.CollectionAlias',
      match: 'Umb.Collection.Document',
    },
  ],
};
追加オプション付きのアクションクラス
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';

export class CreateWithOptionsAction extends UmbCollectionActionBase {
  async hasAdditionalOptions() {
    return true;
  }

  async execute() {
    // Show options menu or modal
  }
}

export default CreateWithOptionsAction;

メタプロパティ

プロパティ説明
label必須。ボタンのテキスト
hrefオプションの静的 URL(動的にする場合は getHref() を使用)
additionalOptionstrue の場合、ドロップダウンインジケーターを表示します

条件でよく使用されるコレクションエイリアス

  • Umb.Collection.Document
  • Umb.Collection.Media
  • Umb.Collection.Member
  • Umb.Collection.User
  • Umb.Collection.DataType

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

コメント