umbraco-collection-action

安装量: 58
排名: #12754

安装

npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-collection-action
Umbraco Collection Action
What is it?
Collection Actions are buttons that appear in a collection's toolbar, providing actions that can be performed on the collection as a whole (not on individual items - those are Entity Bulk Actions). Common examples include "Create New" buttons or export functionality. Actions can either execute code or navigate to a URL.
Documentation
Always fetch the latest docs before implementing:
Main docs
:
https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-types/collections
Collection View
:
https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-types/collections/collection-view
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
Context API
For accessing collection context
Reference skill:
umbraco-context-api
Modals
When actions open modal dialogs
Reference skill:
umbraco-modals
Conditions
For controlling when actions appear Reference skill: umbraco-conditions Workflow Fetch docs - Use WebFetch on the URLs above Ask questions - What collection? What action to perform? Navigate or execute? Generate files - Create manifest + action class based on latest docs Explain - Show what was created and how to test Minimal Examples Manifest (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 ] ; Action Implementation (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 ; Link-based Action (using 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 ; Action with Modal 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 ; Action with Additional Options Indicator 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' , } , ] , } ; Action Class with Additional Options 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 ; Meta Properties Property Description label Required. Button text href Optional static URL (use getHref() for dynamic) additionalOptions Shows dropdown indicator if true Common Collection Aliases for Conditions Umb.Collection.Document Umb.Collection.Media Umb.Collection.Member Umb.Collection.User Umb.Collection.DataType That's it! Always fetch fresh docs, keep examples minimal, generate complete working code.
返回排行榜