Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 145 additions & 0 deletions mail_layout_force/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
=================
Mail Layout Force
=================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:988dd474248a3c1d5cf299ddbbe938b3706c0ebaca05219cede46dc6a2eed89a
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github
:target: https://github.com/OCA/mail/tree/18.0/mail_layout_force
:alt: OCA/mail
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_layout_force
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/mail&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

Odoo will add a default email layout on most commercial communications.

The email layout is a ``QWeb`` view that ends up wrapping the message
body when sending an email. It usually displays the related document
reference, the company logo, and a small footer saying "Powered by
Odoo".

There are notably two main layouts used in Odoo, and the user can't
control when they're used, as it's hardcoded into the different
applications.

- ``mail.message_notification_email``
- ``mail.mail_notification_light``
- ``mail.mail_notification_paynow``

This module allows to force a specific layout for a given
``email.template``, effectively overwritting the one hardcoded by Odoo.
Additionally, it enables forcing a custom layout for emails that do not
use an existing ``email.template`` record (e.g., when sending an email
from the chatter).

This allows you to fully customize the way Odoo emails are rendered and
sent to your customers.

**Table of contents**

.. contents::
:local:

Configuration
=============

# Go to Configuration > Technical > Emails > Templates # Open the
desired ``email.template`` record. # In Advanced Parameters tab, find
the Force Layout field.

You can leave it empty to use the default email layout (chosen by Odoo).
You can force a custom email layout of your own. You can use the *Mail:
No-Layout notification template* to prevent Odoo from adding a layout.

To configure a custom layout of your own, some technical knowledge is
needed. You can see how the existing layouts are defined for details or
inspiration:

- ``mail.mail_notification_light``
- ``mail.mail_notification_paynow``
- ``mail.mail_notification_borders``

To force a new custom layout for emails that do not use an existing
``email.template`` record (e.g., emails sent from the chatter):

#. Go to Settings > Technical > User Interface > Views. #. Copy the
current layout (e.g., mail.message_notification_email) to create a new
one, and remove any parts you don’t need. #. Open the layout that you
want to swap with a substitute. Then, under the Layout Mapping tab: \*
Set ``Substitute Layout`` to the new custom layout you created. \* Set
``Models`` if you want to apply the replacement only to specific models.
If left empty, the email layout will be replaced for all models.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/mail/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 <https://github.com/OCA/mail/issues/new?body=module:%20mail_layout_force%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Credits
=======

Authors
-------

* Camptocamp

Contributors
------------

- ``Camptocamp <https://www.camptocamp.com>``\ \_

- Iván Todorovich ivan.todorovich@camptocamp.com

- Abraham Anes abrahamanes@gmail.com

- ``Quartile <https://www.quartile.co>``\ \_

- Aung Ko Ko Lin
- Yoshi Tashiro

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-ivantodorovich| image:: https://github.com/ivantodorovich.png?size=40px
:target: https://github.com/ivantodorovich
:alt: ivantodorovich

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-ivantodorovich|

This module is part of the `OCA/mail <https://github.com/OCA/mail/tree/18.0/mail_layout_force>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions mail_layout_force/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
22 changes: 22 additions & 0 deletions mail_layout_force/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2022 Camptocamp SA (https://www.camptocamp.com).
# @author Iván Todorovich <ivan.todorovich@camptocamp.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Mail Layout Force",
"summary": "Force a mail layout on selected email templates",
"version": "18.0.1.0.0",
"author": "Camptocamp, Odoo Community Association (OCA)",
"maintainers": ["ivantodorovich"],
"website": "https://github.com/OCA/mail",
"license": "AGPL-3",
"category": "Marketing",
"depends": ["mail"],
"demo": ["demo/mail_layout.xml"],
"data": [
"security/ir.model.access.csv",
"data/mail_layout.xml",
"views/ir_ui_views.xml",
"views/mail_template.xml",
],
}
11 changes: 11 additions & 0 deletions mail_layout_force/data/mail_layout.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2022 Camptocamp SA (https://www.camptocamp.com).
@author Iván Todorovich <ivan.todorovich@camptocamp.com>
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-->
<odoo>
<template id="mail_layout_noop" name="Mail: No-Layout notification template">
<t t-out="message.body" />
</template>
</odoo>
114 changes: 114 additions & 0 deletions mail_layout_force/demo/mail_layout.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2022 Camptocamp SA (https://www.camptocamp.com).
@author Iván Todorovich <ivan.todorovich@camptocamp.com>
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-->
<odoo>
<template id="mail_layout_custom">
<table
border="0"
cellpadding="0"
cellspacing="0"
style="padding-top: 32px; background-color: red; width: 100%; border-collapse:separate;"
>
<tr>
<td align="center">
<table
border="0"
cellpadding="0"
cellspacing="0"
width="590"
style="padding: 24px; background-color: white; border-collapse:separate;"
>
<tbody>
<!-- HEADER -->
<tr>
<td align="center" style="min-width: 590px;">
<table
border="0"
cellpadding="0"
cellspacing="0"
width="100%"
style="background-color: white; padding: 0; border-collapse:separate;"
>
<tr>
<td valign="middle">
<t
t-esc="model_description or 'document'"
/>
<t
t-esc="message.record_name and message.record_name.replace('/','-') or ''"
/>
</td>
<td valign="middle" align="right">
<img
t-att-src="'/logo.png?company=%s' % (company.id or 0)"
style="padding: 0px; margin: 0px; height: 48px;"
t-att-alt="'%s' % company.name"
/>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<hr
width="100%"
style="background-color: red; border: medium none; clear: both; display: block; margin:4px 0px 32px 0px;"
/>
</td>
</tr>
</table>
</td>
</tr>
<!-- CONTENT -->
<tr>
<td style="min-width: 590px;">
<t t-out="message.body" />
</td>
</tr>
<!-- FOOTER -->
<tr>
<td
align="center"
style="min-width: 590px; padding: 0 8px 0 8px; font-size:11px;"
>
<hr
width="100%"
style="background-color: red; border: medium none; clear: both; display: block; margin:4px 0px 32px 0px;"
/>
<div style="color: #FF9999;">
<b t-esc="company.name" />
<br />
<t t-esc="company.name" />
<t t-if="company.phone">
::
<t t-esc="company.phone" />
</t>
<t t-if="company.email">
::
<a
t-att-href="'mailto:%s' % company.email"
style="text-decoration:none;color:red;"
>
<t t-esc="company.email" />
</a>
</t>
<t t-if="company.website">
::
<a
t-att-href="'%s' % company.website"
style="text-decoration:none;color:red;"
>
<t t-esc="company.website" />
</a>
</t>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</template>
</odoo>
42 changes: 42 additions & 0 deletions mail_layout_force/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_layout_force
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-04-02 11:43+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"

#. module: mail_layout_force
#: model:ir.model,name:mail_layout_force.model_mail_template
msgid "Email Templates"
msgstr "Modelli e-mail"

#. module: mail_layout_force
#: model:ir.model,name:mail_layout_force.model_mail_thread
msgid "Email Thread"
msgstr "Discussione e-mail"

#. module: mail_layout_force
#: model:ir.model,name:mail_layout_force.model_mail_compose_message
msgid "Email composition wizard"
msgstr "Procedura guidata creazione e-mail"

#. module: mail_layout_force
#: model:ir.model.fields,field_description:mail_layout_force.field_mail_template__force_email_layout_id
msgid "Force Layout"
msgstr "Forza disposizione"

#. module: mail_layout_force
#: model:ir.model.fields,help:mail_layout_force.field_mail_template__force_email_layout_id
msgid "Force a mail layout for this template."
msgstr "Forza disposizione e-mail per questo modello."
Loading
Loading