Skip to content
Closed
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
125 changes: 125 additions & 0 deletions mail_layout_force/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
=================
Mail Layout Force
=================

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

.. |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%2Fsocial-lightgray.png?logo=github
:target: https://github.com/OCA/social/tree/17.0/mail_layout_force
:alt: OCA/social
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/social-17-0/social-17-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/social&target_branch=17.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.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.

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``

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/social/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/social/issues/new?body=module:%20mail_layout_force%0Aversion:%2017.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 <[email protected]>

- Abraham Anes <[email protected]>

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/social <https://github.com/OCA/social/tree/17.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
17 changes: 17 additions & 0 deletions mail_layout_force/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2022 Camptocamp SA (https://www.camptocamp.com).
# @author Iván Todorovich <[email protected]>
# 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": "17.0.1.0.0",
"author": "Camptocamp, Odoo Community Association (OCA)",
"maintainers": ["ivantodorovich"],
"website": "https://github.com/OCA/social",
"license": "AGPL-3",
"category": "Marketing",
"depends": ["mail"],
"demo": ["demo/mail_layout.xml"],
"data": ["data/mail_layout.xml", "views/mail_template.xml"],
}
13 changes: 13 additions & 0 deletions mail_layout_force/data/mail_layout.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2022 Camptocamp SA (https://www.camptocamp.com).
@author Iván Todorovich <[email protected]>
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>
115 changes: 115 additions & 0 deletions mail_layout_force/demo/mail_layout.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2022 Camptocamp SA (https://www.camptocamp.com).
@author Iván Todorovich <[email protected]>
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 <[email protected]>\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."
39 changes: 39 additions & 0 deletions mail_layout_force/i18n/mail_layout_force.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# 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"
"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: mail_layout_force
#: model:ir.model,name:mail_layout_force.model_mail_template
msgid "Email Templates"
msgstr ""

#. module: mail_layout_force
#: model:ir.model,name:mail_layout_force.model_mail_thread
msgid "Email Thread"
msgstr ""

#. module: mail_layout_force
#: model:ir.model,name:mail_layout_force.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""

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

#. 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 ""
1 change: 1 addition & 0 deletions mail_layout_force/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import mail_template
23 changes: 23 additions & 0 deletions mail_layout_force/models/mail_template.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2022 Camptocamp SA (https://www.camptocamp.com).
# @author Iván Todorovich <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class MailTemplate(models.Model):
_inherit = "mail.template"

force_email_layout_id = fields.Many2one(
comodel_name="ir.ui.view",
string="Force Layout",
domain=[("type", "=", "qweb"), ("mode", "=", "primary")],
context={"default_type": "qweb"},
help="Force a mail layout for this template.",
)

email_layout_xmlid = fields.Char(compute="_compute_email_layout_id")

def _compute_email_layout_id(self):
for template in self:
template.email_layout_xmlid = template.force_email_layout_id.xml_id
3 changes: 3 additions & 0 deletions mail_layout_force/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
Loading
Loading