diff --git a/addons/project_todo/__manifest__.py b/addons/project_todo/__manifest__.py index e0ea34570d0..1fe9af07c14 100644 --- a/addons/project_todo/__manifest__.py +++ b/addons/project_todo/__manifest__.py @@ -28,6 +28,7 @@ 'project_todo/static/src/components/**/*', 'project_todo/static/src/scss/todo.scss', 'project_todo/static/src/views/**/*', + 'project_todo/static/src/web/**/*', ], }, 'license': 'LGPL-3', diff --git a/addons/project_todo/i18n/project_todo.pot b/addons/project_todo/i18n/project_todo.pot index 900612c1ad8..2efe8219b8d 100644 --- a/addons/project_todo/i18n/project_todo.pot +++ b/addons/project_todo/i18n/project_todo.pot @@ -186,6 +186,14 @@ msgstr "" msgid "Add To-Do" msgstr "" +#. module: project_todo +#. odoo-javascript +#: code:addons/project_todo/static/src/web/activity/activity_menu_patch.js:0 +#: code:addons/project_todo/static/src/web/activity/activity_menu_patch.js:0 +#, python-format +msgid "Add a To-Do" +msgstr "" + #. module: project_todo #: model_terms:ir.ui.view,arch_db:project_todo.mail_activity_todo_create_popup msgid "Add details about your to-do..." diff --git a/addons/project_todo/static/src/web/activity/activity_menu_patch.js b/addons/project_todo/static/src/web/activity/activity_menu_patch.js new file mode 100644 index 00000000000..d5ddbea81b2 --- /dev/null +++ b/addons/project_todo/static/src/web/activity/activity_menu_patch.js @@ -0,0 +1,45 @@ +/** @odoo-module **/ + +import { _t } from "@web/core/l10n/translation"; +import { ActivityMenu } from "@mail/core/web/activity_menu"; +import { FormViewDialog } from "@web/views/view_dialogs/form_view_dialog"; +import { useCommand } from "@web/core/commands/command_hook"; +import { useService } from "@web/core/utils/hooks"; +import { patch } from "@web/core/utils/patch"; +import { registry } from "@web/core/registry"; + +// Add a to-do category for the command palette +registry.category("command_categories").add("to-do", {}, { sequence: 105 }); + +patch(ActivityMenu.prototype, { + setup() { + super.setup(...arguments); + this.orm = useService("orm"); + this.dialogService = useService("dialog"); + useCommand( + _t("Add a To-Do"), + () => { + document.body.click(); // hack to close command palette + this.createActivityTodo(); + }, + { + category: "to-do", + hotkey: "alt+control+l", + global: true, + } + ); + }, + + async createActivityTodo() { + const wizard = await this.orm.call("mail.activity.todo.create", "create", [{ + "user_id": this.userId, + }]); + this.dialogService.add(FormViewDialog, { + title: _t("Add a To-Do"), + resModel: "mail.activity.todo.create", + resId: wizard, + preventCreate: true, + size: "md", + }); + }, +});