|
| 1 | +import { container, type AbstractModule } from '@pimcore/studio-ui-bundle' |
| 2 | +import { serviceIds, useTranslation } from '@pimcore/studio-ui-bundle/app' |
| 3 | +import { |
| 4 | + TAB_DEPENDENCIES, |
| 5 | + TAB_NOTES_AND_EVENTS, |
| 6 | + TAB_PROPERTIES, |
| 7 | + TAB_TAGS, |
| 8 | + TAB_WORKFLOW, |
| 9 | + type TypeRegistryInterface |
| 10 | +} from '@pimcore/studio-ui-bundle/modules/element' |
| 11 | +import { |
| 12 | + TAB_VERSIONS, |
| 13 | + TAB_EDIT, |
| 14 | + TAB_PREVIEW, |
| 15 | + SIDEBAR_AREABLOCK_TYPES, |
| 16 | + SIDEBAR_CONTENT_SETTINGS, |
| 17 | + SIDEBAR_DOCUMENT_CONFIGURATION, |
| 18 | + type DocumentSidebarManager, |
| 19 | + useAddDocument, |
| 20 | + AddDocumentFormType |
| 21 | +} from '@pimcore/studio-ui-bundle/modules/document' |
| 22 | +import { |
| 23 | + contextMenuConfig, |
| 24 | + type ContextMenuRegistry, |
| 25 | + type TreeContextMenuProps |
| 26 | +} from '@pimcore/studio-ui-bundle/modules/app' |
| 27 | +import { type BookTabManager } from '../document/editor/types/book/tab-manager/book-tab-manager' |
| 28 | + |
| 29 | +const BOOK_TAB_MANAGER_SERVICE_ID = 'ExampleBundle/Document/Editor/BookTabManager' |
| 30 | +const BOOK_SIDEBAR_MANAGER_SERVICE_ID = 'Document/Editor/Sidebar/BookSidebarManager' |
| 31 | + |
| 32 | +const registerDocumentType = (): void => { |
| 33 | + const typeRegistry = container.get<TypeRegistryInterface>( |
| 34 | + serviceIds['Document/Editor/TypeRegistry'] |
| 35 | + ) |
| 36 | + |
| 37 | + typeRegistry.register({ |
| 38 | + name: 'book', |
| 39 | + tabManagerServiceId: BOOK_TAB_MANAGER_SERVICE_ID |
| 40 | + }) |
| 41 | +} |
| 42 | + |
| 43 | +const registerTabs = (): void => { |
| 44 | + const bookTabManager = container.get<BookTabManager>(BOOK_TAB_MANAGER_SERVICE_ID) |
| 45 | + bookTabManager.register(TAB_EDIT) |
| 46 | + bookTabManager.register(TAB_PREVIEW) |
| 47 | + bookTabManager.register(TAB_PROPERTIES) |
| 48 | + bookTabManager.register(TAB_VERSIONS) |
| 49 | + bookTabManager.register(TAB_DEPENDENCIES) |
| 50 | + bookTabManager.register(TAB_NOTES_AND_EVENTS) |
| 51 | + bookTabManager.register(TAB_TAGS) |
| 52 | + bookTabManager.register(TAB_WORKFLOW) |
| 53 | +} |
| 54 | + |
| 55 | +const registerSidebars = (): void => { |
| 56 | + const sidebarManager = container.get<DocumentSidebarManager>(BOOK_SIDEBAR_MANAGER_SERVICE_ID) |
| 57 | + sidebarManager.registerEntry(SIDEBAR_AREABLOCK_TYPES) |
| 58 | + sidebarManager.registerEntry(SIDEBAR_CONTENT_SETTINGS) |
| 59 | + sidebarManager.registerEntry(SIDEBAR_DOCUMENT_CONFIGURATION) |
| 60 | +} |
| 61 | + |
| 62 | +const registerContextMenu = (): void => { |
| 63 | + const contextMenuRegistry = container.get<ContextMenuRegistry>( |
| 64 | + serviceIds['App/ContextMenuRegistry/ContextMenuRegistry'] |
| 65 | + ) |
| 66 | + const config = contextMenuConfig.documentTree |
| 67 | + |
| 68 | + contextMenuRegistry.registerToSlot(config.name, { |
| 69 | + name: 'addBook', |
| 70 | + priority: config.priority.addHardlink + 2, |
| 71 | + useMenuItem: (context: TreeContextMenuProps) => { |
| 72 | + const { t } = useTranslation() |
| 73 | + const { addDocumentTreeContextMenuItem } = useAddDocument({ |
| 74 | + type: 'book', |
| 75 | + iconValue: 'book', |
| 76 | + contextMenuKey: 'addBook', |
| 77 | + formType: AddDocumentFormType.KEY_ONLY, |
| 78 | + modalTitle: t('document.tree.context-menu.add-book', 'Add Book') |
| 79 | + }) |
| 80 | + return addDocumentTreeContextMenuItem(context.target) |
| 81 | + } |
| 82 | + }) |
| 83 | +} |
| 84 | + |
| 85 | +export const BookDocumentModule: AbstractModule = { |
| 86 | + onInit: (): void => { |
| 87 | + registerDocumentType() |
| 88 | + registerTabs() |
| 89 | + registerSidebars() |
| 90 | + registerContextMenu() |
| 91 | + } |
| 92 | +} |
0 commit comments