From ffec4450a6c78d8b7ac0ae3273ed0aa5a6286c01 Mon Sep 17 00:00:00 2001 From: Pierre Verkest Date: Fri, 17 Jul 2026 11:55:09 +0200 Subject: [PATCH 1/3] [ADD] web_company_context_highlight: Highlight the current company context --- web_company_context_highlight/README.rst | 128 +++++ web_company_context_highlight/__init__.py | 3 + web_company_context_highlight/__manifest__.py | 26 + .../models/__init__.py | 4 + .../models/ir_http.py | 25 + .../models/res_config_settings.py | 24 + web_company_context_highlight/pyproject.toml | 3 + .../readme/CONFIGURE.md | 13 + .../readme/DESCRIPTION.md | 13 + .../static/description/index.html | 462 ++++++++++++++++++ ...company_context_highlight_config_color.png | Bin 0 -> 26454 bytes ..._highlight_multiple_companies_selected.png | Bin 0 -> 8006 bytes ...context_highlight_one_company_selected.png | Bin 0 -> 8825 bytes .../static/src/js/switch_company_menu.esm.js | 17 + .../static/src/scss/switch_company_menu.scss | 10 + .../static/src/xml/switch_company_menu.xml | 24 + .../web_company_context_highlight_tour.esm.js | 83 ++++ .../tests/__init__.py | 3 + .../tests/test_tour.py | 21 + .../views/res_config_settings_views.xml | 52 ++ 20 files changed, 911 insertions(+) create mode 100644 web_company_context_highlight/README.rst create mode 100644 web_company_context_highlight/__init__.py create mode 100644 web_company_context_highlight/__manifest__.py create mode 100644 web_company_context_highlight/models/__init__.py create mode 100644 web_company_context_highlight/models/ir_http.py create mode 100644 web_company_context_highlight/models/res_config_settings.py create mode 100644 web_company_context_highlight/pyproject.toml create mode 100644 web_company_context_highlight/readme/CONFIGURE.md create mode 100644 web_company_context_highlight/readme/DESCRIPTION.md create mode 100644 web_company_context_highlight/static/description/index.html create mode 100644 web_company_context_highlight/static/img/web_company_context_highlight_config_color.png create mode 100644 web_company_context_highlight/static/img/web_company_context_highlight_multiple_companies_selected.png create mode 100644 web_company_context_highlight/static/img/web_company_context_highlight_one_company_selected.png create mode 100644 web_company_context_highlight/static/src/js/switch_company_menu.esm.js create mode 100644 web_company_context_highlight/static/src/scss/switch_company_menu.scss create mode 100644 web_company_context_highlight/static/src/xml/switch_company_menu.xml create mode 100644 web_company_context_highlight/static/tests/tours/web_company_context_highlight_tour.esm.js create mode 100644 web_company_context_highlight/tests/__init__.py create mode 100644 web_company_context_highlight/tests/test_tour.py create mode 100644 web_company_context_highlight/views/res_config_settings_views.xml diff --git a/web_company_context_highlight/README.rst b/web_company_context_highlight/README.rst new file mode 100644 index 000000000000..77240fef677c --- /dev/null +++ b/web_company_context_highlight/README.rst @@ -0,0 +1,128 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +============================= +Web Company Context Highlight +============================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:38a53b982d2d8c282f7bee4b39e8df7f2324ab0ef62629ea37a4baa6d9ee457f + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github + :target: https://github.com/OCA/web/tree/19.0/web_company_context_highlight + :alt: OCA/web +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/web-19-0/web-19-0-web_company_context_highlight + :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=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module highlights the company switcher in the top bar of the web +client when multiple companies are selected. + +In a multi-company Odoo environment, users can easily lose track of +their active company context. When more than one company is selected, +they might unintentionally create or view records in the wrong context. + +By applying a visual highlight to the company switcher when multiple +companies are selected, this module provides an immediate visual cue, +helping users remain aware of their active companies and reducing the +risk of data entry errors. + +- with multiple companies selected + + |company switcher with multiple companies selected| + +- with one company selected + + |company switcher with one company selected| + +.. |company switcher with multiple companies selected| image:: https://raw.githubusercontent.com/OCA/web/19.0/web_company_context_highlight/static/img/web_company_context_highlight_multiple_companies_selected.png +.. |company switcher with one company selected| image:: https://raw.githubusercontent.com/OCA/web/19.0/web_company_context_highlight/static/img/web_company_context_highlight_one_company_selected.png + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure the highlight colors: + +1. Go to **Settings** > **General Settings**. +2. Scroll to the **Companies** section. +3. Under **Company Switcher Highlight**, set the desired **Background + Color** and **Text Color** using the color pickers. +4. Click **Save**. + +|color configuration| + +Alternatively, you can configure these values by modifying the following +System Parameters (in debug mode, under **Settings** > **Technical** > +**System Parameters**): + +- ``web_company_context_highlight.color``: The background color code + (default: ``#ffc107``). +- ``web_company_context_highlight.text_color``: The text color code + (default: ``#212529``). + +.. |color configuration| image:: https://raw.githubusercontent.com/OCA/web/19.0/web_company_context_highlight/static/img/web_company_context_highlight_config_color.png + +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 +------- + +* Acsone + +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. + +.. |maintainer-pverkest| image:: https://github.com/pverkest.png?size=40px + :target: https://github.com/pverkest + :alt: pverkest + +Current `maintainer `__: + +|maintainer-pverkest| + +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_company_context_highlight/__init__.py b/web_company_context_highlight/__init__.py new file mode 100644 index 000000000000..7d768b54b0a9 --- /dev/null +++ b/web_company_context_highlight/__init__.py @@ -0,0 +1,3 @@ +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from . import models diff --git a/web_company_context_highlight/__manifest__.py b/web_company_context_highlight/__manifest__.py new file mode 100644 index 000000000000..b807eac5a2bf --- /dev/null +++ b/web_company_context_highlight/__manifest__.py @@ -0,0 +1,26 @@ +# Copyright 2026 Acsone +# @author Pierre Verkest +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +{ + "name": "Web Company Context Highlight", + "summary": "Highlight the company switcher when multiple companies are selected", + "version": "19.0.1.0.0", + "author": "Acsone, Odoo Community Association (OCA)", + "maintainers": ["pverkest"], + "website": "https://github.com/OCA/web", + "license": "LGPL-3", + "category": "Web", + "depends": ["web", "base_setup"], + "data": ["views/res_config_settings_views.xml"], + "assets": { + "web.assets_backend": [ + "web_company_context_highlight/static/src/**/*.js", + "web_company_context_highlight/static/src/**/*.scss", + "web_company_context_highlight/static/src/**/*.xml", + ], + "web.assets_tests": [ + "web_company_context_highlight/static/tests/tours/**/*.js", + ], + }, +} diff --git a/web_company_context_highlight/models/__init__.py b/web_company_context_highlight/models/__init__.py new file mode 100644 index 000000000000..c8ef769857ef --- /dev/null +++ b/web_company_context_highlight/models/__init__.py @@ -0,0 +1,4 @@ +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from . import ir_http +from . import res_config_settings diff --git a/web_company_context_highlight/models/ir_http.py b/web_company_context_highlight/models/ir_http.py new file mode 100644 index 000000000000..6c48fba03762 --- /dev/null +++ b/web_company_context_highlight/models/ir_http.py @@ -0,0 +1,25 @@ +# Copyright 2026 Acsone +# @author Pierre Verkest +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import models + + +class IrHttp(models.AbstractModel): + _inherit = "ir.http" + + def session_info(self): + session = super().session_info() + highlight_color = ( + self.env["ir.config_parameter"] + .sudo() + .get_param("web_company_context_highlight.color", "#ffc107") + ) + text_color = ( + self.env["ir.config_parameter"] + .sudo() + .get_param("web_company_context_highlight.text_color", "#212529") + ) + session["web_company_context_highlight_color"] = highlight_color + session["web_company_context_highlight_text_color"] = text_color + return session diff --git a/web_company_context_highlight/models/res_config_settings.py b/web_company_context_highlight/models/res_config_settings.py new file mode 100644 index 000000000000..2cedb53f0244 --- /dev/null +++ b/web_company_context_highlight/models/res_config_settings.py @@ -0,0 +1,24 @@ +# Copyright 2026 Acsone +# @author Pierre Verkest +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + web_company_context_highlight_color = fields.Char( + string="Company Highlight Color", + default="#ffc107", + config_parameter="web_company_context_highlight.color", + help="Background color used to highlight the company switcher " + "when in multi-company context.", + ) + web_company_context_highlight_text_color = fields.Char( + string="Company Highlight Text Color", + default="#212529", + config_parameter="web_company_context_highlight.text_color", + help="Text color used to highlight the company switcher " + "when in multi-company context.", + ) diff --git a/web_company_context_highlight/pyproject.toml b/web_company_context_highlight/pyproject.toml new file mode 100644 index 000000000000..4231d0cccb3d --- /dev/null +++ b/web_company_context_highlight/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/web_company_context_highlight/readme/CONFIGURE.md b/web_company_context_highlight/readme/CONFIGURE.md new file mode 100644 index 000000000000..af3cb366e730 --- /dev/null +++ b/web_company_context_highlight/readme/CONFIGURE.md @@ -0,0 +1,13 @@ +To configure the highlight colors: + +1. Go to **Settings** > **General Settings**. +2. Scroll to the **Companies** section. +3. Under **Company Switcher Highlight**, set the desired **Background Color** and **Text Color** using the color pickers. +4. Click **Save**. + +![color configuration](../static/img/web_company_context_highlight_config_color.png) + +Alternatively, you can configure these values by modifying the following System Parameters (in debug mode, under **Settings** > **Technical** > **System Parameters**): + +* `web_company_context_highlight.color`: The background color code (default: `#ffc107`). +* `web_company_context_highlight.text_color`: The text color code (default: `#212529`). diff --git a/web_company_context_highlight/readme/DESCRIPTION.md b/web_company_context_highlight/readme/DESCRIPTION.md new file mode 100644 index 000000000000..3fd9c4e3b6c1 --- /dev/null +++ b/web_company_context_highlight/readme/DESCRIPTION.md @@ -0,0 +1,13 @@ +This module highlights the company switcher in the top bar of the web client when multiple companies are selected. + +In a multi-company Odoo environment, users can easily lose track of their active company context. When more than one company is selected, they might unintentionally create or view records in the wrong context. + +By applying a visual highlight to the company switcher when multiple companies are selected, this module provides an immediate visual cue, helping users remain aware of their active companies and reducing the risk of data entry errors. + +* with multiple companies selected + + ![company switcher with multiple companies selected](../static/img/web_company_context_highlight_multiple_companies_selected.png) + +* with one company selected + + ![company switcher with one company selected](../static/img/web_company_context_highlight_one_company_selected.png) diff --git a/web_company_context_highlight/static/description/index.html b/web_company_context_highlight/static/description/index.html new file mode 100644 index 000000000000..5a1b0b2e6b23 --- /dev/null +++ b/web_company_context_highlight/static/description/index.html @@ -0,0 +1,462 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Web Company Context Highlight

+ +

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

+

This module highlights the company switcher in the top bar of the web +client when multiple companies are selected.

+

In a multi-company Odoo environment, users can easily lose track of +their active company context. When more than one company is selected, +they might unintentionally create or view records in the wrong context.

+

By applying a visual highlight to the company switcher when multiple +companies are selected, this module provides an immediate visual cue, +helping users remain aware of their active companies and reducing the +risk of data entry errors.

+
    +
  • with multiple companies selected

    +

    company switcher with multiple companies selected

    +
  • +
  • with one company selected

    +

    company switcher with one company selected

    +
  • +
+

Table of contents

+ +
+

Configuration

+

To configure the highlight colors:

+
    +
  1. Go to Settings > General Settings.
  2. +
  3. Scroll to the Companies section.
  4. +
  5. Under Company Switcher Highlight, set the desired Background +Color and Text Color using the color pickers.
  6. +
  7. Click Save.
  8. +
+

color configuration

+

Alternatively, you can configure these values by modifying the following +System Parameters (in debug mode, under Settings > Technical > +System Parameters):

+
    +
  • web_company_context_highlight.color: The background color code +(default: #ffc107).
  • +
  • web_company_context_highlight.text_color: The text color code +(default: #212529).
  • +
+
+
+

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

+
    +
  • Acsone
  • +
+
+
+

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.

+

Current maintainer:

+

pverkest

+

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_company_context_highlight/static/img/web_company_context_highlight_config_color.png b/web_company_context_highlight/static/img/web_company_context_highlight_config_color.png new file mode 100644 index 0000000000000000000000000000000000000000..528c812538fb0f95525d9e15316cbd3fbe6ea5ef GIT binary patch literal 26454 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 F{WsDyQ>_31 literal 0 HcmV?d00001 diff --git a/web_company_context_highlight/static/img/web_company_context_highlight_multiple_companies_selected.png b/web_company_context_highlight/static/img/web_company_context_highlight_multiple_companies_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..fdd0214a0c4046eb6c6e887d48c3e745bb59752d GIT binary patch literal 8006 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 Vsqw2KfvLp;Fg2a~c$G)t{|jI7m8t*$ literal 0 HcmV?d00001 diff --git a/web_company_context_highlight/static/img/web_company_context_highlight_one_company_selected.png b/web_company_context_highlight/static/img/web_company_context_highlight_one_company_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..3c28466b35b74a58f74bc58cb835934c19a30c61 GIT binary patch literal 8825 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 TNC9{)1f;E@uU`Dn`rUs3V=jNa literal 0 HcmV?d00001 diff --git a/web_company_context_highlight/static/src/js/switch_company_menu.esm.js b/web_company_context_highlight/static/src/js/switch_company_menu.esm.js new file mode 100644 index 000000000000..a729f699e9d2 --- /dev/null +++ b/web_company_context_highlight/static/src/js/switch_company_menu.esm.js @@ -0,0 +1,17 @@ +/** + * Copyright 2026 Acsone + * @author Pierre Verkest + * License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */ + +import {SwitchCompanyMenu} from "@web/webclient/switch_company_menu/switch_company_menu"; +import {patch} from "@web/core/utils/patch"; +import {session} from "@web/session"; + +patch(SwitchCompanyMenu.prototype, { + setup() { + super.setup(); + this.highlightColor = session.web_company_context_highlight_color || "#ffc107"; + this.highlightTextColor = + session.web_company_context_highlight_text_color || "#212529"; + }, +}); diff --git a/web_company_context_highlight/static/src/scss/switch_company_menu.scss b/web_company_context_highlight/static/src/scss/switch_company_menu.scss new file mode 100644 index 000000000000..18a17b9e8239 --- /dev/null +++ b/web_company_context_highlight/static/src/scss/switch_company_menu.scss @@ -0,0 +1,10 @@ +.o_switch_company_menu.o_company_context_highlighted { + button { + background-color: var(--o-company-context-highlight-bg, #ffc107) !important; + color: var(--o-company-context-highlight-color, #212529) !important; + border-radius: 4px; + font-weight: bold; + padding-left: 6px; + padding-right: 6px; + } +} diff --git a/web_company_context_highlight/static/src/xml/switch_company_menu.xml b/web_company_context_highlight/static/src/xml/switch_company_menu.xml new file mode 100644 index 000000000000..771f2ad4a089 --- /dev/null +++ b/web_company_context_highlight/static/src/xml/switch_company_menu.xml @@ -0,0 +1,24 @@ + + + + + + o_switch_company_menu d-none d-md-block {{ user.activeCompanies.length > 1 ? 'o_company_context_highlighted' : '' }} + {{ user.activeCompanies.length > 1 ? '--o-company-context-highlight-bg: ' + highlightColor + '; --o-company-context-highlight-color: ' + highlightTextColor + ';' : '' }} + + + + + + + + diff --git a/web_company_context_highlight/static/tests/tours/web_company_context_highlight_tour.esm.js b/web_company_context_highlight/static/tests/tours/web_company_context_highlight_tour.esm.js new file mode 100644 index 000000000000..ff51140e6f38 --- /dev/null +++ b/web_company_context_highlight/static/tests/tours/web_company_context_highlight_tour.esm.js @@ -0,0 +1,83 @@ +/** + * Copyright 2026 Acsone + * @author Pierre Verkest + * License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */ + +import {registry} from "@web/core/registry"; + +registry.category("web_tour.tours").add("web_company_context_highlight_tour", { + steps: () => [ + // 1. Check absence of desktop building icon on the initial page load, and click switcher button + { + trigger: + ".o_switch_company_menu:not(.o_company_context_highlighted) button", + run: function (actions) { + const buildingIcon = document.querySelector( + ".o_switch_company_menu .fa-building-o.d-lg-inline-block" + ); + if (buildingIcon) { + throw new Error( + "fa-building desktop icon should not be present when only one company is active." + ); + } + actions.click(); + }, + }, + // 2. Select Company B checkbox to enable multi-company context + { + trigger: + ".o_switch_company_item:contains('Company B') div[role='menuitemcheckbox']", + run: "click", + }, + // 3. Click the confirm button to apply the change (causes reload) + { + trigger: + ".o_switch_company_menu_buttons button.btn-primary:contains('Confirm')", + run: "click", + expectUnloadPage: true, + }, + // 4. After reload, wait for the switcher to be highlighted, then check that the desktop building icon is present, and click to open the dropdown + { + trigger: ".o_switch_company_menu.o_company_context_highlighted button", + run: function (actions) { + const buildingIcon = document.querySelector( + ".o_switch_company_menu .fa-building-o.d-lg-inline-block" + ); + if (!buildingIcon) { + throw new Error( + "fa-building desktop icon should be present when multiple companies are active." + ); + } + actions.click(); + }, + }, + // 5. Deselect Company B + { + trigger: + ".o_switch_company_item:contains('Company B') div[role='menuitemcheckbox']", + run: "click", + }, + // 6. Click the confirm button again (causes reload) + { + trigger: + ".o_switch_company_menu_buttons button.btn-primary:contains('Confirm')", + run: "click", + expectUnloadPage: true, + }, + // 7. Verify we are back to single company, NOT highlighted, and desktop building icon is gone + { + trigger: + ".o_switch_company_menu:not(.o_company_context_highlighted) button", + run: function () { + const buildingIcon = document.querySelector( + ".o_switch_company_menu .fa-building-o.d-lg-inline-block" + ); + if (buildingIcon) { + throw new Error( + "fa-building desktop icon should not be present when returning to single company." + ); + } + }, + }, + ], +}); diff --git a/web_company_context_highlight/tests/__init__.py b/web_company_context_highlight/tests/__init__.py new file mode 100644 index 000000000000..ef8b112671be --- /dev/null +++ b/web_company_context_highlight/tests/__init__.py @@ -0,0 +1,3 @@ +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from . import test_tour diff --git a/web_company_context_highlight/tests/test_tour.py b/web_company_context_highlight/tests/test_tour.py new file mode 100644 index 000000000000..2af2e96c2d81 --- /dev/null +++ b/web_company_context_highlight/tests/test_tour.py @@ -0,0 +1,21 @@ +# Copyright 2026 Acsone +# @author Pierre Verkest +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo.tests.common import HttpCase, tagged + + +@tagged("post_install", "-at_install") +class TestWebCompanyContextHighlight(HttpCase): + def test_company_context_highlight_tour(self): + admin_user = self.env.ref("base.user_admin") + company_b = self.env["res.company"].create({"name": "Company B"}) + + admin_user.write( + { + "company_ids": [(4, company_b.id)], + } + ) + + # Launch the single interactive tour + self.start_tour("/odoo", "web_company_context_highlight_tour", login="admin") diff --git a/web_company_context_highlight/views/res_config_settings_views.xml b/web_company_context_highlight/views/res_config_settings_views.xml new file mode 100644 index 000000000000..6d74016677d4 --- /dev/null +++ b/web_company_context_highlight/views/res_config_settings_views.xml @@ -0,0 +1,52 @@ + + + + + res.config.settings.view.form.inherit.web_company_context_highlight + res.config.settings + + + + +
+
+
+
+
+
+
+
+
+
+
From a010c9690668f34ea40d7b38ce8cea54184c039b Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 3 Aug 2026 14:03:57 +0000 Subject: [PATCH 2/3] [UPD] Update web_company_context_highlight.pot --- .../i18n/web_company_context_highlight.pot | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 web_company_context_highlight/i18n/web_company_context_highlight.pot diff --git a/web_company_context_highlight/i18n/web_company_context_highlight.pot b/web_company_context_highlight/i18n/web_company_context_highlight.pot new file mode 100644 index 000000000000..772c3f44dbf2 --- /dev/null +++ b/web_company_context_highlight/i18n/web_company_context_highlight.pot @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_company_context_highlight +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 19.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_company_context_highlight +#: model_terms:ir.ui.view,arch_db:web_company_context_highlight.res_config_settings_view_form +msgid "Background Color" +msgstr "" + +#. module: web_company_context_highlight +#: model:ir.model.fields,help:web_company_context_highlight.field_res_config_settings__web_company_context_highlight_color +msgid "" +"Background color used to highlight the company switcher when in multi-" +"company context." +msgstr "" + +#. module: web_company_context_highlight +#: model:ir.model.fields,field_description:web_company_context_highlight.field_res_config_settings__web_company_context_highlight_color +msgid "Company Highlight Color" +msgstr "" + +#. module: web_company_context_highlight +#: model:ir.model.fields,field_description:web_company_context_highlight.field_res_config_settings__web_company_context_highlight_text_color +msgid "Company Highlight Text Color" +msgstr "" + +#. module: web_company_context_highlight +#: model_terms:ir.ui.view,arch_db:web_company_context_highlight.res_config_settings_view_form +msgid "Company Switcher Highlight" +msgstr "" + +#. module: web_company_context_highlight +#: model:ir.model,name:web_company_context_highlight.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: web_company_context_highlight +#: model_terms:ir.ui.view,arch_db:web_company_context_highlight.res_config_settings_view_form +msgid "" +"Configure background and text colors to highlight the company switcher when " +"multiple companies are selected." +msgstr "" + +#. module: web_company_context_highlight +#: model:ir.model.fields,field_description:web_company_context_highlight.field_ir_http__display_name +#: model:ir.model.fields,field_description:web_company_context_highlight.field_res_config_settings__display_name +msgid "Display Name" +msgstr "" + +#. module: web_company_context_highlight +#: model:ir.model,name:web_company_context_highlight.model_ir_http +msgid "HTTP Routing" +msgstr "" + +#. module: web_company_context_highlight +#: model:ir.model.fields,field_description:web_company_context_highlight.field_ir_http__id +#: model:ir.model.fields,field_description:web_company_context_highlight.field_res_config_settings__id +msgid "ID" +msgstr "" + +#. module: web_company_context_highlight +#. odoo-javascript +#: code:addons/web_company_context_highlight/static/src/xml/switch_company_menu.xml:0 +msgid "Multi-company context active" +msgstr "" + +#. module: web_company_context_highlight +#: model_terms:ir.ui.view,arch_db:web_company_context_highlight.res_config_settings_view_form +msgid "Text Color" +msgstr "" + +#. module: web_company_context_highlight +#: model:ir.model.fields,help:web_company_context_highlight.field_res_config_settings__web_company_context_highlight_text_color +msgid "" +"Text color used to highlight the company switcher when in multi-company " +"context." +msgstr "" From ea4933435c36c05b2cfdfe6ce6c12d7fbc2b94bb Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 3 Aug 2026 14:07:51 +0000 Subject: [PATCH 3/3] [BOT] post-merge updates --- README.md | 1 + setup/_metapackage/pyproject.toml | 3 ++- web_company_context_highlight/README.rst | 2 +- .../static/description/icon.png | Bin 0 -> 10254 bytes .../static/description/index.html | 2 +- 5 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 web_company_context_highlight/static/description/icon.png diff --git a/README.md b/README.md index 1b1448f54973..d2dc26a4494b 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ addon | version | maintainers | summary --- | --- | --- | --- [web_calendar_slot_duration](web_calendar_slot_duration/) | 19.0.1.0.0 |
Yajo | Customizable calendar slot durations [web_chatter_position](web_chatter_position/) | 19.0.1.0.0 | trisdoan | Add an option to change the chatter position +[web_company_context_highlight](web_company_context_highlight/) | 19.0.1.0.0 | pverkest | Highlight the company switcher when multiple companies are selected [web_dark_mode](web_dark_mode/) | 19.0.1.0.0 | | Enabled Dark Mode for the Odoo Backend [web_date_format_numeric](web_date_format_numeric/) | 19.0.1.0.0 | | Display all date/datetime fields in numeric format [web_dialog_size](web_dialog_size/) | 19.0.1.0.0 | | A module that lets the user expand a dialog box to the full screen width. diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index f38ff3ea8deb..cb7b2148ec09 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,9 +1,10 @@ [project] name = "odoo-addons-oca-web" -version = "19.0.20260728.0" +version = "19.0.20260803.0" dependencies = [ "odoo-addon-web_calendar_slot_duration==19.0.*", "odoo-addon-web_chatter_position==19.0.*", + "odoo-addon-web_company_context_highlight==19.0.*", "odoo-addon-web_dark_mode==19.0.*", "odoo-addon-web_date_format_numeric==19.0.*", "odoo-addon-web_dialog_size==19.0.*", diff --git a/web_company_context_highlight/README.rst b/web_company_context_highlight/README.rst index 77240fef677c..240522c02a09 100644 --- a/web_company_context_highlight/README.rst +++ b/web_company_context_highlight/README.rst @@ -11,7 +11,7 @@ Web Company Context Highlight !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:38a53b982d2d8c282f7bee4b39e8df7f2324ab0ef62629ea37a4baa6d9ee457f + !! source digest: sha256:e7d371068bb835bfcf14b5909de48dd0900be0bac8a939338d49e966b337af09 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/web_company_context_highlight/static/description/icon.png b/web_company_context_highlight/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1dcc49c24f364e9adf0afbc6fc0bac6dbecdeb11 GIT binary patch literal 10254 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 Company Context Highlight !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:38a53b982d2d8c282f7bee4b39e8df7f2324ab0ef62629ea37a4baa6d9ee457f +!! source digest: sha256:e7d371068bb835bfcf14b5909de48dd0900be0bac8a939338d49e966b337af09 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module highlights the company switcher in the top bar of the web