diff --git a/lib/Listener/BeforeTemplateRenderedListener.php b/lib/Listener/BeforeTemplateRenderedListener.php index 9a367ade..73d4ce42 100644 --- a/lib/Listener/BeforeTemplateRenderedListener.php +++ b/lib/Listener/BeforeTemplateRenderedListener.php @@ -33,6 +33,7 @@ public function handle(Event $event): void { } $this->initialState->provideInitialState('canCreateGuests', $this->config->canCreateGuests()); + Util::addScript('guests', 'guests-contactsmenu'); if (!$event->isLoggedIn() || $event->getResponse()->getTemplateName() !== 'index') { return; diff --git a/src/contactsmenu.ts b/src/contactsmenu.ts new file mode 100644 index 00000000..23d4f5bf --- /dev/null +++ b/src/contactsmenu.ts @@ -0,0 +1,20 @@ +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import AccountPlusOutlineSvg from '@mdi/svg/svg/account-plus-outline.svg?raw' +import { t } from '@nextcloud/l10n' + +window.addEventListener('DOMContentLoaded', () => { + if (OC.ContactsMenu && OCA.Guests?.openGuestDialog) { + OC.ContactsMenu.addAction({ + id: 'guests_addGuestAction', + icon: AccountPlusOutlineSvg, + label: t('guests', 'Add guest'), + onClick: () => { + OCA.Guests.openGuestDialog('core') + }, + }) + } +}) diff --git a/vite.config.ts b/vite.config.ts index 934ec631..2a61fcda 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -10,7 +10,8 @@ export default createAppConfig({ settings: 'src/settings.js', talk: 'src/talk.js', users: 'src/users.ts', - init: 'src/init.ts' + init: 'src/init.ts', + contactsmenu: 'src/contactsmenu.ts' }, { inlineCSS: {