diff --git a/README.md b/README.md index 6d2ffc15a36d..ba00acf9efbf 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ addon | version | maintainers | summary [web_save_discard_button](web_save_discard_button/) | 16.0.1.0.2 | [![synconics](https://github.com/synconics.png?size=30px)](https://github.com/synconics) | Save & Discard Buttons [web_search_with_and](web_search_with_and/) | 16.0.1.0.0 | | Use AND conditions on omnibar search [web_select_all_companies](web_select_all_companies/) | 16.0.1.0.1 | | Allows you to select all companies in one click. +[web_send_message_popup](web_send_message_popup/) | 16.0.1.0.0 | | Web Send Message as Popup [web_sheet_full_width](web_sheet_full_width/) | 16.0.1.0.0 | | Use the whole available screen width when displaying sheets [web_theme_classic](web_theme_classic/) | 16.0.1.0.2 | [![legalsylvain](https://github.com/legalsylvain.png?size=30px)](https://github.com/legalsylvain) | Contrasted style on fields to improve the UI. [web_timeline](web_timeline/) | 16.0.1.0.3 | [![tarteo](https://github.com/tarteo.png?size=30px)](https://github.com/tarteo) | Interactive visualization chart to show events in time diff --git a/setup/_metapackage/VERSION.txt b/setup/_metapackage/VERSION.txt index 279243b196c6..7dbbc2d42a98 100644 --- a/setup/_metapackage/VERSION.txt +++ b/setup/_metapackage/VERSION.txt @@ -1 +1 @@ -16.0.20240228.0 \ No newline at end of file +16.0.20240302.0 \ No newline at end of file diff --git a/setup/_metapackage/setup.py b/setup/_metapackage/setup.py index cc1453832157..66656200d017 100644 --- a/setup/_metapackage/setup.py +++ b/setup/_metapackage/setup.py @@ -38,6 +38,7 @@ 'odoo-addon-web_save_discard_button>=16.0dev,<16.1dev', 'odoo-addon-web_search_with_and>=16.0dev,<16.1dev', 'odoo-addon-web_select_all_companies>=16.0dev,<16.1dev', + 'odoo-addon-web_send_message_popup>=16.0dev,<16.1dev', 'odoo-addon-web_sheet_full_width>=16.0dev,<16.1dev', 'odoo-addon-web_theme_classic>=16.0dev,<16.1dev', 'odoo-addon-web_timeline>=16.0dev,<16.1dev', diff --git a/setup/web_send_message_popup/odoo/addons/web_send_message_popup b/setup/web_send_message_popup/odoo/addons/web_send_message_popup new file mode 120000 index 000000000000..6fb492b625aa --- /dev/null +++ b/setup/web_send_message_popup/odoo/addons/web_send_message_popup @@ -0,0 +1 @@ +../../../../web_send_message_popup \ No newline at end of file diff --git a/setup/web_send_message_popup/setup.py b/setup/web_send_message_popup/setup.py new file mode 100644 index 000000000000..28c57bb64031 --- /dev/null +++ b/setup/web_send_message_popup/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/web_send_message_popup/README.rst b/web_send_message_popup/README.rst new file mode 100644 index 000000000000..0d1f056efe88 --- /dev/null +++ b/web_send_message_popup/README.rst @@ -0,0 +1,88 @@ +========================= +Web Send Message as Popup +========================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:0083ff4f27d544631c17fd7354b1243d92d296ca3a3a9f61b183e739ec6e8346 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github + :target: https://github.com/OCA/web/tree/16.0/web_send_message_popup + :alt: OCA/web +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/web-16-0/web-16-0-web_send_message_popup + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +In the email/notes threads below the form views, the link 'Send a +message' unfold a text field. From there, a button allows to open the +text field in a full featured email popup with the subject, templates, +attachments and followers. + +This module changes the link 'Send a message' so it opens directly the +full featured popup instead of the text field, avoiding an extra click +if the popup is always wanted. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Camptocamp + +Contributors +~~~~~~~~~~~~ + +* Guewen Baconnier +* Yannick Vaucher +* Nicolas JEUDY +* Artem Kostyuk +* Stéphane Mangin +* Helly kapatel + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/web `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/web_send_message_popup/__init__.py b/web_send_message_popup/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web_send_message_popup/__manifest__.py b/web_send_message_popup/__manifest__.py new file mode 100644 index 000000000000..934c6733f0f5 --- /dev/null +++ b/web_send_message_popup/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2014-2021 Camptocamp SA +# License AGPL-3.0 or later (http://gnu.org/licenses/agpl). +{ + "name": "Web Send Message as Popup", + "version": "16.0.1.0.0", + "author": "Camptocamp, Odoo Community Association (OCA)", + "maintainer": "Camptocamp", + "license": "AGPL-3", + "category": "Hidden", + "depends": ["web", "mail"], + "website": "https://github.com/OCA/web", + "assets": { + "web.assets_backend": ["web_send_message_popup/static/src/models/**/*.js"] + }, +} diff --git a/web_send_message_popup/i18n/fa.po b/web_send_message_popup/i18n/fa.po new file mode 100644 index 000000000000..e022053e5ca5 --- /dev/null +++ b/web_send_message_popup/i18n/fa.po @@ -0,0 +1,6 @@ +#. module: web_send_message_popup +#. odoo-javascript +#: code:addons/web_send_message_popup/static/src/models/chatter/chatter.esm.js:0 +#, python-format +msgid "Compose Email" +msgstr "" diff --git a/web_send_message_popup/i18n/web_send_message_popup.pot b/web_send_message_popup/i18n/web_send_message_popup.pot new file mode 100644 index 000000000000..2b13ff2c286d --- /dev/null +++ b/web_send_message_popup/i18n/web_send_message_popup.pot @@ -0,0 +1,21 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_send_message_popup +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: web_send_message_popup +#. odoo-javascript +#: code:addons/web_send_message_popup/static/src/models/chatter/chatter.esm.js:0 +#, python-format +msgid "Compose Email" +msgstr "" diff --git a/web_send_message_popup/readme/CONTRIBUTORS.rst b/web_send_message_popup/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..8c768804abba --- /dev/null +++ b/web_send_message_popup/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* Guewen Baconnier +* Yannick Vaucher +* Nicolas JEUDY +* Artem Kostyuk +* Stéphane Mangin +* Helly kapatel diff --git a/web_send_message_popup/readme/DESCRIPTION.rst b/web_send_message_popup/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..c661e1b33adc --- /dev/null +++ b/web_send_message_popup/readme/DESCRIPTION.rst @@ -0,0 +1,8 @@ +In the email/notes threads below the form views, the link 'Send a +message' unfold a text field. From there, a button allows to open the +text field in a full featured email popup with the subject, templates, +attachments and followers. + +This module changes the link 'Send a message' so it opens directly the +full featured popup instead of the text field, avoiding an extra click +if the popup is always wanted. diff --git a/web_send_message_popup/static/description/icon.png b/web_send_message_popup/static/description/icon.png new file mode 100644 index 000000000000..3a0328b516c4 Binary files /dev/null and b/web_send_message_popup/static/description/icon.png differ diff --git a/web_send_message_popup/static/description/index.html b/web_send_message_popup/static/description/index.html new file mode 100644 index 000000000000..88b65124cc57 --- /dev/null +++ b/web_send_message_popup/static/description/index.html @@ -0,0 +1,432 @@ + + + + + + +Web Send Message as Popup + + + +
+

Web Send Message as Popup

+ + +

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runboat

+

In the email/notes threads below the form views, the link ‘Send a +message’ unfold a text field. From there, a button allows to open the +text field in a full featured email popup with the subject, templates, +attachments and followers.

+

This module changes the link ‘Send a message’ so it opens directly the +full featured popup instead of the text field, avoiding an extra click +if the popup is always wanted.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Camptocamp
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/web project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/web_send_message_popup/static/src/models/chatter/chatter.esm.js b/web_send_message_popup/static/src/models/chatter/chatter.esm.js new file mode 100644 index 000000000000..748afc11045e --- /dev/null +++ b/web_send_message_popup/static/src/models/chatter/chatter.esm.js @@ -0,0 +1,62 @@ +/** @odoo-module **/ + +import {clear} from "@mail/model/model_field_command"; +import {escapeAndCompactTextContent} from "@mail/js/utils"; +import {registerPatch} from "@mail/model/model_core"; + +registerPatch({ + name: "Chatter", + recordMethods: { + // Fn overwrite + onClickSendMessage() { + if (this.composerView) { + // Change `isLog` to false since this should only be possible when you + // press "Log Note" first, otherwise this won't hurt. + this.composerView.composer.update({isLog: false}); + // Open the full composer with `composerView` because it carries through + // the composer options. + this.composerView.openFullComposer(); + // Clear the `composerView` since we don't need it no more. + this.update({composerView: clear()}); + return; + } + this.openFullComposer(); + }, + async openFullComposer() { + // Rough copy of composer view function `openFullComposer`. + // Get composer from thread. + // We access data from the composer since history still is saved there. + // e.g. open and close "Log note". + const composer = this.thread.composer; + const context = { + default_attachment_ids: composer.attachments.map((att) => att.id), + default_body: escapeAndCompactTextContent(composer.textInputContent), + default_is_log: false, + default_model: this.threadModel, + default_partner_ids: composer.recipients.map((partner) => partner.id), + default_res_id: this.threadId, + mail_post_autofollow: this.thread.hasWriteAccess, + }; + const action = { + type: "ir.actions.act_window", + name: this.env._t("Compose Email"), + res_model: "mail.compose.message", + view_mode: "form", + views: [[false, "form"]], + target: "new", + context, + }; + const options = { + on_close: () => { + if (composer.exists()) { + composer._reset(); + if (composer.activeThread) { + composer.activeThread.fetchData(["messages"]); + } + } + }, + }; + await this.env.services.action.doAction(action, options); + }, + }, +});