umbraco-current-user-action について
Umbraco のバックオフィスで、ログイン中のユーザーメニューにアクションを追加するためのスキルです。ドキュメント確認から要件整理、マニフェストと実装の生成までを案内します。
主な機能
- 01ユーザーメニュー用マニフェスト
- 02リンク型または実行型アクション
- 03カスタム要素アクション
- 04条件による表示制御
- 05ドキュメント確認を先に行う手順
活用シーン
- 01プロフィールや設定への入口を追加
- 02ユーザーメニューから独自コードを実行
- 03条件に応じてアクションを表示
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill umbraco-current-user-actionインストール後、Claude Code で/umbraco-current-user-actionを入力して読み込まれたか確認します。
詳細
Umbraco Current User Action
これは何ですか?
Current User Actions はユーザーメニュー(バックオフィスの右上隅にあるユーザーアバターをクリックしてアクセス)に表示されます。これらは、プロフィール設定、環境設定、カスタム機能など、現在ログインしているユーザー向けのクイックアクションを提供します。アクションはコードを実行したり、URL に遷移したりできます。
ドキュメント
実装する前に、常に最新のドキュメントを取得してください:
- Extension Types: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-types
- Foundation: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation
- Extension Registry: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-registry
関連する Foundation スキル
-
Conditions: アクションを表示するタイミングを制御するため
- 参照スキル:
umbraco-conditions
- 参照スキル:
-
Modals: アクションがモーダルダイアログを開く場合
- 参照スキル:
umbraco-modals
- 参照スキル:
ワークフロー
- ドキュメントを取得 - 上記の URL に対して WebFetch を使用します
- 質問する - どのようなアクションですか? 遷移または実行? 条件は必要ですか?
- ファイルを生成 - 最新のドキュメントに基づいてマニフェスト + アクションクラスを作成します
- 説明 - 作成された内容とテスト方法を示します
最小限の例
デフォルト Kind を使用したマニフェスト (manifests.ts)
import type { ManifestCurrentUserActionDefaultKind } from '@umbraco-cms/backoffice/extension-registry';
const manifest: ManifestCurrentUserActionDefaultKind = {
type: 'currentUserAction',
kind: 'default',
alias: 'My.CurrentUserAction.Preferences',
name: 'User Preferences',
api: () => import('./preferences-action.js'),
meta: {
icon: 'icon-settings',
label: 'My Preferences',
},
};
export const manifests = [manifest];
アクションの実装 (preferences-action.ts)
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
import type { UmbCurrentUserAction } from '@umbraco-cms/backoffice/current-user';
export class PreferencesAction extends UmbControllerBase implements UmbCurrentUserAction {
async getHref(): Promise<string | undefined> {
// Return undefined to use execute() instead
return undefined;
}
async execute(): Promise<void> {
// Perform the action
console.log('Opening preferences...');
}
}
export default PreferencesAction;
リンクベースのアクション
export class ExternalLinkAction extends UmbControllerBase implements UmbCurrentUserAction {
async getHref(): Promise<string | undefined> {
return 'https://docs.umbraco.com';
}
async execute(): Promise<void> {
// Not called when getHref returns a value
}
}
モーダルを開くアクション
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
import type { UmbCurrentUserAction } from '@umbraco-cms/backoffice/current-user';
export class SettingsAction extends UmbControllerBase implements UmbCurrentUserAction {
async getHref(): Promise<string | undefined> {
return undefined;
}
async execute(): Promise<void> {
const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
const modal = modalManager.open(this, MY_SETTINGS_MODAL, {
data: {},
});
await modal.onSubmit();
}
}
export default SettingsAction;
条件付きのアクション
const manifest: ManifestCurrentUserActionDefaultKind = {
type: 'currentUserAction',
kind: 'default',
alias: 'My.CurrentUserAction.Admin',
name: 'Admin Settings',
api: () => import('./admin-action.js'),
meta: {
icon: 'icon-lock',
label: 'Admin Settings',
},
conditions: [
{
alias: 'Umb.Condition.UserPermission.Admin',
// Only show for admin users
},
],
};
カスタム要素アクション
import type { ManifestCurrentUserAction } from '@umbraco-cms/backoffice/extension-registry';
const manifest: ManifestCurrentUserAction = {
type: 'currentUserAction',
alias: 'My.CurrentUserAction.Custom',
name: 'Custom Action',
element: () => import('./custom-action.element.js'),
api: () => import('./custom-action.js'),
meta: {},
};
内部ルートへの遷移
export class ProfileAction extends UmbControllerBase implements UmbCurrentUserAction {
async getHref(): Promise<string | undefined> {
// Navigate to a backoffice route
return '/section/settings/workspace/user-profile';
}
async execute(): Promise<void> {}
}
メタプロパティ(デフォルト Kind)
| プロパティ | 説明 |
|---|---|
icon | メニューに表示されるアイコン |
label | メニューに表示されるテキスト |
アクションインターフェース
| メソッド | 説明 |
|---|---|
getHref() | リンクベースのアクションの URL を返します |
execute() | アクションがクリックされたときに呼び出されます(href がない場合) |
以上です! 常に最新のドキュメントを取得し、例は最小限に保ち、完全に動作するコードを生成してください。
コメント
Markdown 対応