From af93ee2a8f8acffc47b6427923864ee27658bcc9 Mon Sep 17 00:00:00 2001 From: Andreu Orensanz Date: Thu, 15 Jan 2026 10:10:10 +0100 Subject: [PATCH 1/6] [ADD] mail_activity_future_counter --- mail_activity_future_counter/README.rst | 88 ++++ mail_activity_future_counter/__init__.py | 2 + mail_activity_future_counter/__manifest__.py | 22 + mail_activity_future_counter/pyproject.toml | 3 + .../readme/DESCRIPTION.md | 11 + .../static/description/index.html | 434 ++++++++++++++++++ .../static/src/activity_menu_patch.esm.js | 15 + .../static/src/activity_menu_patch.scss | 4 + .../static/src/activity_menu_patch.xml | 13 + 9 files changed, 592 insertions(+) create mode 100644 mail_activity_future_counter/README.rst create mode 100644 mail_activity_future_counter/__init__.py create mode 100644 mail_activity_future_counter/__manifest__.py create mode 100644 mail_activity_future_counter/pyproject.toml create mode 100644 mail_activity_future_counter/readme/DESCRIPTION.md create mode 100644 mail_activity_future_counter/static/description/index.html create mode 100644 mail_activity_future_counter/static/src/activity_menu_patch.esm.js create mode 100644 mail_activity_future_counter/static/src/activity_menu_patch.scss create mode 100644 mail_activity_future_counter/static/src/activity_menu_patch.xml diff --git a/mail_activity_future_counter/README.rst b/mail_activity_future_counter/README.rst new file mode 100644 index 000000000..7c7c0a396 --- /dev/null +++ b/mail_activity_future_counter/README.rst @@ -0,0 +1,88 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +============================ +Mail Activity Future Counter +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d21f6a0040bd8c8d9d75d78fe5534af4ed522b602e4f1e17f3be707c14b78d3a + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-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%2Fmail-lightgray.png?logo=github + :target: https://github.com/OCA/mail/tree/17.0/mail_activity_future_counter + :alt: OCA/mail +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/mail-17-0/mail-17-0-mail_activity_future_counter + :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/mail&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a badge counter on the bottom-right of the activity +clock icon in the navigation bar, showing the count of future +activities. + +By default, Odoo only shows overdue + today activities in a badge on the +top-right of the clock icon. This module complements that by showing +future activities separately. + +Features: + +- Blue badge on bottom-right of the activity icon +- Shows count of all future activities +- Does not interfere with the existing top-right badge for + overdue/today activities + +**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 +------- + +* ForgeFlow + +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/mail `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_activity_future_counter/__init__.py b/mail_activity_future_counter/__init__.py new file mode 100644 index 000000000..5cb77b7bf --- /dev/null +++ b/mail_activity_future_counter/__init__.py @@ -0,0 +1,2 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). diff --git a/mail_activity_future_counter/__manifest__.py b/mail_activity_future_counter/__manifest__.py new file mode 100644 index 000000000..e7662f31b --- /dev/null +++ b/mail_activity_future_counter/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + "name": "Mail Activity Future Counter", + "summary": """Add a badge counter on the bottom-right of the activity + clock icon of the navigation bar, showing the count of future activities.""", + "version": "17.0.1.0.0", + "development_status": "Beta", + "category": "Social Network", + "website": "https://github.com/OCA/mail", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": ["mail"], + "assets": { + "web.assets_backend": [ + "mail_activity_future_counter/static/src/activity_menu_patch.esm.js", + "mail_activity_future_counter/static/src/activity_menu_patch.xml", + "mail_activity_future_counter/static/src/activity_menu_patch.scss", + ], + }, +} diff --git a/mail_activity_future_counter/pyproject.toml b/mail_activity_future_counter/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/mail_activity_future_counter/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/mail_activity_future_counter/readme/DESCRIPTION.md b/mail_activity_future_counter/readme/DESCRIPTION.md new file mode 100644 index 000000000..93f759e84 --- /dev/null +++ b/mail_activity_future_counter/readme/DESCRIPTION.md @@ -0,0 +1,11 @@ +This module adds a badge counter on the bottom-right of the activity clock icon +in the navigation bar, showing the count of future activities. + +By default, Odoo only shows overdue + today activities in a badge on the top-right of the clock icon. +This module complements that by showing future activities separately. + +Features: + +* Blue badge on bottom-right of the activity icon +* Shows count of all future activities +* Does not interfere with the existing top-right badge for overdue/today activities diff --git a/mail_activity_future_counter/static/description/index.html b/mail_activity_future_counter/static/description/index.html new file mode 100644 index 000000000..d98d02f76 --- /dev/null +++ b/mail_activity_future_counter/static/description/index.html @@ -0,0 +1,434 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Mail Activity Future Counter

+ +

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

+

This module adds a badge counter on the bottom-right of the activity +clock icon in the navigation bar, showing the count of future +activities.

+

By default, Odoo only shows overdue + today activities in a badge on the +top-right of the clock icon. This module complements that by showing +future activities separately.

+

Features:

+
    +
  • Blue badge on bottom-right of the activity icon
  • +
  • Shows count of all future activities
  • +
  • Does not interfere with the existing top-right badge for +overdue/today activities
  • +
+

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

+
    +
  • ForgeFlow
  • +
+
+
+

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/mail project on GitHub.

+

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

+
+
+
+
+ + diff --git a/mail_activity_future_counter/static/src/activity_menu_patch.esm.js b/mail_activity_future_counter/static/src/activity_menu_patch.esm.js new file mode 100644 index 000000000..565ccc23a --- /dev/null +++ b/mail_activity_future_counter/static/src/activity_menu_patch.esm.js @@ -0,0 +1,15 @@ +/** @odoo-module **/ + +import {ActivityMenu} from "@mail/core/web/activity_menu"; +import {patch} from "@web/core/utils/patch"; + +patch(ActivityMenu.prototype, { + async fetchSystrayActivities() { + await super.fetchSystrayActivities(); + let futureTotal = 0; + for (const group of this.store.activityGroups) { + futureTotal += group.planned_count || 0; + } + this.store.activityFutureCounter = futureTotal; + }, +}); diff --git a/mail_activity_future_counter/static/src/activity_menu_patch.scss b/mail_activity_future_counter/static/src/activity_menu_patch.scss new file mode 100644 index 000000000..86a562bdb --- /dev/null +++ b/mail_activity_future_counter/static/src/activity_menu_patch.scss @@ -0,0 +1,4 @@ +.o_menu_systray .o-mail-ActivityMenu-futureCounter { + background-color: $cyan !important; + transform: translate(-1.9em, 70%) !important; +} diff --git a/mail_activity_future_counter/static/src/activity_menu_patch.xml b/mail_activity_future_counter/static/src/activity_menu_patch.xml new file mode 100644 index 000000000..99f985b91 --- /dev/null +++ b/mail_activity_future_counter/static/src/activity_menu_patch.xml @@ -0,0 +1,13 @@ + + + + + + + + + + From c11d510d5ecfa501fdd55cd260486ce964a304fb Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 20 Jan 2026 22:41:44 +0000 Subject: [PATCH 2/6] [UPD] Update mail_activity_future_counter.pot --- .../i18n/mail_activity_future_counter.pot | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mail_activity_future_counter/i18n/mail_activity_future_counter.pot diff --git a/mail_activity_future_counter/i18n/mail_activity_future_counter.pot b/mail_activity_future_counter/i18n/mail_activity_future_counter.pot new file mode 100644 index 000000000..716a0702d --- /dev/null +++ b/mail_activity_future_counter/i18n/mail_activity_future_counter.pot @@ -0,0 +1,13 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.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" From 4605d89dbeb2ceef2601f23f9bc9d4d4d9ca4d50 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 20 Jan 2026 22:43:27 +0000 Subject: [PATCH 3/6] [BOT] post-merge updates --- mail_activity_future_counter/README.rst | 10 +++++----- .../static/description/icon.png | Bin 0 -> 10254 bytes .../static/description/index.html | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 mail_activity_future_counter/static/description/icon.png diff --git a/mail_activity_future_counter/README.rst b/mail_activity_future_counter/README.rst index 7c7c0a396..55b503bb1 100644 --- a/mail_activity_future_counter/README.rst +++ b/mail_activity_future_counter/README.rst @@ -11,7 +11,7 @@ Mail Activity Future Counter !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:d21f6a0040bd8c8d9d75d78fe5534af4ed522b602e4f1e17f3be707c14b78d3a + !! source digest: sha256:3439171d16e06d732781db4d66a9487620c758b952da207b79424c455faa40c0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -42,10 +42,10 @@ future activities separately. Features: -- Blue badge on bottom-right of the activity icon -- Shows count of all future activities -- Does not interfere with the existing top-right badge for - overdue/today activities +- Blue badge on bottom-right of the activity icon +- Shows count of all future activities +- Does not interfere with the existing top-right badge for overdue/today + activities **Table of contents** diff --git a/mail_activity_future_counter/static/description/icon.png b/mail_activity_future_counter/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1dcc49c24f364e9adf0afbc6fc0bac6dbecdeb11 GIT binary patch literal 10254 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 Activity Future Counter !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:d21f6a0040bd8c8d9d75d78fe5534af4ed522b602e4f1e17f3be707c14b78d3a +!! source digest: sha256:3439171d16e06d732781db4d66a9487620c758b952da207b79424c455faa40c0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module adds a badge counter on the bottom-right of the activity @@ -385,8 +385,8 @@

Mail Activity Future Counter

  • Blue badge on bottom-right of the activity icon
  • Shows count of all future activities
  • -
  • Does not interfere with the existing top-right badge for -overdue/today activities
  • +
  • Does not interfere with the existing top-right badge for overdue/today +activities

Table of contents

From 9b89052f41465138fc2f5c3a405c93c799471e9c Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 21 Jan 2026 07:17:31 +0000 Subject: [PATCH 4/6] Added translation using Weblate (Italian) --- mail_activity_future_counter/i18n/it.po | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 mail_activity_future_counter/i18n/it.po diff --git a/mail_activity_future_counter/i18n/it.po b/mail_activity_future_counter/i18n/it.po new file mode 100644 index 000000000..8af45f7b8 --- /dev/null +++ b/mail_activity_future_counter/i18n/it.po @@ -0,0 +1,14 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" From 3033f42ddc3c2bead9d18a2f4e29105813faafd0 Mon Sep 17 00:00:00 2001 From: Andreu Orensanz Date: Mon, 6 Jul 2026 15:42:38 +0200 Subject: [PATCH 5/6] [IMP] mail_activity_future_counter: pre-commit auto fixes --- .../static/src/activity_menu_patch.xml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mail_activity_future_counter/static/src/activity_menu_patch.xml b/mail_activity_future_counter/static/src/activity_menu_patch.xml index 99f985b91..d468d18b1 100644 --- a/mail_activity_future_counter/static/src/activity_menu_patch.xml +++ b/mail_activity_future_counter/static/src/activity_menu_patch.xml @@ -2,12 +2,14 @@ - - + - - + > + + + + From d422aa1473c8c801b12a2b3e295d3fb8c4b23454 Mon Sep 17 00:00:00 2001 From: Andreu Orensanz Date: Mon, 6 Jul 2026 15:51:06 +0200 Subject: [PATCH 6/6] [MIG] mail_activity_future_counter: Migration to 19.0 --- mail_activity_future_counter/README.rst | 18 +++++++++--------- mail_activity_future_counter/__manifest__.py | 2 +- .../static/description/index.html | 10 +++++----- .../static/src/activity_menu_patch.esm.js | 19 +++++++++++-------- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/mail_activity_future_counter/README.rst b/mail_activity_future_counter/README.rst index 55b503bb1..49d42c128 100644 --- a/mail_activity_future_counter/README.rst +++ b/mail_activity_future_counter/README.rst @@ -21,13 +21,13 @@ Mail Activity Future Counter :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github - :target: https://github.com/OCA/mail/tree/17.0/mail_activity_future_counter + :target: https://github.com/OCA/mail/tree/19.0/mail_activity_future_counter :alt: OCA/mail .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/mail-17-0/mail-17-0-mail_activity_future_counter + :target: https://translation.odoo-community.org/projects/mail-19-0/mail-19-0-mail_activity_future_counter :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/mail&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/mail&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -42,10 +42,10 @@ future activities separately. Features: -- Blue badge on bottom-right of the activity icon -- Shows count of all future activities -- Does not interfere with the existing top-right badge for overdue/today - activities +- Blue badge on bottom-right of the activity icon +- Shows count of all future activities +- Does not interfere with the existing top-right badge for + overdue/today activities **Table of contents** @@ -58,7 +58,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -83,6 +83,6 @@ 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/mail `_ project on GitHub. +This module is part of the `OCA/mail `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_activity_future_counter/__manifest__.py b/mail_activity_future_counter/__manifest__.py index e7662f31b..529b0deb8 100644 --- a/mail_activity_future_counter/__manifest__.py +++ b/mail_activity_future_counter/__manifest__.py @@ -4,7 +4,7 @@ "name": "Mail Activity Future Counter", "summary": """Add a badge counter on the bottom-right of the activity clock icon of the navigation bar, showing the count of future activities.""", - "version": "17.0.1.0.0", + "version": "19.0.1.0.0", "development_status": "Beta", "category": "Social Network", "website": "https://github.com/OCA/mail", diff --git a/mail_activity_future_counter/static/description/index.html b/mail_activity_future_counter/static/description/index.html index c663266de..bbd15fe87 100644 --- a/mail_activity_future_counter/static/description/index.html +++ b/mail_activity_future_counter/static/description/index.html @@ -374,7 +374,7 @@

Mail Activity Future Counter

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:3439171d16e06d732781db4d66a9487620c758b952da207b79424c455faa40c0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module adds a badge counter on the bottom-right of the activity clock icon in the navigation bar, showing the count of future activities.

@@ -385,8 +385,8 @@

Mail Activity Future Counter

  • Blue badge on bottom-right of the activity icon
  • Shows count of all future activities
  • -
  • Does not interfere with the existing top-right badge for overdue/today -activities
  • +
  • Does not interfere with the existing top-right badge for +overdue/today activities

Table of contents

@@ -404,7 +404,7 @@

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.

+feedback.

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

@@ -424,7 +424,7 @@

Maintainers

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/mail project on GitHub.

+

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

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

diff --git a/mail_activity_future_counter/static/src/activity_menu_patch.esm.js b/mail_activity_future_counter/static/src/activity_menu_patch.esm.js index 565ccc23a..56bc90ada 100644 --- a/mail_activity_future_counter/static/src/activity_menu_patch.esm.js +++ b/mail_activity_future_counter/static/src/activity_menu_patch.esm.js @@ -1,15 +1,18 @@ -/** @odoo-module **/ - -import {ActivityMenu} from "@mail/core/web/activity_menu"; +import {Store} from "@mail/core/common/store_service"; +import {fields} from "@mail/core/common/record"; import {patch} from "@web/core/utils/patch"; -patch(ActivityMenu.prototype, { - async fetchSystrayActivities() { - await super.fetchSystrayActivities(); +patch(Store.prototype, { + setup() { + super.setup(...arguments); + this.activityFutureCounter = fields.Attr(0); + }, + onUpdateActivityGroups() { + super.onUpdateActivityGroups(...arguments); let futureTotal = 0; - for (const group of this.store.activityGroups) { + for (const group of this.activityGroups) { futureTotal += group.planned_count || 0; } - this.store.activityFutureCounter = futureTotal; + this.activityFutureCounter = futureTotal; }, });