From 42f17de9a05d5113e2f75f5e493108433eb32059 Mon Sep 17 00:00:00 2001 From: JuMiSanAr Date: Tue, 26 Jul 2022 09:11:47 +0200 Subject: [PATCH 01/17] web_chatter_position: create module --- web_chatter_position/README.rst | 89 ++++ web_chatter_position/__init__.py | 1 + web_chatter_position/__manifest__.py | 27 ++ .../i18n/web_chatter_position.pot | 34 ++ web_chatter_position/models/__init__.py | 1 + web_chatter_position/models/res_users.py | 23 + web_chatter_position/readme/CONTRIBUTORS.rst | 2 + web_chatter_position/readme/DESCRIPTION.rst | 4 + web_chatter_position/readme/ROADMAP.rst | 1 + web_chatter_position/readme/USAGE.rst | 2 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 439 ++++++++++++++++++ .../static/src/js/form_chatter_position.js | 48 ++ .../static/src/scss/attachment_viewer.scss | 52 +++ .../static/src/scss/chatter_position.scss | 338 ++++++++++++++ .../static/src/xml/form_buttons.xml | 15 + web_chatter_position/views/res_users.xml | 13 + web_chatter_position/views/web.xml | 20 + 18 files changed, 1109 insertions(+) create mode 100644 web_chatter_position/README.rst create mode 100644 web_chatter_position/__init__.py create mode 100644 web_chatter_position/__manifest__.py create mode 100644 web_chatter_position/i18n/web_chatter_position.pot create mode 100644 web_chatter_position/models/__init__.py create mode 100644 web_chatter_position/models/res_users.py create mode 100644 web_chatter_position/readme/CONTRIBUTORS.rst create mode 100644 web_chatter_position/readme/DESCRIPTION.rst create mode 100644 web_chatter_position/readme/ROADMAP.rst create mode 100644 web_chatter_position/readme/USAGE.rst create mode 100644 web_chatter_position/static/description/icon.png create mode 100644 web_chatter_position/static/description/index.html create mode 100644 web_chatter_position/static/src/js/form_chatter_position.js create mode 100644 web_chatter_position/static/src/scss/attachment_viewer.scss create mode 100644 web_chatter_position/static/src/scss/chatter_position.scss create mode 100644 web_chatter_position/static/src/xml/form_buttons.xml create mode 100644 web_chatter_position/views/res_users.xml create mode 100644 web_chatter_position/views/web.xml diff --git a/web_chatter_position/README.rst b/web_chatter_position/README.rst new file mode 100644 index 000000000..6edab7831 --- /dev/null +++ b/web_chatter_position/README.rst @@ -0,0 +1,89 @@ +================ +Chatter Position +================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-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/15.0/web_chatter_position + :alt: OCA/web +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/web-15-0/web-15-0-web_chatter_position + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/162/15.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Configurable Chatter Position. +Change Chatter Position in User Preferences. +Change Chatter Position on the fly. +Supports Both Community & Enterprise Edition. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +#. There's a **Chatter Position** option in **User Preferences**, where you can choose between "bottom" and "sided". +#. The position can also be changed on the fly using a new button on the top left side of Form Views. + +Known issues / Roadmap +====================== + +* This module implements the same feature as **web_responsive**. Once the enterprise interface is moved to community in version 16, only this module will be needed. + +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 smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Hynsys Technologies +* Camptocamp + +Contributors +~~~~~~~~~~~~ + +* Hynsys Technologies +* Juan Miguel Sánchez Arce + +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_chatter_position/__init__.py b/web_chatter_position/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/web_chatter_position/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/web_chatter_position/__manifest__.py b/web_chatter_position/__manifest__.py new file mode 100644 index 000000000..685935692 --- /dev/null +++ b/web_chatter_position/__manifest__.py @@ -0,0 +1,27 @@ +# Copyright 2022 Hynsys Technologies +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +{ + "name": "Chatter Position", + "summary": "Add an option to change the chatter position", + "version": "15.0.1.0.0", + "author": "Hynsys Technologies, Camptocamp, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/web", + "license": "LGPL-3", + "category": "Extra Tools", + "images": ["static/description/images/web_chatter_position.png"], + "depends": ["web", "mail"], + "data": ["views/res_users.xml", "views/web.xml"], + "assets": { + "web.assets_backend": [ + "/web_chatter_position/static/src/scss/chatter_position.scss", + "/web_chatter_position/static/src/scss/attachment_viewer.scss", + "/web_chatter_position/static/src/js/form_chatter_position.js", + ], + "web.assets_qweb": [ + "/web_chatter_position/static/src/xml/form_buttons.xml", + ], + }, + "installable": True, + "auto_install": False, +} diff --git a/web_chatter_position/i18n/web_chatter_position.pot b/web_chatter_position/i18n/web_chatter_position.pot new file mode 100644 index 000000000..1645b038c --- /dev/null +++ b/web_chatter_position/i18n/web_chatter_position.pot @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_chatter_position +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.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_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__bottom +msgid "Bottom" +msgstr "" + +#. module: web_chatter_position +#: model:ir.model.fields,field_description:web_chatter_position.field_res_users__chatter_position +msgid "Chatter Position" +msgstr "" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__sided +msgid "Sided" +msgstr "" + +#. module: web_chatter_position +#: model:ir.model,name:web_chatter_position.model_res_users +msgid "Users" +msgstr "" diff --git a/web_chatter_position/models/__init__.py b/web_chatter_position/models/__init__.py new file mode 100644 index 000000000..883516533 --- /dev/null +++ b/web_chatter_position/models/__init__.py @@ -0,0 +1 @@ +from . import res_users diff --git a/web_chatter_position/models/res_users.py b/web_chatter_position/models/res_users.py new file mode 100644 index 000000000..20f5492e4 --- /dev/null +++ b/web_chatter_position/models/res_users.py @@ -0,0 +1,23 @@ +# Copyright 2022 Hynsys Technologies +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + chatter_position = fields.Selection( + [("bottom", "Bottom"), ("sided", "Sided")], + default="sided", + ) + + # Override so that the user can change the chatter_position field + + @property + def SELF_READABLE_FIELDS(self): + return super().SELF_READABLE_FIELDS + ["chatter_position"] + + @property + def SELF_WRITEABLE_FIELDS(self): + return super().SELF_WRITEABLE_FIELDS + ["chatter_position"] diff --git a/web_chatter_position/readme/CONTRIBUTORS.rst b/web_chatter_position/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..dbc15218d --- /dev/null +++ b/web_chatter_position/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Hynsys Technologies +* Juan Miguel Sánchez Arce diff --git a/web_chatter_position/readme/DESCRIPTION.rst b/web_chatter_position/readme/DESCRIPTION.rst new file mode 100644 index 000000000..5c803862a --- /dev/null +++ b/web_chatter_position/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +Configurable Chatter Position. +Change Chatter Position in User Preferences. +Change Chatter Position on the fly. +Supports Both Community & Enterprise Edition. diff --git a/web_chatter_position/readme/ROADMAP.rst b/web_chatter_position/readme/ROADMAP.rst new file mode 100644 index 000000000..c3d019c98 --- /dev/null +++ b/web_chatter_position/readme/ROADMAP.rst @@ -0,0 +1 @@ +* This module implements the same feature as **web_responsive**. Once the enterprise interface is moved to community in version 16, only this module will be needed. diff --git a/web_chatter_position/readme/USAGE.rst b/web_chatter_position/readme/USAGE.rst new file mode 100644 index 000000000..605b46026 --- /dev/null +++ b/web_chatter_position/readme/USAGE.rst @@ -0,0 +1,2 @@ +#. There's a **Chatter Position** option in **User Preferences**, where you can choose between "bottom" and "sided". +#. The position can also be changed on the fly using a new button on the top left side of Form Views. diff --git a/web_chatter_position/static/description/icon.png b/web_chatter_position/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/web_chatter_position/static/description/index.html b/web_chatter_position/static/description/index.html new file mode 100644 index 000000000..2aad9e350 --- /dev/null +++ b/web_chatter_position/static/description/index.html @@ -0,0 +1,439 @@ + + + + + + +Chatter Position + + + +
+

Chatter Position

+ + +

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

+

Configurable Chatter Position. +Change Chatter Position in User Preferences. +Change Chatter Position on the fly. +Supports Both Community & Enterprise Edition.

+

Table of contents

+ +
+

Usage

+
    +
  1. There’s a Chatter Position option in User Preferences, where you can choose between “bottom” and “sided”.
  2. +
  3. The position can also be changed on the fly using a new button on the top left side of Form Views.
  4. +
+
+
+

Known issues / Roadmap

+
    +
  • This module implements the same feature as web_responsive. Once the enterprise interface is moved to community in version 16, only this module will be needed.
  • +
+
+
+

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 smashing it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Hynsys Technologies
  • +
  • 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_chatter_position/static/src/js/form_chatter_position.js b/web_chatter_position/static/src/js/form_chatter_position.js new file mode 100644 index 000000000..dbcb119f8 --- /dev/null +++ b/web_chatter_position/static/src/js/form_chatter_position.js @@ -0,0 +1,48 @@ +// Copyright 2022 Hynsys Technologies +// License LGPL - 3.0 or later(http://www.gnu.org/licenses/lgpl). + +odoo.define("web_chatter_position.ChatterPositionFormController", function (require) { + "use strict"; + + var config = require("web.config"); + var FormController = require("web.FormController"); + var FormRenderer = require("web.FormRenderer"); + + var ChatterPositionFormController = FormController.include({ + renderButtons: function () { + this._super.apply(this, arguments); + if (this.$buttons) { + this.$buttons.on( + "click", + ".o_chatter_position_button", + this._onChatterPosition.bind(this) + ); + } + }, + + _onChatterPosition: function () { + if (this.$el.offsetParent().hasClass("o_chatter_position_bottom")) { + this.$el + .offsetParent() + .attr("class", "o_web_client o_chatter_position_sided"); + } else if (this.$el.offsetParent().hasClass("o_chatter_position_sided")) { + this.$el + .offsetParent() + .attr("class", "o_web_client o_chatter_position_bottom"); + } + }, + }); + + FormRenderer.include({ + _applyFormSizeClass: function () { + const formEl = this.$el[0]; + if (config.device.size_class <= config.device.SIZES.XS) { + formEl.classList.add("o_xxs_form_view"); + } else { + formEl.classList.remove("o_xxs_form_view"); + } + }, + }); + + return ChatterPositionFormController; +}); diff --git a/web_chatter_position/static/src/scss/attachment_viewer.scss b/web_chatter_position/static/src/scss/attachment_viewer.scss new file mode 100644 index 000000000..874191c66 --- /dev/null +++ b/web_chatter_position/static/src/scss/attachment_viewer.scss @@ -0,0 +1,52 @@ +// Attachment Viewer +.o_web_client.o_chatter_position_sided .o_DialogManager_dialog { + /* Show sided viewer on large screens */ + @include media-breakpoint-up(lg) { + position: static; + .o_AttachmentViewer_main { + padding-bottom: 20px; + } + .o_AttachmentViewer { + // On-top of navbar + z-index: 10; + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin-left: auto; + background-color: rgba(0, 0, 0, 0.7); + + width: $chatter_zone_width; + &.o_AttachmentViewer_maximized { + width: 100%; + } + + /* Show/Hide control buttons (next, prev, etc..) */ + &:hover .o_AttachmentViewer_buttonNavigation, + &:hover .o_AttachmentViewer_toolbar { + display: flex; + } + .o_AttachmentViewer_buttonNavigation, + .o_AttachmentViewer_toolbar { + display: none; + } + .o_AttachmentViewer_viewIframe { + width: 95%; + } + } + } + @include media-breakpoint-down(md) { + .o_AttachmentViewer_headerItemButtonMinimize, + .o_AttachmentViewer_headerItemButtonMaximize { + display: none; + } + } +} + +/* Attachment Viewer Max/Min buttons only are useful in sided mode */ +.o_web_client:not(.o_chatter_position_sided) { + .o_AttachmentViewer_headerItemButtonMinimize, + .o_AttachmentViewer_headerItemButtonMaximize { + display: none; + } +} diff --git a/web_chatter_position/static/src/scss/chatter_position.scss b/web_chatter_position/static/src/scss/chatter_position.scss new file mode 100644 index 000000000..dd64c0cb4 --- /dev/null +++ b/web_chatter_position/static/src/scss/chatter_position.scss @@ -0,0 +1,338 @@ +$chatter_zone_width: 35%; + +// Size of labels +.o_web_client { + &.o_chatter_position_sided { + .o_action_manager { + .o_content, + .modal-content { + @include media-breakpoint-up(xl, $o-extra-grid-breakpoints) { + .o_inner_group { + .o_td_label { + min-width: 260px !important; + } + } + } + @include media-breakpoint-between(lg, xl, $o-extra-grid-breakpoints) { + .o_group_col_6 { + width: 100% !important; + } + } + } + } + } + &:not(.o_chatter_position_sided) { + @include media-breakpoint-up(lg, $o-extra-grid-breakpoints) { + .o_action_manager { + .o_content, + .modal-content { + .o_inner_group { + .o_td_label { + min-width: 260px !important; + } + } + } + } + } + } +} + +// Normal views +.o_content, +.modal-content { + max-width: 100%; + + // Form views + .o_form_view { + .o_form_sheet { + max-width: calc(100% - 32px); + overflow-x: auto; + } + + .o_td_label .o_form_label:not(.o_status):not(.o_calendar_invitation) { + min-height: 23px; + @include media-breakpoint-up(md) { + margin-bottom: 10px; + } + } + .o_horizontal_separator { + font-size: 14px; + } + // Some UX improvements for form in edit mode + @include media-breakpoint-down(sm) { + .o_field_widget { + vertical-align: middle; + } + &.o_form_editable .o_field_widget { + &:not(.o_stat_info):not(.o_readonly_modifier):not(.oe_form_field_html):not(.o_field_image) { + min-height: 35px; + } + .o_x2m_control_panel { + margin-bottom: 10px; + } + &.o_field_float_percentage, + &.o_field_monetary, + &.o_field_many2manytags, + .o_field_many2one_selection { + align-items: center; + } + .o_field_many2one_selection .o_input_dropdown, + &.o_datepicker, + &.o_field_partner_autocomplete { + input { + min-height: 35px; + } + } + .o_external_button { + margin-left: 10px; + } + .o_dropdown_button, + .o_datepicker_button { + top: 8px; + right: 6px; + bottom: auto; + } + } + } + + .o_FormRenderer_chatterContainer { + padding-top: 0; + .o_Activity_info { + flex-wrap: wrap; + } + .o_ActivityBox_title { + margin-bottom: 0; + } + .o_MessageList_separatorDate { + padding-bottom: 0; + } + } + // Sided chatter scrolling behavior + .o_Chatter { + height: fit-content; + .o_Chatter_fixedPanel { + position: sticky; + top: 0; + z-index: 1; + background-color: white; + padding-bottom: 10px; + } + .o_Chatter_scrollPanel { + overflow: initial; + } + } + + // Sticky statusbar + .o_form_statusbar { + position: sticky; + top: 0; + z-index: 2; + } + + // Support for long title (with ellipsis) + .oe_title { + span.o_field_widget:not(.oe_inline) { + max-width: 100%; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: initial; + &:active { + white-space: normal; + } + } + } + + @include media-breakpoint-down(sm) { + min-width: auto; + + // More buttons border + .oe_button_box { + .o_dropdown_more { + button:last-child { + border-right: 1px solid gray("400"); + } + } + } + + // Avoid overflow on forms with title and/or button box + .oe_title { + max-width: 100%; + } + + .oe_button_box + .oe_title, + .oe_button_box + .oe_avatar + .oe_title { + width: 100%; + } + + // Avoid overflow on modals + .o_form_sheet { + min-width: auto; + } + + // Render website inputs properly in phones + .o_group .o_field_widget.o_text_overflow { + // Overrides another !important + width: auto !important; + } + + // Make all input groups vertical + .o_group_col_6, + .o_group_col_8 { + width: 100%; + } + + // Statusbar buttons dropdown for mobiles + .o_statusbar_buttons_dropdown { + border: { + bottom: 0; + radius: 0; + top: 0; + } + height: 100%; + } + .o_statusbar_buttons.dropdown-menu { + .btn { + border-radius: 0; + border: 0; + width: 100%; + margin-bottom: 0.2rem; + white-space: nowrap; + @include media-breakpoint-down(xs) { + max-width: 80vw; + overflow: hidden; + text-overflow: ellipsis; + } + + &:last-child { + margin-bottom: 0; + } + } + } + + .o_statusbar_status { + // Arrow from rightmost button exceeds allowed width + .o_arrow_button:first-child::before { + content: none; + display: none; + } + } + + // Full width in form sheets + .o_form_sheet, + .o_FormRenderer_chatterContainer { + min-width: auto; + max-width: 98%; + } + + // Settings pages + .app_settings_block { + .row { + margin: 0; + } + } + + .o_FormRenderer_chatterContainer { + padding-top: initial; + + // Display send button on small screens + .o_Chatter_composer { + &.o-has-current-partner-avatar { + grid-template-columns: 0px 1fr; + padding: 1rem 1rem 1.5rem 1rem; + } + + .o_Composer_sidebarMain { + display: none; + } + } + } + } + } + + //No content message improvements on mobile + @include media-breakpoint-down(md) { + .o_view_nocontent { + top: 80px; + } + .o_nocontent_help { + box-shadow: none; + } + .o_sample_data_disabled { + display: none; + } + } + + // Sided chatter, if user wants + .o_chatter_position_sided & { + @include media-breakpoint-up(lg) { + .o_form_view:not(.o_form_nosheet) { + display: flex; + flex-flow: row nowrap; + height: 100%; + + .o_form_sheet_bg { + flex: 1 1 auto; + overflow: auto; + + > .o_form_sheet { + min-width: unset; + } + } + + .o_FormRenderer_chatterContainer { + border-left: 1px solid gray("400"); + flex: 0 0 $chatter_zone_width; + max-width: initial; + min-width: initial; + overflow: auto; + + .o_chatter_header_container { + padding-top: $grid-gutter-width * 0.5; + top: 0; + position: sticky; + background-color: $o-view-background-color; + z-index: 1; + + // Scrollable input text to avoid hide conversation & buttons + .o_composer_text_field { + max-height: 120px; + overflow-y: auto !important; /* Forced because Odoo uses inline style */ + } + .o_attachments_list { + overflow: auto; + max-height: $o-mail-attachment-image-size * 3; + margin-top: 0.4em; + } + .o_attachments_previews { + overflow: auto; + max-height: $o-mail-attachment-image-size * 6; + } + } + } + } + } + } +} +.o_FormRenderer_chatterContainer { + &.o-aside { + border-left: $border-width 0; + padding: map-get($spacers, 0); + width: $o-form-view-sheet-max-width !important; + + .o_Message.o-not-discussion { + border-width: $border-width 0; + } + } + + &.o-isInFormSheetBg:not(.o-aside) { + max-width: $o-form-view-sheet-max-width; + background-color: $white; + @include o-form-sheet-negative-margin; + + &:not(.o-aside) { + width: auto; + border-top: 1px solid $border-color; + } + } +} diff --git a/web_chatter_position/static/src/xml/form_buttons.xml b/web_chatter_position/static/src/xml/form_buttons.xml new file mode 100644 index 000000000..07c534f52 --- /dev/null +++ b/web_chatter_position/static/src/xml/form_buttons.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/web_chatter_position/views/res_users.xml b/web_chatter_position/views/res_users.xml new file mode 100644 index 000000000..5bc49e1a9 --- /dev/null +++ b/web_chatter_position/views/res_users.xml @@ -0,0 +1,13 @@ + + + + view.users.form.simple.modif.chatter.position + res.users + + + + + + + + diff --git a/web_chatter_position/views/web.xml b/web_chatter_position/views/web.xml new file mode 100644 index 000000000..73f9ba71a --- /dev/null +++ b/web_chatter_position/views/web.xml @@ -0,0 +1,20 @@ + + + + + From f301c284c372aa8de01d58fc9107c33046c33656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A0n=20Todorovich?= Date: Mon, 27 Feb 2023 12:27:37 -0300 Subject: [PATCH 02/17] [MIG] web_chatter_position: Migration to 16.0 --- web_chatter_position/README.rst | 27 +- web_chatter_position/__manifest__.py | 12 +- .../i18n/web_chatter_position.pot | 9 +- web_chatter_position/models/res_users.py | 10 +- web_chatter_position/readme/CONTRIBUTORS.rst | 3 + web_chatter_position/readme/DESCRIPTION.rst | 5 +- web_chatter_position/readme/ROADMAP.rst | 1 - web_chatter_position/readme/USAGE.rst | 4 +- .../static/description/index.html | 49 ++- .../static/src/js/form_chatter_position.js | 48 --- .../static/src/js/web_chatter_position.esm.js | 158 ++++++++ .../static/src/scss/attachment_viewer.scss | 52 --- .../static/src/scss/chatter_position.scss | 338 ------------------ .../static/src/xml/form_buttons.xml | 15 - web_chatter_position/views/res_users.xml | 9 +- web_chatter_position/views/web.xml | 22 +- 16 files changed, 224 insertions(+), 538 deletions(-) delete mode 100644 web_chatter_position/readme/ROADMAP.rst delete mode 100644 web_chatter_position/static/src/js/form_chatter_position.js create mode 100644 web_chatter_position/static/src/js/web_chatter_position.esm.js delete mode 100644 web_chatter_position/static/src/scss/attachment_viewer.scss delete mode 100644 web_chatter_position/static/src/scss/chatter_position.scss delete mode 100644 web_chatter_position/static/src/xml/form_buttons.xml diff --git a/web_chatter_position/README.rst b/web_chatter_position/README.rst index 6edab7831..498ffa83b 100644 --- a/web_chatter_position/README.rst +++ b/web_chatter_position/README.rst @@ -14,20 +14,19 @@ Chatter Position :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/15.0/web_chatter_position + :target: https://github.com/OCA/web/tree/16.0/web_chatter_position :alt: OCA/web .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/web-15-0/web-15-0-web_chatter_position + :target: https://translation.odoo-community.org/projects/web-16-0/web-16-0-web_chatter_position :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/162/15.0 + :target: https://runbot.odoo-community.org/runbot/162/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| -Configurable Chatter Position. -Change Chatter Position in User Preferences. -Change Chatter Position on the fly. +Configurable chatter position from the user preferences. + Supports Both Community & Enterprise Edition. **Table of contents** @@ -38,13 +37,8 @@ Supports Both Community & Enterprise Edition. Usage ===== -#. There's a **Chatter Position** option in **User Preferences**, where you can choose between "bottom" and "sided". -#. The position can also be changed on the fly using a new button on the top left side of Form Views. - -Known issues / Roadmap -====================== - -* This module implements the same feature as **web_responsive**. Once the enterprise interface is moved to community in version 16, only this module will be needed. +#. There's a **Chatter Position** option in **User Preferences**, where you can +choose between ``auto``, ``bottom`` and ``sided``. Bug Tracker =========== @@ -52,7 +46,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -70,6 +64,9 @@ Contributors * Hynsys Technologies * Juan Miguel Sánchez Arce +* `Camptocamp `_ + + * Iván Todorovich Maintainers ~~~~~~~~~~~ @@ -84,6 +81,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/web `_ project on GitHub. +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_chatter_position/__manifest__.py b/web_chatter_position/__manifest__.py index 685935692..2fbc833b0 100644 --- a/web_chatter_position/__manifest__.py +++ b/web_chatter_position/__manifest__.py @@ -4,24 +4,16 @@ { "name": "Chatter Position", "summary": "Add an option to change the chatter position", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "author": "Hynsys Technologies, Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/web", "license": "LGPL-3", "category": "Extra Tools", - "images": ["static/description/images/web_chatter_position.png"], "depends": ["web", "mail"], "data": ["views/res_users.xml", "views/web.xml"], "assets": { "web.assets_backend": [ - "/web_chatter_position/static/src/scss/chatter_position.scss", - "/web_chatter_position/static/src/scss/attachment_viewer.scss", - "/web_chatter_position/static/src/js/form_chatter_position.js", - ], - "web.assets_qweb": [ - "/web_chatter_position/static/src/xml/form_buttons.xml", + "/web_chatter_position/static/src/**/*.js", ], }, - "installable": True, - "auto_install": False, } diff --git a/web_chatter_position/i18n/web_chatter_position.pot b/web_chatter_position/i18n/web_chatter_position.pot index 1645b038c..4937f1d73 100644 --- a/web_chatter_position/i18n/web_chatter_position.pot +++ b/web_chatter_position/i18n/web_chatter_position.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -23,6 +23,11 @@ msgstr "" msgid "Chatter Position" msgstr "" +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__auto +msgid "Responsive" +msgstr "" + #. module: web_chatter_position #: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__sided msgid "Sided" @@ -30,5 +35,5 @@ msgstr "" #. module: web_chatter_position #: model:ir.model,name:web_chatter_position.model_res_users -msgid "Users" +msgid "User" msgstr "" diff --git a/web_chatter_position/models/res_users.py b/web_chatter_position/models/res_users.py index 20f5492e4..3cfb7b7ac 100644 --- a/web_chatter_position/models/res_users.py +++ b/web_chatter_position/models/res_users.py @@ -8,12 +8,14 @@ class ResUsers(models.Model): _inherit = "res.users" chatter_position = fields.Selection( - [("bottom", "Bottom"), ("sided", "Sided")], - default="sided", + [ + ("auto", "Responsive"), + ("bottom", "Bottom"), + ("sided", "Sided"), + ], + default="auto", ) - # Override so that the user can change the chatter_position field - @property def SELF_READABLE_FIELDS(self): return super().SELF_READABLE_FIELDS + ["chatter_position"] diff --git a/web_chatter_position/readme/CONTRIBUTORS.rst b/web_chatter_position/readme/CONTRIBUTORS.rst index dbc15218d..e0a264ebb 100644 --- a/web_chatter_position/readme/CONTRIBUTORS.rst +++ b/web_chatter_position/readme/CONTRIBUTORS.rst @@ -1,2 +1,5 @@ * Hynsys Technologies * Juan Miguel Sánchez Arce +* `Camptocamp `_ + + * Iván Todorovich diff --git a/web_chatter_position/readme/DESCRIPTION.rst b/web_chatter_position/readme/DESCRIPTION.rst index 5c803862a..9c874e16e 100644 --- a/web_chatter_position/readme/DESCRIPTION.rst +++ b/web_chatter_position/readme/DESCRIPTION.rst @@ -1,4 +1,3 @@ -Configurable Chatter Position. -Change Chatter Position in User Preferences. -Change Chatter Position on the fly. +Configurable chatter position from the user preferences. + Supports Both Community & Enterprise Edition. diff --git a/web_chatter_position/readme/ROADMAP.rst b/web_chatter_position/readme/ROADMAP.rst deleted file mode 100644 index c3d019c98..000000000 --- a/web_chatter_position/readme/ROADMAP.rst +++ /dev/null @@ -1 +0,0 @@ -* This module implements the same feature as **web_responsive**. Once the enterprise interface is moved to community in version 16, only this module will be needed. diff --git a/web_chatter_position/readme/USAGE.rst b/web_chatter_position/readme/USAGE.rst index 605b46026..dd8265496 100644 --- a/web_chatter_position/readme/USAGE.rst +++ b/web_chatter_position/readme/USAGE.rst @@ -1,2 +1,2 @@ -#. There's a **Chatter Position** option in **User Preferences**, where you can choose between "bottom" and "sided". -#. The position can also be changed on the fly using a new button on the top left side of Form Views. +#. There's a **Chatter Position** option in **User Preferences**, where you can +choose between ``auto``, ``bottom`` and ``sided``. diff --git a/web_chatter_position/static/description/index.html b/web_chatter_position/static/description/index.html index 2aad9e350..2605c74c2 100644 --- a/web_chatter_position/static/description/index.html +++ b/web_chatter_position/static/description/index.html @@ -367,70 +367,63 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

-

Configurable Chatter Position. -Change Chatter Position in User Preferences. -Change Chatter Position on the fly. -Supports Both Community & Enterprise Edition.

+

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

+

Configurable chatter position from the user preferences.

+

Supports Both Community & Enterprise Edition.

Table of contents

Usage

-
    -
  1. There’s a Chatter Position option in User Preferences, where you can choose between “bottom” and “sided”.
  2. -
  3. The position can also be changed on the fly using a new button on the top left side of Form Views.
  4. -
-
-
-

Known issues / Roadmap

-
    -
  • This module implements the same feature as web_responsive. Once the enterprise interface is moved to community in version 16, only this module will be needed.
  • -
+

#. There’s a Chatter Position option in User Preferences, where you can +choose between auto, bottom and sided.

-

Bug Tracker

+

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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Hynsys Technologies
  • Camptocamp
-

Contributors

+

Contributors

-

Maintainers

+

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.

+

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_chatter_position/static/src/js/form_chatter_position.js b/web_chatter_position/static/src/js/form_chatter_position.js deleted file mode 100644 index dbcb119f8..000000000 --- a/web_chatter_position/static/src/js/form_chatter_position.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2022 Hynsys Technologies -// License LGPL - 3.0 or later(http://www.gnu.org/licenses/lgpl). - -odoo.define("web_chatter_position.ChatterPositionFormController", function (require) { - "use strict"; - - var config = require("web.config"); - var FormController = require("web.FormController"); - var FormRenderer = require("web.FormRenderer"); - - var ChatterPositionFormController = FormController.include({ - renderButtons: function () { - this._super.apply(this, arguments); - if (this.$buttons) { - this.$buttons.on( - "click", - ".o_chatter_position_button", - this._onChatterPosition.bind(this) - ); - } - }, - - _onChatterPosition: function () { - if (this.$el.offsetParent().hasClass("o_chatter_position_bottom")) { - this.$el - .offsetParent() - .attr("class", "o_web_client o_chatter_position_sided"); - } else if (this.$el.offsetParent().hasClass("o_chatter_position_sided")) { - this.$el - .offsetParent() - .attr("class", "o_web_client o_chatter_position_bottom"); - } - }, - }); - - FormRenderer.include({ - _applyFormSizeClass: function () { - const formEl = this.$el[0]; - if (config.device.size_class <= config.device.SIZES.XS) { - formEl.classList.add("o_xxs_form_view"); - } else { - formEl.classList.remove("o_xxs_form_view"); - } - }, - }); - - return ChatterPositionFormController; -}); diff --git a/web_chatter_position/static/src/js/web_chatter_position.esm.js b/web_chatter_position/static/src/js/web_chatter_position.esm.js new file mode 100644 index 000000000..3c648ce0f --- /dev/null +++ b/web_chatter_position/static/src/js/web_chatter_position.esm.js @@ -0,0 +1,158 @@ +/** @odoo-module **/ +/* + Copyright 2023 Camptocamp SA (https://www.camptocamp.com). + License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). +*/ + +import {FormCompiler} from "@web/views/form/form_compiler"; +import {FormController} from "@web/views/form/form_controller"; +import {MailFormCompiler} from "@mail/views/form/form_compiler"; +import {append} from "@web/core/utils/xml"; +import {patch} from "@web/core/utils/patch"; + +/** + * So, you've landed here and you have no idea what this is about. Don't worry, you're + * not the only one. Here's a quick summary of what's going on: + * + * In core, the chatter position depends on the size of the screen and wether there is + * an attachment viewer or not. There are 3 possible positions, and for each position a + * different chatter instance is displayed. + * + * So, in fact, we have 3 chatter instances running, and we switch their visibility + * depending on the desired position. + * + * A) Bottom position + * https://github.com/odoo/odoo/blob/2ef010907/addons/mail/static/src/views/form/form_compiler.js#L160 + * Condition: `!this.props.hasAttachmentViewer and uiService.size < ${SIZES.XXL}` + * + * This is the bottom position you would except. However it can only be there until + * XXL screen sizes, because the container is a flexbox and changes from row to + * column display. It's hidden in the presence of an attachment viewer. + * + * B) Bottom In-sheet position + * https://github.com/odoo/odoo/blob/2ef010907/addons/mail/static/src/views/form/form_compiler.js#L181 + * Condition: `this.props.hasAttachmentViewer` + * + * This is the bottom position that's used when there's an attachment viewer in place. + * It's rendered within the form sheet, possibly to by-pass the flexbox issue + * beforementioned. It's only instanciated when there's an attachment viewer. + * + * C) Sided position + * https://github.com/odoo/odoo/blob/2ef010907/addons/mail/static/src/views/form/form_compiler.js#L83 + * Condition: `!hasAttachmentViewer() and uiService.size >= ${SIZES.XXL}` + * + * This is the sided position, hidden in the presence of an attachment viewer. + * It's the better half of `A`. + * + * The patches and overrides you see below are here to alter these conditions to force + * a specific position regardless of the screen size, depending on an user setting. + */ + +patch(MailFormCompiler.prototype, "web_chatter_position", { + /** + * Patch the visibility of the Sided chatter (`C` above). + * + * @override + */ + compile() { + const res = this._super.apply(this, arguments); + const chatterContainerHookXml = res.querySelector( + ".o_FormRenderer_chatterContainer" + ); + if (!chatterContainerHookXml) { + return res; + } + // Don't patch anything if the setting is "auto": this is the core behaviour + if (odoo.web_chatter_position === "auto") { + return res; + } else if (odoo.web_chatter_position === "sided") { + chatterContainerHookXml.setAttribute("t-if", "!hasAttachmentViewer()"); + } else if (odoo.web_chatter_position === "bottom") { + chatterContainerHookXml.setAttribute("t-if", false); + } + return res; + }, +}); + +patch(FormCompiler.prototype, "web_chatter_position", { + /** + * Patch the css classes of the `Form`, to include an extra `h-100` class. + * Without it, the form sheet will not be full height in some situations, + * looking a bit weird. + * + * @override + */ + compileForm() { + const res = this._super.apply(this, arguments); + if (odoo.web_chatter_position === "sided") { + const classes = res.getAttribute("t-attf-class"); + res.setAttribute("t-attf-class", `${classes} h-100`); + } + return res; + }, + /** + * Patch the visibility of bottom chatters (`A` and `B` above). + * `B` may not exist in some situations, so we ensure it does by creating it. + * + * @override + */ + compile(node, params) { + const res = this._super.apply(this, arguments); + const chatterContainerHookXml = res.querySelector( + ".o_FormRenderer_chatterContainer:not(.o-isInFormSheetBg)" + ); + if (!chatterContainerHookXml) { + return res; + } + if (chatterContainerHookXml.parentNode.classList.contains("o_form_sheet")) { + return res; + } + // Don't patch anything if the setting is "auto": this is the core behaviour + if (odoo.web_chatter_position === "auto") { + return res; + // For "sided", we have to remote the bottom chatter + // (except if there is an attachment viewer, as we have to force bottom) + } else if (odoo.web_chatter_position === "sided") { + chatterContainerHookXml.setAttribute("t-if", false); + // For "bottom", we keep the chatter in the form sheet + // (the one used for the attachment viewer case) + // If it's not there, we create it. + } else if (odoo.web_chatter_position === "bottom") { + if (params.hasAttachmentViewerInArch) { + const sheetBgChatterContainerHookXml = res.querySelector( + ".o_FormRenderer_chatterContainer.o-isInFormSheetBg" + ); + sheetBgChatterContainerHookXml.setAttribute("t-if", true); + chatterContainerHookXml.setAttribute("t-if", false); + } else { + const formSheetBgXml = res.querySelector(".o_form_sheet_bg"); + const sheetBgChatterContainerHookXml = + chatterContainerHookXml.cloneNode(true); + sheetBgChatterContainerHookXml.classList.add("o-isInFormSheetBg"); + sheetBgChatterContainerHookXml.setAttribute("t-if", true); + append(formSheetBgXml, sheetBgChatterContainerHookXml); + const sheetBgChatterContainerXml = + sheetBgChatterContainerHookXml.querySelector("ChatterContainer"); + sheetBgChatterContainerXml.setAttribute("isInFormSheetBg", "true"); + chatterContainerHookXml.setAttribute("t-if", false); + } + } + return res; + }, +}); + +patch(FormController.prototype, "web_chatter_position", { + /** + * Patch the css classes of the form container, to include an extra `flex-row` class. + * Without it, it'd go for flex columns direction and it won't look good. + * + * @override + */ + get className() { + const result = this._super(); + if (odoo.web_chatter_position === "sided") { + result["flex-row"] = true; + } + return result; + }, +}); diff --git a/web_chatter_position/static/src/scss/attachment_viewer.scss b/web_chatter_position/static/src/scss/attachment_viewer.scss deleted file mode 100644 index 874191c66..000000000 --- a/web_chatter_position/static/src/scss/attachment_viewer.scss +++ /dev/null @@ -1,52 +0,0 @@ -// Attachment Viewer -.o_web_client.o_chatter_position_sided .o_DialogManager_dialog { - /* Show sided viewer on large screens */ - @include media-breakpoint-up(lg) { - position: static; - .o_AttachmentViewer_main { - padding-bottom: 20px; - } - .o_AttachmentViewer { - // On-top of navbar - z-index: 10; - position: absolute; - right: 0; - top: 0; - bottom: 0; - margin-left: auto; - background-color: rgba(0, 0, 0, 0.7); - - width: $chatter_zone_width; - &.o_AttachmentViewer_maximized { - width: 100%; - } - - /* Show/Hide control buttons (next, prev, etc..) */ - &:hover .o_AttachmentViewer_buttonNavigation, - &:hover .o_AttachmentViewer_toolbar { - display: flex; - } - .o_AttachmentViewer_buttonNavigation, - .o_AttachmentViewer_toolbar { - display: none; - } - .o_AttachmentViewer_viewIframe { - width: 95%; - } - } - } - @include media-breakpoint-down(md) { - .o_AttachmentViewer_headerItemButtonMinimize, - .o_AttachmentViewer_headerItemButtonMaximize { - display: none; - } - } -} - -/* Attachment Viewer Max/Min buttons only are useful in sided mode */ -.o_web_client:not(.o_chatter_position_sided) { - .o_AttachmentViewer_headerItemButtonMinimize, - .o_AttachmentViewer_headerItemButtonMaximize { - display: none; - } -} diff --git a/web_chatter_position/static/src/scss/chatter_position.scss b/web_chatter_position/static/src/scss/chatter_position.scss deleted file mode 100644 index dd64c0cb4..000000000 --- a/web_chatter_position/static/src/scss/chatter_position.scss +++ /dev/null @@ -1,338 +0,0 @@ -$chatter_zone_width: 35%; - -// Size of labels -.o_web_client { - &.o_chatter_position_sided { - .o_action_manager { - .o_content, - .modal-content { - @include media-breakpoint-up(xl, $o-extra-grid-breakpoints) { - .o_inner_group { - .o_td_label { - min-width: 260px !important; - } - } - } - @include media-breakpoint-between(lg, xl, $o-extra-grid-breakpoints) { - .o_group_col_6 { - width: 100% !important; - } - } - } - } - } - &:not(.o_chatter_position_sided) { - @include media-breakpoint-up(lg, $o-extra-grid-breakpoints) { - .o_action_manager { - .o_content, - .modal-content { - .o_inner_group { - .o_td_label { - min-width: 260px !important; - } - } - } - } - } - } -} - -// Normal views -.o_content, -.modal-content { - max-width: 100%; - - // Form views - .o_form_view { - .o_form_sheet { - max-width: calc(100% - 32px); - overflow-x: auto; - } - - .o_td_label .o_form_label:not(.o_status):not(.o_calendar_invitation) { - min-height: 23px; - @include media-breakpoint-up(md) { - margin-bottom: 10px; - } - } - .o_horizontal_separator { - font-size: 14px; - } - // Some UX improvements for form in edit mode - @include media-breakpoint-down(sm) { - .o_field_widget { - vertical-align: middle; - } - &.o_form_editable .o_field_widget { - &:not(.o_stat_info):not(.o_readonly_modifier):not(.oe_form_field_html):not(.o_field_image) { - min-height: 35px; - } - .o_x2m_control_panel { - margin-bottom: 10px; - } - &.o_field_float_percentage, - &.o_field_monetary, - &.o_field_many2manytags, - .o_field_many2one_selection { - align-items: center; - } - .o_field_many2one_selection .o_input_dropdown, - &.o_datepicker, - &.o_field_partner_autocomplete { - input { - min-height: 35px; - } - } - .o_external_button { - margin-left: 10px; - } - .o_dropdown_button, - .o_datepicker_button { - top: 8px; - right: 6px; - bottom: auto; - } - } - } - - .o_FormRenderer_chatterContainer { - padding-top: 0; - .o_Activity_info { - flex-wrap: wrap; - } - .o_ActivityBox_title { - margin-bottom: 0; - } - .o_MessageList_separatorDate { - padding-bottom: 0; - } - } - // Sided chatter scrolling behavior - .o_Chatter { - height: fit-content; - .o_Chatter_fixedPanel { - position: sticky; - top: 0; - z-index: 1; - background-color: white; - padding-bottom: 10px; - } - .o_Chatter_scrollPanel { - overflow: initial; - } - } - - // Sticky statusbar - .o_form_statusbar { - position: sticky; - top: 0; - z-index: 2; - } - - // Support for long title (with ellipsis) - .oe_title { - span.o_field_widget:not(.oe_inline) { - max-width: 100%; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - width: initial; - &:active { - white-space: normal; - } - } - } - - @include media-breakpoint-down(sm) { - min-width: auto; - - // More buttons border - .oe_button_box { - .o_dropdown_more { - button:last-child { - border-right: 1px solid gray("400"); - } - } - } - - // Avoid overflow on forms with title and/or button box - .oe_title { - max-width: 100%; - } - - .oe_button_box + .oe_title, - .oe_button_box + .oe_avatar + .oe_title { - width: 100%; - } - - // Avoid overflow on modals - .o_form_sheet { - min-width: auto; - } - - // Render website inputs properly in phones - .o_group .o_field_widget.o_text_overflow { - // Overrides another !important - width: auto !important; - } - - // Make all input groups vertical - .o_group_col_6, - .o_group_col_8 { - width: 100%; - } - - // Statusbar buttons dropdown for mobiles - .o_statusbar_buttons_dropdown { - border: { - bottom: 0; - radius: 0; - top: 0; - } - height: 100%; - } - .o_statusbar_buttons.dropdown-menu { - .btn { - border-radius: 0; - border: 0; - width: 100%; - margin-bottom: 0.2rem; - white-space: nowrap; - @include media-breakpoint-down(xs) { - max-width: 80vw; - overflow: hidden; - text-overflow: ellipsis; - } - - &:last-child { - margin-bottom: 0; - } - } - } - - .o_statusbar_status { - // Arrow from rightmost button exceeds allowed width - .o_arrow_button:first-child::before { - content: none; - display: none; - } - } - - // Full width in form sheets - .o_form_sheet, - .o_FormRenderer_chatterContainer { - min-width: auto; - max-width: 98%; - } - - // Settings pages - .app_settings_block { - .row { - margin: 0; - } - } - - .o_FormRenderer_chatterContainer { - padding-top: initial; - - // Display send button on small screens - .o_Chatter_composer { - &.o-has-current-partner-avatar { - grid-template-columns: 0px 1fr; - padding: 1rem 1rem 1.5rem 1rem; - } - - .o_Composer_sidebarMain { - display: none; - } - } - } - } - } - - //No content message improvements on mobile - @include media-breakpoint-down(md) { - .o_view_nocontent { - top: 80px; - } - .o_nocontent_help { - box-shadow: none; - } - .o_sample_data_disabled { - display: none; - } - } - - // Sided chatter, if user wants - .o_chatter_position_sided & { - @include media-breakpoint-up(lg) { - .o_form_view:not(.o_form_nosheet) { - display: flex; - flex-flow: row nowrap; - height: 100%; - - .o_form_sheet_bg { - flex: 1 1 auto; - overflow: auto; - - > .o_form_sheet { - min-width: unset; - } - } - - .o_FormRenderer_chatterContainer { - border-left: 1px solid gray("400"); - flex: 0 0 $chatter_zone_width; - max-width: initial; - min-width: initial; - overflow: auto; - - .o_chatter_header_container { - padding-top: $grid-gutter-width * 0.5; - top: 0; - position: sticky; - background-color: $o-view-background-color; - z-index: 1; - - // Scrollable input text to avoid hide conversation & buttons - .o_composer_text_field { - max-height: 120px; - overflow-y: auto !important; /* Forced because Odoo uses inline style */ - } - .o_attachments_list { - overflow: auto; - max-height: $o-mail-attachment-image-size * 3; - margin-top: 0.4em; - } - .o_attachments_previews { - overflow: auto; - max-height: $o-mail-attachment-image-size * 6; - } - } - } - } - } - } -} -.o_FormRenderer_chatterContainer { - &.o-aside { - border-left: $border-width 0; - padding: map-get($spacers, 0); - width: $o-form-view-sheet-max-width !important; - - .o_Message.o-not-discussion { - border-width: $border-width 0; - } - } - - &.o-isInFormSheetBg:not(.o-aside) { - max-width: $o-form-view-sheet-max-width; - background-color: $white; - @include o-form-sheet-negative-margin; - - &:not(.o-aside) { - width: auto; - border-top: 1px solid $border-color; - } - } -} diff --git a/web_chatter_position/static/src/xml/form_buttons.xml b/web_chatter_position/static/src/xml/form_buttons.xml deleted file mode 100644 index 07c534f52..000000000 --- a/web_chatter_position/static/src/xml/form_buttons.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/web_chatter_position/views/res_users.xml b/web_chatter_position/views/res_users.xml index 5bc49e1a9..0cf19ea22 100644 --- a/web_chatter_position/views/res_users.xml +++ b/web_chatter_position/views/res_users.xml @@ -1,13 +1,12 @@ - - view.users.form.simple.modif.chatter.position + res.users - - - + + + diff --git a/web_chatter_position/views/web.xml b/web_chatter_position/views/web.xml index 73f9ba71a..b65b4e1e8 100644 --- a/web_chatter_position/views/web.xml +++ b/web_chatter_position/views/web.xml @@ -1,20 +1,12 @@ - From de4203a65f0868823d9005cc0719735c11feb9ea Mon Sep 17 00:00:00 2001 From: Ediz Duman Date: Mon, 6 Mar 2023 18:53:16 +0000 Subject: [PATCH 03/17] Added translation using Weblate (Turkish) --- web_chatter_position/i18n/tr.po | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 web_chatter_position/i18n/tr.po diff --git a/web_chatter_position/i18n/tr.po b/web_chatter_position/i18n/tr.po new file mode 100644 index 000000000..82517e292 --- /dev/null +++ b/web_chatter_position/i18n/tr.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_chatter_position +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-03-06 20:08+0000\n" +"Last-Translator: Ediz Duman \n" +"Language-Team: none\n" +"Language: tr\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" +"X-Generator: Weblate 4.14.1\n" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__bottom +msgid "Bottom" +msgstr "Alt" + +#. module: web_chatter_position +#: model:ir.model.fields,field_description:web_chatter_position.field_res_users__chatter_position +msgid "Chatter Position" +msgstr "Sohbet Pozisyonu" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__auto +msgid "Responsive" +msgstr "Esnek" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__sided +msgid "Sided" +msgstr "" + +#. module: web_chatter_position +#: model:ir.model,name:web_chatter_position.model_res_users +msgid "User" +msgstr "Kullanıcı" From 05f97c3026bb6464a05d507dec1ffd3bb767d220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi?= Date: Mon, 13 Mar 2023 11:28:08 +0000 Subject: [PATCH 04/17] Added translation using Weblate (French) --- web_chatter_position/i18n/fr.po | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 web_chatter_position/i18n/fr.po diff --git a/web_chatter_position/i18n/fr.po b/web_chatter_position/i18n/fr.po new file mode 100644 index 000000000..3e1076c82 --- /dev/null +++ b/web_chatter_position/i18n/fr.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_chatter_position +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-03-13 14:23+0000\n" +"Last-Translator: Rémi \n" +"Language-Team: none\n" +"Language: fr\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" +"X-Generator: Weblate 4.14.1\n" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__bottom +msgid "Bottom" +msgstr "En bas" + +#. module: web_chatter_position +#: model:ir.model.fields,field_description:web_chatter_position.field_res_users__chatter_position +msgid "Chatter Position" +msgstr "Position du Chatter" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__auto +msgid "Responsive" +msgstr "Automatique" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__sided +msgid "Sided" +msgstr "A droite" + +#. module: web_chatter_position +#: model:ir.model,name:web_chatter_position.model_res_users +msgid "User" +msgstr "Utilisateur" From 5456ae86bb46268f7a400a8179f0347c2642e509 Mon Sep 17 00:00:00 2001 From: Bole Date: Mon, 3 Apr 2023 10:53:13 +0000 Subject: [PATCH 05/17] Added translation using Weblate (Croatian) --- web_chatter_position/i18n/hr.po | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 web_chatter_position/i18n/hr.po diff --git a/web_chatter_position/i18n/hr.po b/web_chatter_position/i18n/hr.po new file mode 100644 index 000000000..1cd041315 --- /dev/null +++ b/web_chatter_position/i18n/hr.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_chatter_position +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-03 13:22+0000\n" +"Last-Translator: Bole \n" +"Language-Team: none\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__bottom +msgid "Bottom" +msgstr "Na dnu" + +#. module: web_chatter_position +#: model:ir.model.fields,field_description:web_chatter_position.field_res_users__chatter_position +msgid "Chatter Position" +msgstr "Pozicija razgovora" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__auto +msgid "Responsive" +msgstr "Responzivno" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__sided +msgid "Sided" +msgstr "Sa strane" + +#. module: web_chatter_position +#: model:ir.model,name:web_chatter_position.model_res_users +msgid "User" +msgstr "Korisnik" From 73834ba0c3139d6356d44189a5fc7283e42935dd Mon Sep 17 00:00:00 2001 From: kikopeiro Date: Thu, 20 Jul 2023 07:35:21 +0000 Subject: [PATCH 06/17] Added translation using Weblate (Spanish) --- web_chatter_position/i18n/es.po | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 web_chatter_position/i18n/es.po diff --git a/web_chatter_position/i18n/es.po b/web_chatter_position/i18n/es.po new file mode 100644 index 000000000..b617d1100 --- /dev/null +++ b/web_chatter_position/i18n/es.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_chatter_position +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-20 10:15+0000\n" +"Last-Translator: kikopeiro \n" +"Language-Team: none\n" +"Language: es\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" +"X-Generator: Weblate 4.17\n" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__bottom +msgid "Bottom" +msgstr "Abajo" + +#. module: web_chatter_position +#: model:ir.model.fields,field_description:web_chatter_position.field_res_users__chatter_position +msgid "Chatter Position" +msgstr "Posición del historial de comunicación" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__auto +msgid "Responsive" +msgstr "Adaptativo" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__sided +msgid "Sided" +msgstr "Lateral" + +#. module: web_chatter_position +#: model:ir.model,name:web_chatter_position.model_res_users +msgid "User" +msgstr "Usuario" From d3122b73a679658924520c0a2996c9f9285f9292 Mon Sep 17 00:00:00 2001 From: Jose Montero Date: Tue, 25 Jul 2023 01:38:31 +0200 Subject: [PATCH 07/17] Fixed JS assuming "o_form_sheet_bg" is always found --- web_chatter_position/static/src/js/web_chatter_position.esm.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web_chatter_position/static/src/js/web_chatter_position.esm.js b/web_chatter_position/static/src/js/web_chatter_position.esm.js index 3c648ce0f..6e323db07 100644 --- a/web_chatter_position/static/src/js/web_chatter_position.esm.js +++ b/web_chatter_position/static/src/js/web_chatter_position.esm.js @@ -126,6 +126,9 @@ patch(FormCompiler.prototype, "web_chatter_position", { chatterContainerHookXml.setAttribute("t-if", false); } else { const formSheetBgXml = res.querySelector(".o_form_sheet_bg"); + if (!formSheetBgXml) { + return res; + } const sheetBgChatterContainerHookXml = chatterContainerHookXml.cloneNode(true); sheetBgChatterContainerHookXml.classList.add("o-isInFormSheetBg"); From edf4bdb5e566072ddefb70b0bd00a569a2f07bf8 Mon Sep 17 00:00:00 2001 From: "Jan Tapper [Onestein]" Date: Mon, 7 Aug 2023 13:35:22 +0000 Subject: [PATCH 08/17] Added translation using Weblate (Dutch) --- web_chatter_position/README.rst | 15 ++++--- web_chatter_position/__manifest__.py | 2 +- web_chatter_position/i18n/nl.po | 42 +++++++++++++++++++ .../static/description/index.html | 38 +++++++++-------- 4 files changed, 72 insertions(+), 25 deletions(-) create mode 100644 web_chatter_position/i18n/nl.po diff --git a/web_chatter_position/README.rst b/web_chatter_position/README.rst index 498ffa83b..fa584e705 100644 --- a/web_chatter_position/README.rst +++ b/web_chatter_position/README.rst @@ -2,10 +2,13 @@ Chatter Position ================ -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5d3f60eeecdac91c06a5eefec0c19386e9913235723472b54a3dd73cf4aac596 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Chatter Position .. |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_chatter_position :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/162/16.0 - :alt: Try me on Runbot +.. |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| +|badge1| |badge2| |badge3| |badge4| |badge5| Configurable chatter position from the user preferences. @@ -45,7 +48,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 smashing it by providing a detailed and welcomed +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. diff --git a/web_chatter_position/__manifest__.py b/web_chatter_position/__manifest__.py index 2fbc833b0..763e36cf4 100644 --- a/web_chatter_position/__manifest__.py +++ b/web_chatter_position/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Chatter Position", "summary": "Add an option to change the chatter position", - "version": "16.0.1.0.0", + "version": "16.0.1.0.1", "author": "Hynsys Technologies, Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/web", "license": "LGPL-3", diff --git a/web_chatter_position/i18n/nl.po b/web_chatter_position/i18n/nl.po new file mode 100644 index 000000000..475410165 --- /dev/null +++ b/web_chatter_position/i18n/nl.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_chatter_position +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-08-07 16:10+0000\n" +"Last-Translator: \"Jan Tapper [Onestein]\" \n" +"Language-Team: none\n" +"Language: nl\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" +"X-Generator: Weblate 4.17\n" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__bottom +msgid "Bottom" +msgstr "Onderkant" + +#. module: web_chatter_position +#: model:ir.model.fields,field_description:web_chatter_position.field_res_users__chatter_position +msgid "Chatter Position" +msgstr "Chatter-positie" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__auto +msgid "Responsive" +msgstr "Snel reagerend" + +#. module: web_chatter_position +#: model:ir.model.fields.selection,name:web_chatter_position.selection__res_users__chatter_position__sided +msgid "Sided" +msgstr "Zijdelings" + +#. module: web_chatter_position +#: model:ir.model,name:web_chatter_position.model_res_users +msgid "User" +msgstr "Gebruiker" diff --git a/web_chatter_position/static/description/index.html b/web_chatter_position/static/description/index.html index 2605c74c2..fac0d24de 100644 --- a/web_chatter_position/static/description/index.html +++ b/web_chatter_position/static/description/index.html @@ -1,20 +1,20 @@ - + - + Chatter Position