umbraco-current-user-action

安装量: 60
排名: #12500

安装

npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-current-user-action
Umbraco Current User Action
What is it?
Current User Actions appear in the user menu (accessed by clicking the user avatar in the top-right corner of the backoffice). They provide quick actions for the currently logged-in user, such as profile settings, preferences, or custom functionality. Actions can execute code or navigate to a URL.
Documentation
Always fetch the latest docs before implementing:
Extension Types
:
https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-types
Foundation
:
https://docs.umbraco.com/umbraco-cms/customizing/foundation
Extension Registry
:
https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-registry
Related Foundation Skills
Conditions
For controlling when actions appear
Reference skill:
umbraco-conditions
Modals
When actions open modal dialogs Reference skill: umbraco-modals Workflow Fetch docs - Use WebFetch on the URLs above Ask questions - What action? Navigate or execute? Conditions needed? Generate files - Create manifest + action class based on latest docs Explain - Show what was created and how to test Minimal Examples Manifest with Default 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 ] ; Action Implementation (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 ; Link-based Action 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 } } Action Opening Modal 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 ; Action with Conditions 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 } , ] , } ; Custom Element Action 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 : { } , } ; Navigating to Internal Route 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

{ } } Meta Properties (Default Kind) Property Description icon Icon displayed in the menu label Text displayed in the menu Action Interface Method Description getHref() Returns URL for link-based actions execute() Called when action is clicked (if no href) That's it! Always fetch fresh docs, keep examples minimal, generate complete working code.

返回排行榜