19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:31:39 +01:00
parent 5df8c07b59
commit daa394e8b0
2114 changed files with 564841 additions and 299642 deletions

View file

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="iframe_css_assets_edit" groups="base.group_user">
<t t-call-assets="mass_mailing.assets_mail_themes" t-js="false"/>
<t t-call="mass_mailing.mass_mailing_mail_style"/>
<t t-call-assets="mass_mailing.assets_mail_themes_edition" t-js="false"/>
<!-- To view the body_arch field in readonly and have it display exactly
like in edit, load all the same css. TODO: move all this and the above
to a separate asset -->
<t t-call-assets="web.assets_frontend" t-js="false"/>
<t t-call-assets="web_editor.assets_wysiwyg" t-js="false"/>
</template>
<template id="iframe_css_assets_readonly" groups="base.group_user">
<link rel="stylesheet" type="text/scss" href="/mass_mailing/static/src/css/basic_theme_readonly.css"/>
<t t-call="mass_mailing.mass_mailing_mail_style"/>
</template>
</odoo>

View file

@ -6,7 +6,7 @@
<field name="model">link.tracker</field>
<field name="inherit_id" ref="link_tracker.link_tracker_view_search"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='title']" position="after">
<xpath expr="//field[@name='url']" position="after">
<field name="mass_mailing_id"/>
</xpath>
<xpath expr="//group" position="inside">
@ -26,6 +26,17 @@
</field>
</record>
<record id="link_tracker_view_tree" model="ir.ui.view">
<field name="name">link.tracker.view.list.inherit.mass.mail</field>
<field name="model">link.tracker</field>
<field name="inherit_id" ref="link_tracker.link_tracker_view_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='campaign_id']" position="before">
<field name="mass_mailing_id" optional="hide"/>
</xpath>
</field>
</record>
<!-- LINK.TRACKER.CLICK VIEWS -->
<record id="link_tracker_click_view_search" model="ir.ui.view">
<field name="name">link.tracker.click.view.search.inherit.mass_mailing</field>
@ -56,7 +67,7 @@
</record>
<record id="link_tracker_click_view_tree" model="ir.ui.view">
<field name="name">link.tracker.click.view.tree.inherit.mass_mailing</field>
<field name="name">link.tracker.click.view.list.inherit.mass_mailing</field>
<field name="model">link.tracker.click</field>
<field name="inherit_id" ref="link_tracker.link_tracker_click_view_tree"/>
<field name="arch" type="xml">

View file

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="mail_blacklist_view_tree" model="ir.ui.view">
<field name="name">mail.blacklist.view.list.inherit.mailing</field>
<field name="model">mail.blacklist</field>
<field name="inherit_id" ref="mail.mail_blacklist_view_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='email']" position="after">
<field name="opt_out_reason_id"/>
</xpath>
</field>
</record>
<record id="mail_blacklist_view_form" model="ir.ui.view">
<field name="name">mail.blacklist.view.form.inherit.mailing</field>
<field name="model">mail.blacklist</field>
<field name="inherit_id" ref="mail.mail_blacklist_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='email']" position="after">
<field name="opt_out_reason_id" placeholder="e.g. I received too many emails"/>
</xpath>
</field>
</record>
<record id="mail_blacklist_view_search" model="ir.ui.view">
<field name="name">mail.blacklist.view.search</field>
<field name="model">mail.blacklist</field>
<field name="inherit_id" ref="mail.mail_blacklist_view_search"/>
<field name="arch" type="xml">
<xpath expr="//filter[@name='inactive']" position="after">
<group>
<filter string="Reason"
name="group_by_opt_out_reason_id"
context="{'group_by': 'opt_out_reason_id'}"/>
</group>
</xpath>
</field>
</record>
</odoo>

View file

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.ui.view" id="mailing_contact_subscription_view_form">
<field name="name">mailing.contact.subscription.view.form</field>
<field name="model">mailing.contact.subscription</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<form string="Mailing List Subscription">
<sheet>
<group>
<field name="list_id"/>
<field name="is_blacklisted" invisible="1"/>
<label for="contact_id" class="oe_inline"/>
<div class="o_row o_row_readonly">
<i class="fa fa-ban text-danger" role="img" title="This email is blacklisted for mass mailings"
aria-label="Blacklisted" attrs="{'invisible': [('is_blacklisted', '=', False)]}" groups="base.group_user"></i>
<field name="contact_id"/>
</div>
<field name="unsubscription_date" readonly="1"/>
<field name="opt_out"/>
<field name="message_bounce" readonly="1"/>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="mailing_contact_subscription_view_tree">
<field name="name">mailing.contact.subscription.view.tree</field>
<field name="model">mailing.contact.subscription</field>
<field name="arch" type="xml">
<tree string="Mailing List Subscriptions">
<field name="contact_id"/>
<field name="unsubscription_date"/>
<field name="opt_out"/>
<field name="message_bounce"/>
<field name="is_blacklisted"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="mailing_contact_subscription_view_search">
<field name="name">mailing.contact.subscription.view.search</field>
<field name="model">mailing.contact.subscription</field>
<field name="arch" type="xml">
<search string="Mailing List Subscriptions">
<field name="contact_id"/>
<field name="opt_out"/>
<field name="list_id"/>
</search>
</field>
</record>
</odoo>

View file

@ -10,6 +10,7 @@
string="Name / Email"/>
<field name="tag_ids"/>
<field name="list_ids"/>
<field name="properties"/>
<separator/>
<filter string="Valid Email Recipients"
name="filter_valid_email_recipient"
@ -28,34 +29,38 @@
name="filter_not_optout"
domain="[('opt_out', '=', False)]"
invisible="not context.get('default_list_ids')"/>
<group expand="0" string="Group By">
<group>
<filter string="Creation Date" name="group_create_date"
context="{'group_by': 'create_date'}"/>
<filter string="Properties" name="group_properties"
context="{'group_by': 'properties'}"/>
</group>
</search>
</field>
</record>
<record id="mailing_contact_view_tree" model="ir.ui.view">
<field name="name">mailing.contact.view.tree</field>
<field name="name">mailing.contact.view.list</field>
<field name="model">mailing.contact</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<tree string="Mailing List Contacts" sample="1" multi_edit="1" js_class="mailing_contact_list">
<list string="Mailing List Contacts" sample="1" multi_edit="1">
<header>
<button name="action_import" string="Import" type="object" display="always"
context="{'from_mailing_list_ids': context.get('active_ids') if context.get('active_model') == 'mailing.list' else False}"/>
<button name="action_add_to_mailing_list" string="Add to List" type="object"/>
</header>
<field name="create_date" optional="show"/>
<field name="title_id" optional="hide"/>
<field name="name" readonly="1"/>
<field name="name" optional="show" readonly="1"/>
<field name="company_name"/>
<field name="email" readonly="1"/>
<field name="is_blacklisted" string="Email Blacklisted"/>
<field name="country_id" optional="hide"/>
<field name="message_bounce" sum="Total Bounces" readonly="1"/>
<field name="opt_out" invisible="'default_list_ids' not in context" readonly="1"/>
<field name="opt_out" readonly="1" column_invisible="'default_list_ids' not in context"/>
<field name="list_ids" widget="many2many_tags" optional="hide"/>
</tree>
<field name="properties" optional="hide"/>
</list>
</field>
</record>
@ -63,38 +68,23 @@
<field name="name">mailing.contact.view.kanban</field>
<field name="model">mailing.contact</field>
<field name="arch" type="xml">
<kanban sample="1" js_class="mailing_contact_kanban">
<field name="name"/>
<field name="company_name"/>
<field name="email"/>
<field name="message_bounce"/>
<kanban sample="1">
<header>
<button name="action_import" string="Import" type="object" display="always"
context="{'from_mailing_list_ids': context.get('active_ids') if context.get('active_model') == 'mailing.list' else False}"/>
</header>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title">
<t t-esc="record.name.value"/>
</strong>
</div>
<span class="badge rounded-pill" title="Number of bounced email.">
<i class="fa fa-exclamation-triangle" role="img" aria-label="Warning" title="Warning"/> <t t-esc="record.message_bounce.value" title=""/>
</span>
</div>
<div class="o_kanban_record_body">
<field name="tag_ids"/>
</div>
<div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left">
<strong>
<t t-esc="record.email.value"/>
</strong>
</div>
<div class="oe_kanban_bottom_right">
<t t-esc="record.company_name.value"/>
</div>
<t t-name="card">
<div class="d-flex">
<field name="name" class="fw-bolder fs-5"/>
<div class="badge rounded-pill ms-auto" title="Number of bounced email.">
<i class="fa fa-exclamation-triangle" role="img" aria-label="Warning" title="Warning"/> <field name="message_bounce"/>
</div>
</div>
<field name="tag_ids"/>
<field name="email" class="fw-bolder"/>
<field name="company_name" class="ms-auto"/>
<field name="properties" widget="properties"/>
</t>
</templates>
</kanban>
@ -114,9 +104,6 @@
<h1>
<field class="text-break" name="name" placeholder="e.g. John Smith"/>
</h1>
<div>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" placeholder="Tags" style="width: 100%"/>
</div>
</div>
<group>
<group>
@ -125,31 +112,38 @@
<button name="mail_action_blacklist_remove" class="fa fa-ban text-danger"
title="This email is blacklisted for mass mailings. Click to unblacklist."
type="object" context="{'default_email': email}" groups="base.group_user"
attrs="{'invisible': [('is_blacklisted', '=', False)]}"/>
invisible="not is_blacklisted"/>
<field name="email" widget="email"/>
<field name="is_blacklisted" invisible="1"/>
</div>
<field name="title_id"/>
<field name="company_name"/>
<field name="country_id" options="{'no_open': True, 'no_create': True}"/>
</group>
<group>
<field name="create_date" attrs="{'invisible': [('id', '=', False)]}" readonly="1"/>
<field name="message_bounce" attrs="{'invisible': [('id', '=', False)]}" readonly="1"/>
<field name="create_date" readonly="1" invisible="not id"/>
<field name="message_bounce" readonly="1" invisible="not id"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"
placeholder="e.g. &quot;VIP&quot;, &quot;Roadshow&quot;, ..." style="width: 100%"/>
</group>
</group>
<field name="subscription_list_ids">
<tree editable="bottom">
<field name="list_id"/>
<field name="unsubscription_date"/>
<field name="opt_out"/>
</tree>
</field>
<div class="d-flex">
<field name="properties" nolabel="1" columns="2"/>
</div>
<notebook>
<page string="Subscriptions">
<field name="subscription_ids">
<list editable="bottom">
<field name="list_id"/>
<field name="opt_out_datetime" readonly="1"/>
<field name="opt_out"/>
<field name="opt_out_reason_id"/>
<field name="create_date" string="Subscription Date"/>
</list>
</field>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="message_ids"/>
</div>
<chatter/>
</form>
</field>
</record>
@ -179,7 +173,7 @@
<record model="ir.actions.act_window" id="action_view_mass_mailing_contacts">
<field name="name">Mailing List Contacts</field>
<field name="res_model">mailing.contact</field>
<field name="view_mode">tree,kanban,form,graph,pivot</field>
<field name="view_mode">list,kanban,form,graph,pivot</field>
<field name="context">{'search_default_filter_not_email_bl': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
@ -189,4 +183,44 @@
</p>
</field>
</record>
<data noupdate="1">
<!-- Activated dynamically when the option that splits name into first and last name is enabled. -->
<!-- We set them into a noupdate block to avoid the configuration to be reset after an update. -->
<record id="mailing_contact_view_tree_split_name" model="ir.ui.view">
<field name="name">mailing.contact.view.list.split.name</field>
<field name="model">mailing.contact</field>
<field name="inherit_id" ref="mass_mailing.mailing_contact_view_tree"/>
<field name="active">False</field>
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="after">
<field name="first_name" optional="hide" readonly="1"/>
<field name="last_name" optional="hide" readonly="1"/>
</xpath>
</field>
</record>
<record id="mailing_contact_view_form_split_name" model="ir.ui.view">
<field name="name">mailing.contact.view.form.split.name</field>
<field name="model">mailing.contact</field>
<field name="inherit_id" ref="mass_mailing.mailing_contact_view_form"/>
<field name="active">False</field>
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="attributes">
<attribute name="readonly">1</attribute>
<attribute name="invisible">not name</attribute>
</xpath>
<xpath expr="//field[@name='name']" position="after">
<!-- simulate the placeholder on the readonly field -->
<span class="opacity-50" invisible="name">e.g. "John Smith"</span>
</xpath>
<xpath expr="//group/label[@for='email']" position="before">
<field name="first_name" placeholder="e.g. &quot;John&quot;"/>
</xpath>
<xpath expr="//group/field[@name='create_date']" position="before">
<field name="last_name" placeholder="e.g. &quot;Smith&quot;"/>
</xpath>
</field>
</record>
</data>
</odoo>

View file

@ -11,7 +11,7 @@
name="filter_saved_by_me"
domain="[('create_uid', '=', uid)]"
help="Filters saved by me"/>
<group string="Group By">
<group>
<filter name="groupby_recepient_model"
context="{'group_by' : 'mailing_model_id'}"
string="Recipients"/>
@ -21,15 +21,15 @@
</record>
<record id="mailing_filter_view_tree" model="ir.ui.view">
<field name="name">mailing.filter.view.tree</field>
<field name="name">mailing.filter.view.list</field>
<field name="model">mailing.filter</field>
<field name="arch" type="xml">
<tree string="Mailing filters" sample="1">
<list string="Mailing filters" sample="1">
<field name="name"/>
<field name="create_uid" string="Saved by" widget="many2one_avatar_user"/>
<field name="mailing_model_id" string="Recipients"/>
<field name="mailing_domain" string="Domain" optional="hide"/>
</tree>
</list>
</field>
</record>
@ -41,8 +41,8 @@
<sheet>
<group>
<group>
<field name="name"/>
<field name="mailing_model_id" options="{'no_create': True, 'no_open': True}"/>
<field name="name" placeholder='e.g. "B2B Canadian Customers"'/>
<field name="mailing_model_id" placeholder="Select a Target Model..." options="{'no_create': True, 'no_open': True}"/>
</group>
<group>
<field name="create_uid" widget="many2one_avatar_user"/>
@ -52,7 +52,7 @@
<field name="mailing_model_name" invisible="1"/>
<field name="mailing_domain" string="Domain" widget="domain"
options="{'model': 'mailing_model_name'}"
attrs="{'invisible': [('mailing_model_id', '=', False)]}"/>
invisible="not mailing_model_id"/>
</group>
</sheet>
</form>
@ -62,7 +62,7 @@
<record id="mailing_filter_action" model="ir.actions.act_window">
<field name="name">Favorite Filters</field>
<field name="res_model">mailing.filter</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="context">{'search_default_filter_saved_by_me': 1}
</field>
<field name="help" type="html">
@ -71,7 +71,7 @@
</p><p>
While designing the mailing, you can define the rules to filter recipients.
To save the same criteria for future use, you can add it to the favorite list
by clicking on <i class="fa fa-star-o text-warning"></i> icon next to "Recipients".
by clicking on <i class="fa fa-floppy-o text-warning"></i> icon next to "Recipients".
</p>
</field>
</record>

View file

@ -9,7 +9,7 @@
<field name="name"/>
<field name="create_date"/>
<filter name="inactive" string="Archived" domain="[('active','=',False)]"/>
<group expand="0" string="Group By">
<group>
<filter string="Creation Period" name="group_create_date"
context="{'group_by': 'create_date'}"/>
</group>
@ -18,11 +18,11 @@
</record>
<record model="ir.ui.view" id="mailing_list_view_tree">
<field name="name">mailing.list.view.tree</field>
<field name="name">mailing.list.view.list</field>
<field name="model">mailing.list</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<tree string="Mailing Lists" sample="1">
<list string="Mailing Lists" sample="1">
<field name="name"/>
<field name="is_public"/>
<field name="mailing_count" string="Mailings"/>
@ -30,7 +30,7 @@
<field name="contact_pct_opt_out" string="Opt-out (%)"/>
<field name="contact_pct_blacklisted" string="Blacklist (%s)"/>
<field name="contact_count" string="Recipients"/>
</tree>
</list>
</field>
</record>
@ -39,6 +39,12 @@
<field name="model">mailing.list</field>
<field name="arch" type="xml">
<form string="Contact List">
<header>
<button name="action_send_mailing" string="Send Mailing"
type="object" class="btn btn-primary"/>
<button name="action_open_import" string="Import Contacts"
type="object" class="btn btn-secondary"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="action_view_contacts"
@ -51,42 +57,18 @@
</button>
<button name="action_view_contacts_bouncing"
type="object" icon="fa-exchange" class="oe_stat_button">
<div class="o_field_widget o_stat_info">
<div class="oe_inline">
<span class="o_stat_value">
<field name="contact_pct_bounce" widget="statinfo" nolabel="1"/>
</span>
<span class="o_stat_value">%</span>
</div>
<span class="o_stat_text">Bounce</span>
</div>
<field name="contact_pct_bounce" widget="statinfo" string="% Bounce"/>
</button>
<button name="action_view_contacts_opt_out"
type="object" icon="fa-bell-slash-o" class="oe_stat_button">
<div class="o_field_widget o_stat_info">
<div class="oe_inline">
<span class="o_stat_value">
<field name="contact_pct_opt_out" widget="statinfo" nolabel="1"/>
</span>
<span class="o_stat_value">%</span>
</div>
<span class="o_stat_text">Opt-out</span>
</div>
<field name="contact_pct_opt_out" widget="statinfo" string="% Opt-out"/>
</button>
<button name="action_view_contacts_blacklisted"
type="object" icon="fa-ban" class="oe_stat_button">
<div class="o_field_widget o_stat_info">
<div class="oe_inline">
<span class="o_stat_value">
<field name="contact_pct_blacklisted" widget="statinfo" nolabel="1"/>
</span>
<span class="o_stat_value">%</span>
</div>
<span class="o_stat_text">Blacklist</span>
</div>
<field name="contact_pct_blacklisted" widget="statinfo" string="% Blacklist"/>
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
<div class="oe_title">
<label for="name"/>
<h1>
@ -126,146 +108,75 @@
<field name="model">mailing.list</field>
<field name="arch" type="xml">
<kanban class="o_kanban_mobile o_kanban_mailing_list" sample="1">
<field name="name"/>
<field name="contact_count"/>
<field name="contact_count_email"/>
<field name="contact_count_opt_out"/>
<field name="contact_count_blacklisted"/>
<field name="contact_pct_bounce"/>
<field name="contact_pct_opt_out"/>
<field name="contact_pct_blacklisted"/>
<field name="active"/>
<templates>
<t t-name="kanban-box">
<!-- Card when the Kanban view is grouped -->
<div class="oe_kanban_global_click o_mailing_list_kanban_grouped">
<div class="oe_kanban_content d-flex flex-column h-100">
<h2 class="mb-3 o_text_overflow">
<field name="name"/>
</h2>
<div class="d-flex align-items-center">
<div class="me-3">
<button class="btn btn-primary" name="action_view_contacts" type="object">
<t t-esc="record.contact_count.value"/> <span>Contacts</span>
</button>
</div>
<div class="flex-grow-1 d-flex flex-column align-items-end o_mass_mailing_kanban_contact_links">
<a name="action_view_contacts_email" type="object">
<span>Valid Email Recipients</span>
<span t-esc="record.contact_count_email.value" class="ms-3"/>
</a>
</div>
</div>
<div class="flex-grow-1 d-flex align-items-end mt-4">
<div class="col-12">
<div class="row mt3">
<div class="col-3 border-end">
<a name="action_view_mailings" type="object" class="d-flex flex-column align-items-center">
<span><field name="mailing_count"/></span>
<span class="text-muted">Mailings</span>
</a>
</div>
<div class="col-3 border-end">
<a name="action_view_contacts_bouncing" type="object" class="d-flex flex-column align-items-center">
<span><field name="contact_pct_bounce"/>%</span>
<span class="text-muted">Bounce</span>
</a>
</div>
<div class="col-3 border-end">
<a name="action_view_contacts_opt_out" type="object" class="d-flex flex-column align-items-center">
<span><field name="contact_pct_opt_out"/>%</span>
<span class="text-muted">Opt-out</span>
</a>
</div>
<div class="col-3">
<a name="action_view_contacts_blacklisted" type="object" class="d-flex flex-column align-items-center">
<span><field name="contact_pct_blacklisted"/>%</span>
<span class="text-muted">Blacklist</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Card when the Kanban view is not grouped -->
<div class="oe_kanban_global_click o_mailing_list_kanban_ungrouped d-flex flex-row justify-content-between align-items-center flex-wrap">
<t t-name="card">
<div class="d-flex gap-1 flex-row justify-content-between align-items-center flex-wrap">
<div class="col-lg-3 col-sm-6 col-12 py-0 my-auto">
<div class="d-flex text-large">
<span class="d-inline-block text-truncate fw-normal text-large"
t-att-title="record.name.value">
<field name="name"/>
</span>
</div>
<span class="d-inline-block w-100 text-truncate fs-2 fw-normal lh-sm" t-att-title="record.name.value">
<field name="name"/>
</span>
</div>
<div class="o_mailing_list_kanban_counts col-lg-1 col-12 my-auto d-flex">
<div class="col-lg-1 col-6 my-auto d-flex">
<div class="d-flex flex-row justify-content-start justify-content-md-end">
<div class="my-auto p-0">
<button name="action_view_contacts" type="object"
class="o_mailing_list_kanban_button o_mailing_list_kanban_big_nb text-primary fw-bold">
<field name="contact_count"/>
</button>
</div>
<div class="my-auto px-0">
<button name="action_view_contacts" type="object"
class="o_mailing_list_kanban_button text-large text-start ms-2">
Total <br/>Contacts
</button>
</div>
<button name="action_view_contacts" type="object"
class="o_mailing_list_kanban_button o_mailing_list_kanban_big_nb text-primary fw-bold">
<field name="contact_count"/>
</button>
<button name="action_view_contacts" type="object"
class="o_mailing_list_kanban_button fs-4 lh-1 text-start ms-2">
Total <br/>Contacts
</button>
</div>
</div>
<div class="o_mailing_list_kanban_stats col-lg-5 col-sm-12 col-12 py-0 my-3 my-sm-auto d-flex justify-content-sm-between justify-content-start flex-wrap">
<a class="me-sm-0 me-3 text-large" tabindex="-1"
<div class="o_mailing_list_kanban_stats order-4 order-lg-3 col-lg-5 col-sm-12 col-12 py-0 my-3 my-sm-auto d-flex justify-content-sm-between justify-content-start flex-wrap">
<a class="me-sm-0 me-3 fs-4 fw-light lh-1 text-truncate" tabindex="-1"
name="action_view_contacts_email" type="object">
<span class="fw-normal">
<field name="contact_count_email"/>
</span>
<field name="contact_count_email" class="fw-normal"/>
<br/>
<span class="text-secondary">
<span class="text-muted">
<i class="fa fa-envelope-o"/> Contacts
</span>
</a>
<a class="me-sm-0 me-3 text-large" tabindex="-1"
<a class="me-sm-0 me-3 fs-4 fw-light lh-1 text-truncate" tabindex="-1"
name="action_view_mailings" type="object">
<span class="fw-normal">
<field name="mailing_count"/>
</span>
<field name="mailing_count" class="fw-normal"/>
<br/>
<span class="text-secondary">Mailings</span>
<span class="text-muted">Mailings</span>
</a>
<hr class="w-100 d-block d-sm-none opacity-0 m-0 p-0"/>
<a class="me-sm-0 me-3 text-large" tabindex="-1"
<a class="me-sm-0 me-3 fs-4 fw-light lh-1 text-truncate" tabindex="-1"
name="action_view_contacts_bouncing" type="object">
<span class="fw-normal">
<field name="contact_pct_bounce"/> %
</span>
<br/>
<span class="text-secondary">Bounce</span>
<span class="text-muted">Bounce</span>
</a>
<a class="me-sm-0 me-3 text-large" tabindex="-1"
<a class="me-sm-0 me-3 fs-4 fw-light lh-1 text-truncate" tabindex="-1"
name="action_view_contacts_opt_out" type="object">
<span class="fw-normal">
<field name="contact_pct_opt_out"/> %
</span>
<br/>
<span class="text-secondary">Opt-Out</span>
<span class="text-muted">Opt-Out</span>
</a>
<a class="me-sm-0 me-3 text-large" tabindex="-1"
<a class="me-sm-0 me-3 fs-4 fw-light lh-1 text-truncate" tabindex="-1"
name="action_view_contacts_blacklisted" type="object">
<span class="fw-normal">
<field name="contact_pct_blacklisted"/> %
</span>
<br/>
<span class="text-secondary">Blacklist</span>
<span class="text-muted">Blacklist</span>
</a>
</div>
<div class="o_kanban_ungrouped_action_buttons col-12 col-lg-2 py-0 pe-2 ps-md-2 my-md-auto my-2 d-none d-md-flex flex-wrap justify-content-lg-end">
<div class="order-3 order-lg-4 col-5 col-lg-2 py-0 my-auto d-none d-md-flex flex-wrap justify-content-end gap-1">
<button name="action_open_import" string="Import Contacts"
type="object" class="btn btn-secondary border me-2 text-nowrap">
type="object" class="btn btn-secondary text-nowrap">
Import Contacts
</button>
<button name="action_send_mailing" string="Send Mailing"
type="object" class="btn btn-secondary border me-2 text-nowrap">
type="object" class="btn btn-secondary text-nowrap">
Send Mailing
</button>
</div>
@ -279,7 +190,8 @@
<record model="ir.actions.act_window" id="action_view_mass_mailing_lists">
<field name="name">Mailing Lists</field>
<field name="res_model">mailing.list</field>
<field name="view_mode">kanban,tree,form</field>
<field name="path">mailing-lists</field>
<field name="view_mode">kanban,list,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a Mailing List

View file

@ -19,9 +19,10 @@
domain="[('ab_testing_enabled', '=', True), ('ab_testing_winner_selection', '=', 'manual'), ('ab_testing_completed', '=', False)]"/>
<separator/>
<filter name="inactive" string="Archived" domain="[('active', '=', False)]"/>
<group expand="0" string="Group By">
<group>
<filter string="Status" name="group_state" context="{'group_by': 'state'}"/>
<filter string="Sent By" name="sent_by" domain="[]" context="{'group_by': 'email_from'}"/>
<filter string="Mailing List" name="group_by_contact_list_ids" domain="[]" context="{'group_by': 'contact_list_ids'}"/>
<separator/>
<filter string="Sent Period" name="sent_date" domain="[]" context="{'group_by': 'sent_date'}"/>
</group>
@ -30,13 +31,13 @@
</record>
<record model="ir.ui.view" id="view_mail_mass_mailing_tree">
<field name="name">mailing.mailing.tree</field>
<field name="name">mailing.mailing.list</field>
<field name="model">mailing.mailing</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<tree string="Mailings" sample="1" class="o_mass_mailing_mailing_tree">
<list string="Mailings" sample="1" class="o_mass_mailing_mailing_tree">
<field name="calendar_date" string="Date" widget="datetime"/>
<field name="subject" attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
<field name="subject" readonly="state in ('sending', 'done')"/>
<field name="mailing_model_id" string="Recipients" optional="hide"/>
<field name="user_id" widget="many2one_avatar_user"/>
<field name="ab_testing_enabled" string="A/B Test" groups="mass_mailing.group_mass_mailing_campaign"/>
@ -48,7 +49,7 @@
<field name="clicks_ratio" string="Clicked (%)" avg="Average"/>
<field name="replied_ratio" string="Replied (%)" avg="Average"/>
<field name="state" decoration-info="state in ['draft', 'in_queue']" decoration-success="state == 'sending' or state == 'done'" widget="badge"/>
</tree>
</list>
</field>
</record>
@ -58,34 +59,45 @@
<field name="model">mailing.mailing</field>
<field name="arch" type="xml">
<form string="Mailing" class="o_mass_mailing_mailing_form">
<header style="min-height:31px;">
<header>
<button name="action_launch" type="object" class="oe_highlight" string="Send"
attrs="{'invisible': [('state', 'in', ('in_queue', 'sending', 'done'))]}" data-hotkey="v"
confirm="This will send the email to all recipients. Do you still want to proceed ?"/>
invisible="state in ('in_queue', 'sending', 'done')" data-hotkey="q"
confirm="Once you send these emails, they'll be making a grand entrance in all the inboxes, creating quite the buzz!"
confirm-title="Ready to unleash emails?" confirm-label="Send to all"
/>
<button name="action_schedule" type="object" class="btn-secondary" string="Schedule"
attrs="{'invisible': [('state', 'in', ('in_queue', 'sending', 'done'))]}" data-hotkey="x"/>
invisible="state in ('in_queue', 'sending', 'done')" data-hotkey="v"/>
<button name="action_duplicate" type="object" class="btn-secondary" string="Duplicate"
data-hotkey="d" attrs="{'invisible': [('state', '!=', 'done')]}"/>
data-hotkey="d" invisible="state != 'done'"/>
<button name="action_test" type="object" class="btn-secondary" string="Test" data-hotkey="k"/>
<button name="action_cancel" type="object" attrs="{'invisible': [('state', '!=', 'in_queue')]}" class="btn-secondary" string="Cancel" data-hotkey="z"/>
<button name="action_retry_failed" type="object" attrs="{'invisible': ['|', ('state', '!=', 'done'), ('failed', '=', 0)]}" class="oe_highlight" string="Retry" data-hotkey="y"/>
<field name="state" readonly="1" widget="statusbar"/>
<button name="action_cancel" type="object" invisible="state != 'in_queue'" class="btn-secondary" string="Cancel" data-hotkey="x"/>
<button name="action_retry_failed" type="object" invisible="state != 'done' or failed == 0" class="oe_highlight" string="Retry" data-hotkey="y"/>
<button type="object"
name="action_set_favorite"
class="btn-secondary"
invisible="favorite"
string="Add to Templates"/>
<button type="object"
name="action_remove_favorite"
class="btn-secondary"
invisible="not favorite"
string="Remove from Templates"/>
<field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,in_queue,sending,done"/>
</header>
<div class="alert alert-info text-center" role="alert"
attrs="{'invisible': ['&amp;','&amp;','&amp;','&amp;','&amp;',('state', '!=', 'in_queue'),('sent', '=', 0),('canceled', '=', 0),('scheduled', '=', 0),('failed', '=', 0),('warning_message', '=', False)]}">
<div class="o_mails_canceled" attrs="{'invisible': [('canceled', '=', 0)]}">
<button class="btn-link py-0"
<div class="alert alert-info o_mass_mailing_alert_message" role="alert"
invisible="state not in ['in_queue', 'done'] and sent == 0 and canceled == 0 and scheduled == 0 and failed == 0 and not warning_message">
<div class="o_mails_canceled" invisible="canceled == 0">
<button class="btn btn-link py-0"
name="action_view_traces_canceled"
type="object">
<strong>
<field name="canceled" class="oe_inline me-2"/>
<span name="canceled_text">emails have been canceled and will not be sent.</span>
<span name="canceled_text">emails have been cancelled and will not be sent.</span>
</strong>
</button>
</div>
<div class="o_mails_scheduled" attrs="{'invisible': [('scheduled', '=', 0)]}">
<button class="btn-link py-0"
<div class="o_mails_scheduled" invisible="scheduled == 0">
<button class="btn btn-link py-0"
name="action_view_traces_scheduled"
type="object">
<strong>
@ -94,8 +106,18 @@
</strong>
</button>
</div>
<div class="o_mails_sent" attrs="{'invisible': ['&amp;', ('sent', '=', 0), ('state', 'in', ('draft', 'test', 'in_queue'))]}">
<button class="btn-link py-0"
<div class="o_mails_process" invisible="process == 0">
<button class="btn btn-link py-0"
name="action_view_traces_process"
type="object">
<strong>
<field name="process" class="oe_inline me-2"/>
<span name="process_text">emails are being processed.</span>
</strong>
</button>
</div>
<div class="o_mails_sent" invisible="sent == 0 and state in ('draft', 'test', 'in_queue')">
<button class="btn btn-link py-0"
name="action_view_traces_sent"
type="object">
<strong>
@ -103,158 +125,149 @@
<span name="sent">emails have been sent.</span>
</strong>
</button>
<strong class="d-block" invisible="mailing_type == 'mail' or not ab_testing_enabled or state != 'done' or sent != 0 or failed != 0 or canceled != 0">
<span name="ab_test_text">There wasn't enough recipients given to this mailing. </span>
</strong>
</div>
<div class="o_mails_failed" attrs="{'invisible': ['|', ('state', '!=', 'done'), ('failed', '=', 0)]}">
<button class="btn-link py-0"
<div class="o_mails_failed" invisible="state != 'done' or failed == 0">
<button class="btn btn-link py-0"
name="action_view_traces_failed"
type="object">
<strong>
<field name="failed" class="oe_inline me-2"/>
<span name="failed_text">emails could not be sent.</span>
</strong>
</strong>
</button>
</div>
<div class="o_mails_in_queue" attrs="{'invisible': [('state', '!=', 'in_queue')]}">
<strong>
<div class="o_mails_in_queue" invisible="state != 'in_queue'">
<strong invisible="next_departure_is_past or schedule_type == 'now'">
<span name="next_departure_text">This mailing is scheduled for </span>
<field name="next_departure" class="oe_inline"/>.
</strong>
<strong invisible="not next_departure_is_past or schedule_type == 'now'" class="d-flex align-items-center">
<field name="next_departure_is_past" invisible="1"/>
<span name="refresh_text">This mailing will be sent as soon as possible.</span>
<button name="action_reload" type="object" class="btn btn-link pe-0">
<u>Refresh <i class="fa fa-refresh ms-1"/></u>
</button>
</strong>
<strong invisible="schedule_type != 'now'" class="d-flex align-items-center">
<field name="next_departure_is_past" invisible="1"/>
<field name="schedule_type" invisible="1"/>
<span name="mailing_schedule_type_now_text">This mailing will be sent as soon as possible.</span>
<button name="action_reload" type="object" class="btn btn-link pe-0">
<u>Refresh <i class="fa fa-refresh ms-1"/></u>
</button>
</strong>
</div>
<div attrs="{'invisible': [('warning_message', '=', False)]}">
<div invisible="not warning_message">
<strong><field name="warning_message"/></strong>
</div>
</div>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="action_view_delivered"
id="button_view_delivered"
type="object"
context="{'search_default_filter_delivered': True}"
attrs="{'invisible': [('state', 'in', ('draft','test'))]}"
class="oe_stat_button">
<field name="received_ratio" string="Received" widget="percentpie"/>
</button>
<button name="action_view_opened"
type="object"
context="{'search_default_filter_opened': True}"
attrs="{'invisible': [('state', 'in', ('draft','test'))]}"
invisible="state in ('draft', 'test')"
class="oe_stat_button">
<field name="opened_ratio" string="Opened" widget="percentpie"/>
</button>
<button name="action_view_clicked"
type="object"
context="{'search_default_filter_clicked': True}"
attrs="{'invisible': [('state', 'in', ('draft','test'))]}"
class="oe_stat_button">
<field name="clicks_ratio" string="Clicked" widget="percentpie"/>
</button>
<button name="action_view_replied"
type="object"
context="{'search_default_filter_replied': True}"
attrs="{'invisible': [('state', 'in', ('draft','test'))]}"
invisible="state in ('draft', 'test')"
class="oe_stat_button">
<field name="replied_ratio" string="Replied" widget="percentpie"/>
</button>
<button name="action_view_clicked"
type="object"
context="{'search_default_filter_clicked': True}"
invisible="state in ('draft', 'test')"
class="oe_stat_button">
<field name="clicks_ratio" string="Clicked" widget="percentpie"/>
</button>
<button name="action_view_delivered"
id="button_view_delivered"
type="object"
context="{'search_default_filter_delivered': True}"
invisible="state in ('draft', 'test')"
class="oe_stat_button">
<field name="received_ratio" string="Received" widget="percentpie"/>
</button>
<button name="action_view_bounced"
type="object"
context="{'search_default_filter_bounced': True}"
attrs="{'invisible': [('state', 'in', ('draft','test'))]}"
invisible="state in ('draft', 'test')"
class="oe_stat_button">
<field name="bounced_ratio" string="Bounced" widget="percentpie"/>
</button>
<button name="action_view_link_trackers"
invisible="state != 'done'"
type="object" class="oe_stat_button" icon="fa-link">
<field name="link_trackers_count" widget="statinfo" string="Link Trackers"/>
</button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
<group class="o_mass_mailing_mailing_group">
<field name="active" invisible="1"/>
<field name="create_uid" invisible="1"/>
<field name="mailing_type" widget="radio" options="{'horizontal': true}" invisible="1"
attrs="{'readonly': [('state', '!=', 'draft')]}" force_save="1"/>
<label for="subject">Subject</label>
<div class="o_mass_mailing_subject d-flex flex-row align-items-baseline">
<field class="text-break" name="subject" string="Subject"
options="{'dynamic_placeholder': true}"
attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"
widget="char_emojis" placeholder="e.g. New Sale on all T-shirts"/>
<field name="favorite" invisible="1"/>
<button type="object" name="action_set_favorite"
class="o_mass_mailing_favorite p-0"
icon="fa-star-o"
attrs="{'invisible': [('favorite', '=', True)]}"
title="Add to Templates"/>
<button type="object" name="action_remove_favorite"
class="o_mass_mailing_favorite p-0"
icon="fa-star"
attrs="{'invisible': [('favorite', '=', False)]}"
title="Remove from Templates"/>
</div>
<field name="mailing_type" widget="radio" options="{'horizontal': true}"
invisible="1"
readonly="state != 'draft'" force_save="1"/>
<field class="text-break" name="subject"
options="{'dynamic_placeholder': true, 'dynamic_placeholder_model_reference_field': 'mailing_model_real'}"
readonly="state in ('sending', 'done')"
widget="char_emojis" placeholder="e.g. New Sale on all T-shirts"/>
<label for="mailing_model_id" string="Recipients"/>
<div name="mailing_model_id_container">
<div class="d-flex align-items-baseline flex-wrap">
<div class="me-5">
<div class="row">
<div class="col-md-auto">
<field name="mailing_model_id" options="{'no_open': True, 'no_create': True}"
attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
readonly="state in ('sending', 'done')"/>
</div>
<div attrs="{'invisible': [('mailing_model_name', '!=', 'mailing.list')]}" class="o_mass_mailing_contact_list_ids pt-1 pt-sm-0">
<label for="contact_list_ids" string="Select mailing lists:" class="oe_edit_only pe-2"/>
<div invisible="not mailing_on_mailing_list" class="o_mass_mailing_contact_list_ids col-md-auto pt-1">
<label for="contact_list_ids" string="Mailing Lists:" class="oe_edit_only pe-3"/>
<div class="d-inline-flex flex-row align-items-center">
<field name="contact_list_ids" widget="many2many_tags"
placeholder="Select mailing lists..." class="oe_inline mb-0"
placeholder="Select recipients..." class="oe_inline mb-0"
context="{'form_view_ref': 'mass_mailing.mailing_list_view_form_simplified'}"
attrs="{
'required':[('mailing_model_name','=','mailing.list')],
'readonly': [('state', 'in', ('sending', 'done'))]
}"/>
readonly="state in ('sending', 'done')"/>
<button icon="fa-user-plus" type="object" class="btn btn-secondary py-0 px-1 ms-1"
attrs="{'invisible': ['|', '|', ('contact_list_ids', '=', False), ('contact_list_ids', '=', []), ('state', 'in', ('sending', 'done'))]}"
invisible="not contact_list_ids or not contact_list_ids or state in ('sending', 'done')"
name="action_view_mailing_contacts" title="Add Mailing Contacts"/>
</div>
</div>
<div attrs="{'invisible': [('mailing_model_name', '=', 'mailing.list')]}" class="o_td_label">
<!-- We don't want to display label in edit mode, unless mailing is in sending or done state (where filter will be readonly) -->
<label for="mailing_filter_id" string="Filter" class="oe_read_only me-4"
attrs="{'invisible': ['|', ('state', 'in', ('sending', 'done')), ('mailing_filter_id', '=', False)]}"/>
<label for="mailing_filter_id" string="Filter" class="me-4"
attrs="{'invisible': ['|', ('state', 'not in', ('sending', 'done')), ('mailing_filter_id', '=', False)]}"/>
<div invisible="mailing_on_mailing_list" class="col-md-auto o_mailing_filter_width">
<field name="mailing_filter_id" placeholder="Reload a favorite filter"
class="w-auto" widget="mailing_filter"
class="o_mailing_filter_readonly_width" widget="mailing_filter"
options="{'no_create': 1, 'no_open': 1, 'domain_field': 'mailing_domain', 'model_field': 'mailing_model_id'}"
attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
readonly="state in ('sending', 'done')"/>
</div>
<field name="mailing_filter_count" invisible="1"/>
<field name="mailing_filter_domain" invisible="1"/>
</div>
<field name="mailing_model_name" invisible="1"/>
<field name="mailing_on_mailing_list" invisible="1"/>
<field name="mailing_model_real" invisible="1"/>
<div class="w-lg-50" attrs="{'invisible': [('mailing_model_name', '=', 'mailing.list')]}">
<field name="mailing_domain" widget="domain" options="{'model': 'mailing_model_real'}"
attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
</div>
<field name="mailing_domain" widget="domain"
options="{'model': 'mailing_model_real', 'foldable': true}"
invisible="mailing_on_mailing_list"
readonly="state in ('sending', 'done')"/>
</div>
</group>
<notebook>
<page string="Mail Body" name="mail_body">
<div class="position-relative">
<div class="mt-n2">
<field name="body_arch" class="o_mail_body" widget="mass_mailing_html"
iframeHtmlClass="o_mass_mailing_iframe"
options="{
'snippets': 'mass_mailing.email_designer_snippets',
'cssEdit': 'mass_mailing.iframe_css_assets_edit',
'inline-field': 'body_html',
'dynamic_placeholder': true,
'cssReadonly': 'mass_mailing.iframe_css_assets_edit'
}" attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
</div>
<field name="body_arch" class="o_mail_body_mailing" widget="mass_mailing_html"
options="{
'inline_field': 'body_html',
'dynamic_placeholder': true,
'dynamic_placeholder_model_reference_field': 'mailing_model_real',
}" readonly="state in ('sending', 'done')"/>
<field name="body_html" invisible="1" required="body_arch"/>
<field name="is_body_empty" invisible="1"/>
<div class="o_view_nocontent oe_read_only" attrs="{'invisible': ['|', ('is_body_empty', '=', False), ('state', 'in', ('sending', 'done'))]}">
<div class="o_nocontent_help">
<p class="o_view_nocontent_smiling_face">
This mailing has no selected design (yet!).
</p>
</div>
</div>
</div>
</page>
<page string="A/B Tests" name="ab_testing">
@ -262,42 +275,45 @@
<group>
<label for="ab_testing_enabled"/>
<span class="d-flex">
<field name="ab_testing_enabled" attrs="{'readonly': [('state', '!=', 'draft')]}" force_save="1"/>
<span class="d-flex" attrs="{'invisible': [('ab_testing_enabled', '=', False)]}">
<field name="ab_testing_enabled" readonly="state != 'draft'" force_save="1"/>
<span class="d-flex" invisible="not ab_testing_enabled">
on <field name="ab_testing_pc" class="mx-1 text-center"
attrs="{'readonly': [('state', '!=', 'draft')]}"/> %
readonly="state != 'draft'"/> %
</span>
</span>
<field name="ab_testing_winner_selection"
attrs="{'required': [('ab_testing_enabled', '=', True), ('mailing_type', '=', 'mail')], 'invisible': ['|', ('ab_testing_enabled', '=', False), ('mailing_type', '!=', 'mail')], 'readonly': [('state', '!=', 'draft')]}"/>
invisible="not ab_testing_enabled or mailing_type != 'mail'"
readonly="state != 'draft'"
required="ab_testing_enabled and mailing_type == 'mail'"/>
<field name="ab_testing_schedule_datetime"
attrs="{'required': [('ab_testing_enabled', '=', True), ('ab_testing_winner_selection', '!=', 'manual')], 'readonly': ['|', ('ab_testing_enabled', '=', False), ('state', '!=', 'draft')], 'invisible': ['|', ('ab_testing_enabled', '=', False), ('ab_testing_winner_selection', '=', 'manual')]}"/>
invisible="not ab_testing_enabled or ab_testing_winner_selection == 'manual'"
readonly="not ab_testing_enabled or state != 'draft'"
required="ab_testing_enabled and ab_testing_winner_selection != 'manual'"/>
<field name="is_ab_test_sent" invisible="1"/>
</group>
<div>
<field name="ab_testing_mailings_count" invisible="1"/>
<field name="ab_testing_completed" invisible="1"/>
<field name="ab_testing_description" nolabel="1"/>
<div attrs="{'invisible': ['|', ('ab_testing_mailings_count', '&lt;', 2), ('ab_testing_enabled', '=', False)]}">
<div id="mailing_form_ab_buttons" invisible="ab_testing_mailings_count &lt; 2 or not ab_testing_enabled">
<button name="action_compare_versions" type="object" class="btn btn-link d-block">
<i class="fa fa-bar-chart"/> Compare Version
</button>
<button name="action_duplicate" type="object" class="btn btn-link d-block" attrs="{'invisible': [('ab_testing_completed', '=', True)]}">
<button name="action_duplicate" type="object" class="btn btn-link d-block" invisible="ab_testing_completed">
<i class="fa fa-copy"/> Create an Alternative
</button>
<button name="action_send_winner_mailing" type="object" class="btn btn-link d-block" attrs="{'invisible': [('ab_testing_completed', '=', True)]}">
<i class="fa fa-envelope"/> <span name="ab_test_manual" attrs="{'invisible': [('ab_testing_winner_selection', '!=', 'manual')]}">
Send this version to remaining recipients
</span> <span name="ab_test_auto" attrs="{'invisible': [('ab_testing_winner_selection', '=', 'manual')]}">
<button name="action_send_winner_mailing" type="object" class="btn btn-link d-block" invisible="not is_ab_test_sent or ab_testing_completed or ab_testing_winner_selection == 'manual'">
<i class="fa fa-envelope"/><span name="ab_test_auto">
Send Winner Now
</span>
</button>
<button name="action_select_as_winner" type="object" class="btn btn-link d-block"
attrs="{'invisible': ['|', ('ab_testing_completed', '!=', False), ('ab_testing_winner_selection', '!=', 'manual')]}">
invisible="ab_testing_completed or ab_testing_winner_selection != 'manual'">
<i class="fa fa-envelope"/> Send this as winner
</button>
</div>
<button name="action_duplicate" type="object" class="btn btn-primary"
attrs="{'invisible': ['|', ('ab_testing_mailings_count', '&gt;=', 2), ('ab_testing_enabled', '=', False)]}">
invisible="ab_testing_mailings_count &gt;= 2 or not ab_testing_enabled">
Create an Alternative Version
</button>
</div>
@ -305,285 +321,120 @@
</page>
<page string="Settings" name="settings">
<group>
<group string="Email Content" name="email_content" attrs="{'invisible': [('mailing_type', '!=', 'mail')]}">
<group string="Email Content" name="email_content" invisible="mailing_type != 'mail'">
<field class="o_text_overflow" name="preview" string="Preview Text"
options="{'dynamic_placeholder': true}"
attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"
options="{'dynamic_placeholder': true, 'dynamic_placeholder_model_reference_field': 'mailing_model_real'}"
readonly="state in ('sending', 'done')"
widget="char_emojis" placeholder="e.g. Check it out before it's too late!"/>
<field name="email_from" attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
<field name="email_from" readonly="state in ('sending', 'done')"/>
<label for="reply_to"/>
<div name="reply_to_details">
<field name="reply_to_mode" widget="radio"
attrs="{
'invisible': [('mailing_model_name', 'in', ['mailing.contact', 'res.partner', 'mailing.list'])],
'readonly': [('state', 'in', ('sending', 'done'))]
}"/>
invisible="mailing_model_name in ['mailing.contact', 'res.partner', 'mailing.list']"
readonly="state in ('sending', 'done')"/>
<field name="reply_to"
attrs="{
'required': [('reply_to_mode', '=', 'new')],
'invisible': [('reply_to_mode', '=', 'update')],
'readonly': [('state', 'in', ('sending', 'done'))]
}"/>
invisible="reply_to_mode == 'update'"
readonly="state in ('sending', 'done')"
required="reply_to_mode == 'new'"/>
<div style="margin-top:-5px">
<small class="oe_edit_only text-muted mb-2"
style="font-size:74%"
attrs="{'invisible': ['|', ('reply_to_mode', '=', 'update'), ('mailing_model_name', 'in', ['mailing.contact', 'res.partner', 'mailing.list'])],}">
invisible="reply_to_mode == 'update' or mailing_model_name in ['mailing.contact', 'res.partner', 'mailing.list']">
To track replies, this address must belong to this database.
</small>
</div>
</div>
<label for="attachment_ids"/>
<div name="attachment_ids_details">
<field name="attachment_ids" widget="many2many_binary" string="Attach a file" class="oe_inline"
attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
<field name="attachment_ids" widget="many2many_binary" string="Attach a file"
readonly="state in ('sending', 'done')"/>
</div>
</group>
<group string="Tracking">
<field name="campaign_id"
string="Campaign"
groups="mass_mailing.group_mass_mailing_campaign"
options="{'create_name_field': 'title', 'always_reload': True}"
attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
options="{'create_name_field': 'title'}"
readonly="state in ('sending', 'done')"/>
<field name="medium_id"
string="Medium"
required="True"
groups="base.group_no_one"
attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
required="True"
readonly="state in ('sending', 'done')"/>
<field name="source_id"
string="Source"
readonly="1"
required="False"
class="o_text_overflow"
groups="base.group_no_one"
attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
readonly="1"
required="False"/>
<field name="user_id" widget="many2one_avatar_user"
domain="[('share', '=', False)]"/>
</group>
<group string="Advanced" groups="base.group_no_one">
<field name="mail_server_available" invisible="1"/>
<field name="name" required="False" string="Name" attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
<field name="mail_server_id" attrs="{'readonly': [('state', 'in', ('sending', 'done'))],
'invisible': [('mail_server_available', '=', False)]}"/>
<field name="keep_archives" attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
<field name="name" string="Name" required="False" readonly="state in ('sending', 'done')"/>
<field name="mail_server_id" invisible="not mail_server_available" readonly="state in ('sending', 'done')"/>
<field name="keep_archives" readonly="state in ('sending', 'done')"/>
<!-- Not using a dedicated server and being set means generic sending, won't allow disabling it. -->
<field name="use_exclusion_list" invisible="not mail_server_id and use_exclusion_list" readonly="state != 'draft'"/>
</group>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" groups="base.group_user"/>
<field name="message_ids"/>
<field name="activity_ids"/>
</div>
<chatter/>
</form>
</field>
</record>
<!-- Inherited form view for mass mailing's form specifically -->
<record model="ir.ui.view" id="mailing_mailing_view_form_full_width">
<field name="name">mailing.mailing.view.form.full.width</field>
<field name="inherit_id" ref="mass_mailing.view_mail_mass_mailing_form"/>
<field name="mode">primary</field>
<field name="model">mailing.mailing</field>
<field name="arch" type="xml">
<xpath expr="//form" position="attributes">
<attribute name="js_class">mailing_mailing_view_form_full_width</attribute>
<attribute name="class">o_form_view o_mass_mailing_mailing_form o_mass_mailing_form_full_width</attribute>
</xpath>
<field name="state" position="before">
<xpath expr="//div[hasclass('alert-info')]" position="move"/>
</field>
<xpath expr="//div[hasclass('alert-info')]" position="attributes">
<attribute name="attrs">{'invisible': ['|',('state', '=', 'draft'),'&amp;',('state', '!=', 'in_queue'),('failed', '=', 0)]}</attribute>
</xpath>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_canceled')]" position="replace"/>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_sent')]" position="replace"/>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_failed')]//span[@name='failed_text']" position="replace">
<span name="failed_text">email(s) not sent.</span>
</xpath>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_scheduled')]" position="attributes">
<attribute name="attrs">{'invisible': [('state', '!=', 'in_queue')]}</attribute>
</xpath>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_scheduled')]/button" position="attributes">
<attribute name="attrs">{'invisible': [('scheduled', '=', 0)]}</attribute>
</xpath>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_scheduled')]//span[@name='scheduled_text']" position="replace">
<span name="scheduled_text">email(s) scheduled for </span>
</xpath>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_scheduled')]/button" position="after">
</xpath>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_in_queue')]/strong/span[@name='next_departure_text']" position="attributes">
<attribute name="attrs">{'invisible': [('scheduled', '!=', 0)]}</attribute>
</xpath>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_scheduled')]" position="inside">
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_in_queue')]/strong" position="move"/>
</xpath>
<xpath expr="//div[hasclass('alert-info')]/div[hasclass('o_mails_in_queue')]" position="replace"/>
<xpath expr="//sheet" position="before">
<xpath expr="//div[hasclass('oe_button_box')]" position="move"/>
<xpath expr="//widget[@name='web_ribbon']" position="move"/>
<xpath expr="//group[hasclass('o_mass_mailing_mailing_group')]" position="move"/>
<xpath expr="//notebook" position="move"/>
</xpath>
<xpath expr="//div[hasclass('oe_button_box')]" position="inside">
<button name="action_view_traces_sent"
attrs="{'invisible': [('state', 'in', ('draft','test'))]}"
type="object" class="oe_stat_button" icon="fa-paper-plane">
<field name="sent" widget="statinfo" string="Sent"/>
</button>
<button name="action_view_traces_canceled"
attrs="{'invisible': [('state', 'in', ('draft','test'))]}"
type="object" class="oe_stat_button" icon="fa-paper-plane-o">
<field name="canceled" widget="statinfo" string="Ignored"/>
</button>
</xpath>
<xpath expr="//notebook" position="inside">
<page string="Chat" name="chat"/>
</xpath>
<xpath expr="//notebook/page[@name='chat']" position="inside">
<xpath expr="//div[hasclass('oe_chatter')]" position="move"/>
</xpath>
<xpath expr="//div[hasclass('oe_chatter')]" position="attributes">
<attribute name="class" remove="o-aside" add="o-full-width" separator=" "/>
</xpath>
<xpath expr="//notebook/page[@name='mail_body']//field[@name='body_arch']" position="attributes">
<attribute name="iframeHtmlClass">o_mass_mailing_iframe</attribute>
</xpath>
<xpath expr="//notebook/page[@name='mail_body']" position="after">
<!-- test_01_mass_mailing_editor_tour -->
<field name="body_html" invisible="1"/>
<page string="Mail Debug" name="mail_debug" groups="base.group_no_one">
<div class="position-relative">
<div class="mt-n2">
<field name="body_html" class="o_mail_body" widget="html"
readonly="True" force_save="1" options="{'cssReadonly': 'mass_mailing.iframe_css_assets_readonly'}"/>
</div>
<field name="is_body_empty" invisible="1"/>
<div class="o_view_nocontent oe_read_only" attrs="{'invisible': ['|', ('is_body_empty', '=', False), ('state', 'in', ('sending', 'done'))]}">
<div class="o_nocontent_help">
<p class="o_view_nocontent_smiling_face">
This mailing has no selected design (yet!).
</p>
</div>
</div>
</div>
</page>
</xpath>
<xpath expr="//sheet" position="replace"/>
</field>
</record>
<record model="ir.ui.view" id="view_mail_mass_mailing_kanban">
<field name="name">mailing.mailing.kanban</field>
<field name="model">mailing.mailing</field>
<field name="arch" type="xml">
<kanban default_group_by="state" quick_create="false" sample="1">
<field name='state' readonly="1"/>
<field name='email_from' readonly="1"/>
<field name='color'/>
<field name='user_id'/>
<field name='expected'/>
<field name='failed'/>
<field name='total'/>
<field name='mailing_model_id'/>
<field name='mailing_model_name'/>
<field name='sent_date'/>
<field name='schedule_date'/>
<kanban highlight_color="color" default_group_by="state" quick_create="false" sample="1">
<field name='mailing_on_mailing_list'/>
<field name='next_departure'/>
<field name='active'/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="{{!selection_mode ? 'oe_kanban_color_' + kanban_getcolor(record.color.raw_value) : ''}} oe_kanban_card oe_kanban_global_click oe_kanban_mass_mailing">
<div class="o_dropdown_kanban dropdown" t-if="!selection_mode">
<a role="button" class="dropdown-toggle o-no-caret btn" data-bs-toggle="dropdown" href="#" data-bs-display="static" aria-label="Dropdown menu" title="Dropdown menu">
<span class="fa fa-ellipsis-v"/>
</a>
<div class="dropdown-menu" role="menu">
<ul class="oe_kanban_colorpicker" data-field="color"/>
<t t-if="widget.deletable">
<a role="menuitem" type="delete" class="dropdown-item">Delete</a>
</t>
<a role="menuitem" class="dropdown-item o_kanban_mailing_active" name="toggle_active" type="object">
<t t-if="record.active.raw_value">Archive</t>
<t t-if="!record.active.raw_value">Restore</t>
</a>
</div>
</div>
<div class="oe_kanban_content">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<div class="row" attrs="{'invisible': [('sent_date', '=', False)]}">
<h3 class="my-1 col-8 o_text_overflow">
<field name="subject"/>
</h3>
<div class="progress border col-3 px-0 mt-2" style="background-color: inherit; height:12px;">
<div class="progress-bar" role="progressbar"
aria-valuemin="0"
t-att-aria-valuenow="record.delivered.raw_value"
t-att-aria-valuemax="record.expected.raw_value"
t-attf-style="width: #{record.delivered.raw_value * 100 / record.expected.raw_value}%"/>
</div>
</div>
<h3 class="my-1" attrs="{'invisible': [('sent_date', '!=', False)]}">
<field name="subject"/>
</h3>
<field name="mailing_type" invisible="1"/>
<div class="o_kanban_record_subtitle" attrs="{'invisible': [('sent_date', '=', False)]}">
<h5 style="display: inline;">
<field name="campaign_id" groups="mass_mailing.group_mass_mailing_campaign"/>
</h5>
</div>
</div>
</div>
<div class="o_kanban_record_body" t-if="!selection_mode" attrs="{'invisible': [('sent_date', '=', False), ('schedule_date', '=', False), ('state', '!=', 'in_queue')]}">
<div>
<span attrs="{'invisible': [('sent_date', '=', False)]}" class="me-1"><b><field name="delivered"/> / <field name="expected"/></b> Delivered to</span>
<span attrs="{'invisible': [('sent_date', '!=', False)]}" class="me-1"><b><field name='total'/></b></span>
<field name='mailing_model_id' attrs="{'invisible': [('mailing_model_name','=','mailing.list')]}"/>
<span attrs="{'invisible': [('mailing_model_name','!=','mailing.list')]}">Mailing Contact</span>
</div>
<div attrs="{'invisible': [('sent_date', '=', False)]}" class="d-flex justify-content-between">
<div name="stat_opened">
<b><field name="opened_ratio" />%</b> Opened
</div>
<div name="stat_replied">
<b><field name="replied_ratio" />%</b> Replied
</div>
<div name="stat_clicks">
<b><field name="clicks_ratio" />%</b> Clicks
</div>
</div>
</div>
</div>
<div name="div_responsible_avatar" class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left">
<span attrs="{'invisible': [('sent_date', '=', False)]}"
t-attf-title="Sent on #{record.sent_date.value}" class="d-inline-flex">
<span class="fa fa-calendar-check-o me-2 small my-auto" aria-label="Sent date"/>
<span class="align-self-baseline"><field name="sent_date" widget="date"/></span>
</span>
<span attrs="{'invisible': [('schedule_date', '=', False)]}"
t-attf-title="Scheduled on #{record.schedule_date.value}" class="d-inline-flex">
<span class="fa fa-hourglass-half me-2 small my-auto" aria-label="Scheduled date"/>
<span class="align-self-baseline"><field name="schedule_date" widget="date"/></span>
</span>
<span attrs="{'invisible': ['|', '|', ('sent_date', '!=', False), ('schedule_date', '!=', False), ('state', '=', 'in_queue')]}"
class="clearfix">
<b><field name='total' class="me-1"/></b>
<field name='mailing_model_id' attrs="{'invisible': [('mailing_model_name','=','mailing.list')]}"/>
<span attrs="{'invisible': [('mailing_model_name','!=','mailing.list')]}">Mailing Contact</span>
</span>
<span attrs="{'invisible': ['|', '|', ('schedule_date', '!=', False), ('state', '!=', 'in_queue'), ('next_departure', '=', False)]}"
t-attf-title="Scheduled on #{record.next_departure.value}" class="d-inline-flex">
<span class="fa fa-hourglass-o me-2 small my-auto" aria-label="Scheduled date"/>
<span class="align-self-baseline">Next Batch</span>
</span>
</div>
<div class="oe_kanban_bottom_right">
<field name="user_id" widget="many2one_avatar_user"/>
</div>
</div>
<t t-name="menu" t-if="!selection_mode">
<field name="color" widget="kanban_color_picker"/>
<t t-if="widget.deletable">
<a role="menuitem" type="delete" class="dropdown-item">Delete</a>
</t>
<a role="menuitem" type="object" name="action_archive" class="dropdown-item o_kanban_mailing_active" t-if="record.active.raw_value">Archive</a>
<a role="menuitem" type="object" name="action_unarchive" class="dropdown-item o_kanban_mailing_active" t-if="!record.active.raw_value">Restore</a>
</t>
<t t-name="card">
<field name="subject" class="my-1 text-truncate fs-3 fw-bold"/>
<field name="campaign_id" invisible="not sent_date" class="fw-bold fs-5" groups="mass_mailing.group_mass_mailing_campaign"/>
<div>
<i class="fa fa-bullseye me-2" role="img" aria-label="Lead/Opportunity"/>
<field name='mailing_model_id' invisible="mailing_on_mailing_list"/>
<span invisible="not mailing_on_mailing_list">Mailing Contact</span>
</div>
<footer class="pt-0">
<div>
<span invisible="not sent_date" t-attf-title="Sent on #{record.sent_date.value}">
<span class="fa fa-paper-plane me-2 small my-auto" aria-label="Sent date"/>
<field name="sent_date"/>
</span>
<span invisible="not schedule_date" t-attf-title="Scheduled on #{record.schedule_date.value}">
<span class="fa fa-hourglass-half me-2 small my-auto" aria-label="Scheduled date"/>
<field name="schedule_date" readonly="state not in ['draft', 'in_queue']"/>
</span>
<span invisible="sent_date or schedule_date or state == 'in_queue'">
<field name='total' class="me-1 fw-bold"/>
<field name='mailing_model_id' invisible="mailing_on_mailing_list"/>
<span invisible="not mailing_on_mailing_list">Mailing Contact</span>
</span>
<span invisible="schedule_date or state != 'in_queue' or not next_departure"
t-attf-title="Scheduled on #{record.next_departure.value}" >
<span class="fa fa-hourglass-o me-2 small my-auto" aria-label="Scheduled date"/>
<span>Next Batch</span>
</span>
</div>
<field name="user_id" widget="many2one_avatar_user" class="ms-auto"/>
</footer>
</t>
</templates>
</kanban>
@ -594,7 +445,7 @@
<field name="name">mailing.mailing.view.calendar</field>
<field name="model">mailing.mailing</field>
<field name="arch" type="xml">
<calendar date_start="calendar_date" string="Mailings" hide_time="true" mode="month" color="state" quick_add="False">
<calendar date_start="calendar_date" string="Mailings" hide_time="true" mode="month" color="state" quick_create="0">
<field name="mailing_model_id" string="Recipient" options="{'no_open': True}"/>
<field name="user_id" filters="1" invisible="1"/>
<field name="state" filters="1" invisible="1"/>
@ -602,21 +453,11 @@
</field>
</record>
<record id="view_mail_mass_mailing_graph" model="ir.ui.view">
<field name="name">mailing.mailing.graph</field>
<field name="model">mailing.mailing</field>
<field name="arch" type="xml">
<graph string="Mailing" sample="1">
<field name="state"/>
<field name="color" invisible="1"/>
</graph>
</field>
</record>
<record id="mailing_mailing_action_mail" model="ir.actions.act_window">
<field name="name">Mailings</field>
<field name="path">email-marketing</field>
<field name="res_model">mailing.mailing</field>
<field name="view_mode">tree,kanban,form,calendar,graph</field>
<field name="view_mode">list,kanban,form,calendar</field>
<field name="domain">[('mailing_type', '=', 'mail')]</field>
<field name="context">{
'search_default_assigned_to_me': 1,
@ -634,7 +475,7 @@
<record id="mailing_mailing_action_mail_fullwidth_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="0"/>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
<field name="act_window_id" ref="mass_mailing.mailing_mailing_action_mail"/>
</record>
<record id="mailing_mailing_action_mail_fullwidth_kanban" model="ir.actions.act_window.view">
@ -642,27 +483,16 @@
<field name="view_mode">kanban</field>
<field name="act_window_id" ref="mass_mailing.mailing_mailing_action_mail"/>
</record>
<record id="mailing_mailing_action_mail_fullwidth_form" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mass_mailing.mailing_mailing_view_form_full_width"/>
<field name="act_window_id" ref="mass_mailing.mailing_mailing_action_mail"/>
</record>
<record id="mailing_mailing_action_mail_fullwidth_calendar" model="ir.actions.act_window.view">
<field name="sequence" eval="3"/>
<field name="view_mode">calendar</field>
<field name="act_window_id" ref="mass_mailing.mailing_mailing_action_mail"/>
</record>
<record id="mailing_mailing_action_mail_fullwidth_graph" model="ir.actions.act_window.view">
<field name="sequence" eval="4"/>
<field name="view_mode">graph</field>
<field name="act_window_id" ref="mass_mailing.mailing_mailing_action_mail"/>
</record>
<record id="action_view_mass_mailings_from_campaign" model="ir.actions.act_window">
<field name="name">Mailings</field>
<field name="res_model">mailing.mailing</field>
<field name="view_mode">kanban,tree,form,calendar</field>
<field name="view_mode">kanban,list,form,calendar</field>
<field name="context">{
'search_default_assigned_to_me': 1,
'search_default_campaign_id': [active_id],
@ -684,7 +514,7 @@
<record id="action_create_mass_mailings_from_campaign" model="ir.actions.act_window">
<field name="name">Mailings</field>
<field name="res_model">mailing.mailing</field>
<field name="view_mode">form,kanban,tree</field>
<field name="view_mode">form,kanban,list</field>
<field name="context">{
'search_default_assigned_to_me': 1,
'search_default_campaign_id': [active_id],

View file

@ -4,7 +4,7 @@
<menuitem name="Email Marketing"
id="mass_mailing_menu_root"
sequence="115"
web_icon="mass_mailing,static/description/icon.svg"
web_icon="mass_mailing,static/description/icon.png"
groups="mass_mailing.group_mass_mailing_user"/>
<!-- Mailings -->
@ -42,8 +42,17 @@
<menuitem name="Reporting"
id="menu_mass_mailing_report"
sequence="90"
parent="mass_mailing_menu_root"
parent="mass_mailing_menu_root"/>
<menuitem name="Mass Mailing Analysis"
id="mailing_menu_report_mailing"
sequence="1"
parent="menu_mass_mailing_report"
action="mailing_trace_report_action_mail"/>
<menuitem name="Opt-Out Report"
id="mailing_menu_report_subscribe_reason"
sequence="2"
parent="menu_mass_mailing_report"
action="mailing_subscription_action_report_optout"/>
<!-- Configuration -->
<menuitem name="Configuration"
@ -82,6 +91,12 @@
action="mail.mail_blacklist_action"
parent="mass_mailing_configuration"
sequence="20"/>
<!-- Configuration / Optout reasons -->
<menuitem id="mailing_subscription_optout_menu"
name="Optout Reasons"
action="mailing_subscription_optout_action"
sequence="21"
parent="mass_mailing_configuration"/>
<!-- Configuration / Favorite Filters -->
<menuitem id="mailing_filter_menu_action"
action="mailing_filter_action"

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="mass_mailing.preview_content_mobile">
<html>
<head>
<t t-call-assets="mass_mailing.assets_iframe_style" t-js="False"></t>
</head>
<body></body>
</html>
</template>
</odoo>

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="mailing_subscription_optout_view_form" model="ir.ui.view">
<field name="name">mailing.subscription.optout.view.form</field>
<field name="model">mailing.subscription.optout</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="is_feedback"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="mailing_subscription_optout_view_tree" model="ir.ui.view">
<field name="name">mailing.subscription.optout.view.list</field>
<field name="model">mailing.subscription.optout</field>
<field name="arch" type="xml">
<list editable="bottom">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="is_feedback" string="Allow Feedback" widget="boolean_toggle"/>
</list>
</field>
</record>
<record id="mailing_subscription_optout_view_search" model="ir.ui.view">
<field name="name">mailing.subscription.optout.view.search</field>
<field name="model">mailing.subscription.optout</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
</search>
</field>
</record>
<record id="mailing_subscription_optout_action" model="ir.actions.act_window">
<field name="name">Optout Reasons</field>
<field name="res_model">mailing.subscription.optout</field>
<field name="view_mode">list,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No data yet.
</p>
</field>
</record>
</odoo>

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="mailing_subscription_view_form" model="ir.ui.view">
<field name="name">mailing.subscription.view.form</field>
<field name="model">mailing.subscription</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<form string="Mailing List Subscription">
<sheet>
<group>
<field name="list_id"/>
<field name="is_blacklisted" invisible="1"/>
<label for="contact_id" class="oe_inline"/>
<div class="o_row o_row_readonly">
<i class="fa fa-ban text-danger" role="img" title="This email is blacklisted for mass mailings"
aria-label="Blacklisted" invisible="not is_blacklisted" groups="base.group_user"></i>
<field name="contact_id"/>
</div>
<field name="create_date" string="Subscription Date"/>
<field name="opt_out_datetime" readonly="1"/>
<field name="opt_out"/>
<field name="opt_out_reason_id"/>
<field name="message_bounce" readonly="1"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="mailing_subscription_view_graph" model="ir.ui.view">
<field name="name">mailing.subscription.view.graph</field>
<field name="model">mailing.subscription</field>
<field name="arch" type="xml">
<graph js_class="subscription_graph" string="Mailing List Subscriptions" type="pie" sample="1">
<field name="opt_out_datetime" interval="week"/>
<!-- Hide the bounce measure from the measures dropdown -->
<field name="message_bounce" type="measure" invisible="1"/>
</graph>
</field>
</record>
<record id="mailing_subscription_view_pivot" model="ir.ui.view">
<field name="name">mailing.subscription.view.pivot</field>
<field name="model">mailing.subscription</field>
<field name="arch" type="xml">
<pivot string="Mailing List Subscriptions" sample="1">
<field name="opt_out_datetime" interval="week" type="row"/>
<field name="list_id" type="row"/>
</pivot>
</field>
</record>
<record id="mailing_subscription_view_tree" model="ir.ui.view">
<field name="name">mailing.subscription.view.list</field>
<field name="model">mailing.subscription</field>
<field name="arch" type="xml">
<list string="Mailing List Subscriptions" create="0" type="object" action="open_mailing_contact">
<field name="create_date" string="Subscription Date"/>
<field name="contact_id" string="Mailing Contact"/>
<field name="is_blacklisted" optional="hide"/>
<field name="list_id"/>
<field name="opt_out_datetime" readonly="1"/>
<field name="opt_out_reason_id"/>
<field name="message_bounce" optional="hide" sum="Total"/>
</list>
</field>
</record>
<record id="mailing_subscription_view_search" model="ir.ui.view">
<field name="name">mailing.subscription.view.search</field>
<field name="model">mailing.subscription</field>
<field name="arch" type="xml">
<search string="Mailing List Subscriptions">
<field name="list_id"/>
<field name="opt_out_reason_id"/>
<field name="contact_id"/>
<field name="opt_out_datetime"/>
<filter string="Subscription Date" name="filter_create_date" date="create_date" default_period="month"/>
<separator/>
<filter string="Unsubscription Date" name="filter_opt_out_datetime" date="opt_out_datetime" default_period="month"/>
<group>
<filter string="Unsubscription Date" name="group_by_opt_out_datetime" context="{'group_by': 'opt_out_datetime:week'}"/>
<filter string="Mailing List" name="group_by_list_id" context="{'group_by': 'list_id'}"/>
<filter string="Reason" name="group_by_opt_out_reason_id" context="{'group_by': 'opt_out_reason_id'}"/>
</group>
</search>
</field>
</record>
<record id="mailing_subscription_action_report_optout" model="ir.actions.act_window">
<field name="name">Opt-Out Report</field>
<field name="res_model">mailing.subscription</field>
<field name="view_mode">graph,pivot,list,form</field>
<field name="context">{
'search_default_group_by_opt_out_reason_id': 1,
}</field>
<field name="domain">[('opt_out', '=', True)]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No data yet.
</p><p>
Come back later to discover why contacts unsubscribe.<br/>
<a name="%(mass_mailing.mailing_subscription_optout_action)d" type="action" class="text-primary">
<i class="oi oi-arrow-right"/> Configure Opt-out Reasons
</a>
</p>
</field>
</record>
</odoo>

View file

@ -10,7 +10,7 @@
<p>
Mailing Reports have been turned off for all users. <br/>
If needed, they can be turned back on from the
<a t-if="menu_id" t-attf-href="/web#menu_id=#{menu_id}">
<a t-if="menu_id" t-attf-href="/odoo?menu_id={{menu_id}}">
Settings Menu.
</a>
<t t-else="">
@ -24,8 +24,33 @@
</t>
</template>
<!-- Template used for '/view' generic dummy placeholder -->
<template id="mailing_view_generic" name="View in Browser">
<t t-call="web.frontend_layout">
<body class="bg-white o_mailing_portal_body">
<header>
<title>Odoo</title>
</header>
<div id="wrap" class="oe_structure oe_empty"/>
<main class="h-100 align-content-center">
<div class="o_view_nocontent">
<div class="justify-content-center o_nocontent_help col-6">
<img src="/web/static/img/smiling_face.svg"/>
<p class="o_view_nocontent_smiling_face row justify-content-center col-6 offset-3 pt-3">
Nothing to see yet!
</p>
<div class="row justify-content-center col-6 offset-3 pb-5">
Send a test version of your mailing to preview its design
</div>
</div>
</div>
</main>
</body>
</t>
</template>
<!-- Dummy layout to "view" a template content (html) -->
<template id="view" name="Browser View">
<template id="mailing_view" name="Browser View">
&lt;!DOCTYPE html&gt;
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

View file

@ -1,119 +1,212 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="unsubscribe">
<div class="container o_unsubscribe_form">
<div class="row">
<form action="/mail/mailing/unsubscribe" method="POST" id="unsubscribe_form" class="col-lg-6 offset-lg-3 mt-4">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<input type="hidden" name="email" t-att-value="email"/>
<input type="hidden" name="mailing_id" t-att-value="mailing_id"/>
<input type="hidden" name="res_id" t-att-value="res_id"/>
<input type="hidden" name="unsubscribed_list" t-att-value="unsubscribed_list"/>
<div>
<t t-if="contacts">
<div id="info_state" class="alert alert-success" role="status">
<div id="subscription_info"></div>
<div id="div_feedback">
<p>We would appreciate if you provide feedback about why you updated<br/>your subscriptions</p>
<textarea class="form-control" name="opt_out_feedback" cols="60" rows="3"></textarea>
<br/>
<div class="btn btn-primary text-start" id="button_feedback">Send</div>
</div>
<template id="page_mailing_confirm_unsubscribe">
<t t-call="mass_mailing.layout">
<div class="container o_unsubscribe_form">
<div class="row">
<div class="col-lg-6 offset-lg-3 mt-4">
<div id="info_state" class="alert alert-success">
<div class="text-center">
<form action="/mailing/confirm_unsubscribe" method="POST">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<input type="hidden" name="mailing_id" t-att-value="mailing_id"/>
<input type="hidden" name="document_id" t-att-value="document_id"/>
<input type="hidden" name="email" t-att-value="email"/>
<input type="hidden" name="hash_token" t-att-value="hash_token"/>
<p t-if="unsubscribed_lists">
Are you sure you want to unsubscribe from the mailing list "<span t-out="unsubscribed_lists"/>"?
</p>
<p t-else="">
Are you sure you want to unsubscribe from our mailing list?
</p>
<button type="submit" class="btn btn-primary">Unsubscribe</button>
</form>
</div>
<h1 class="o_page_header">Mailing Subscriptions</h1>
<p>Choose your mailing subscriptions</p>
<div id="div_opt_out">
<ul class="list-group">
<t t-foreach="list_ids" t-as="list_id">
<t t-if="list_id.is_public == True">
<li class="list-group-item">
<input type="checkbox" name="contact_ids"
t-att-value="list_id['id']" t-att-checked="None if list_id['id'] in opt_out_list_ids else 'checked'"/>
<t t-esc="list_id.name"/>
<span t-if="list_id['id'] in opt_out_list_ids"
class="o_mailing_portal_list_unsubscribed">
Unsubscribed
</span>
</li>
</t>
</t>
</ul>
<div class="mb64 pt-3">
<div class="btn btn-link float-end pe-0 text-uppercase"
t-if="show_blacklist_button"
id="button_add_blacklist"
style="display:none">Blacklist Me</div>
<div class="btn btn-link float-end pe-0 text-uppercase"
id="button_remove_blacklist"
style="display:none">Come Back</div>
<button type="submit" id="send_form"
class="btn btn-primary">Update my subscriptions</button>
</div>
</div>
</t>
<t t-else="">
<div class="alert alert-info text-center" role="status">
<p>You are not subscribed to any of our mailing list.</p>
</div>
</t>
</div>
</form>
</div>
</div>
</template>
<template id="unsubscribed">
<div class="container o_unsubscribe_form">
<div class="row">
<input type="hidden" name="email" t-att-value="email"/>
<input type="hidden" name="mailing_id" t-att-value="mailing_id"/>
<input type="hidden" name="res_id" t-att-value="res_id"/>
<div id="div_blacklist" class="col-lg-6 offset-lg-3">
<h1 class="o_page_header">Mailing Subscriptions</h1>
<div id="subscription_info" class="alert alert-success text-center" role="status">
<p>You have been successfully <strong>unsubscribed</strong>!</p>
</div>
<div t-if="list_ids" class="alert alert-warning">
<p class="text-center">You were still subscribed to those newsletters. You will not receive any news from them anymore:</p>
<ul class="list-group mb-4">
<t t-foreach="list_ids" t-as="list_id">
<t t-if="list_id.is_public == True">
<li class="list-group-item bg-transparent">
<strong><t t-esc="list_id.name"/></strong>
</li>
</t>
</t>
</ul>
</div>
<div t-if="show_blacklist_button" class="mb64">
<div class="btn btn-link float-end"
id="button_add_blacklist"
style="display:none">Blacklist Me</div>
<div class="btn btn-link float-end"
id="button_remove_blacklist"
style="display:none">Come Back</div>
</div>
</div>
</div>
</div>
</t>
</template>
<template id="page_mailing_has_unsubscribed">
<t t-call="mass_mailing.layout">
<div class="container o_unsubscribe_form">
<div class="row">
<div class="col-lg-6 offset-lg-3 mt-4">
<div id="info_state" class="alert alert-success">
<div class="text-center">
<p>Successfully unsubscribed!</p>
<a t-att-href="settings_url" class="btn btn-primary">Manage Subscriptions</a>
</div>
</div>
</div>
</div>
</div>
</t>
</template>
<template id="page_mailing_unsubscribe" name="Unsubscribe">
<t t-call="mass_mailing.layout">
<t t-call="mass_mailing.unsubscribe_form"/>
</t>
</template>
<template id="unsubscribe_form">
<div id="o_mailing_portal_subscription"
class="container o_mailing_portal_body"
t-att-data-blocklist-enabled="blocklist_enabled"
t-att-data-blocklist-possible="blocklist_possible"
t-att-data-document-id="document_id"
t-att-data-feedback-enabled="feedback_enabled"
t-att-data-feedback-readonly="feedback_readonly"
t-att-data-hash-token="hash_token"
t-att-data-last-action="last_action"
t-att-data-email="email"
t-att-data-email-valid="email_valid"
t-att-data-is-blocklisted="is_blocklisted"
t-att-data-mailing-id="mailing_id">
<div class="row">
<div class="col-lg-6 offset-lg-3 mt-4">
<div id="o_mailing_subscription_form">
<form action="/mailing/list/update" method="POST">
<h1 class="o_page_header">Mailing Subscriptions</h1>
<div id="o_mailing_subscription_form_blocklisted"
t-att-class="'' if is_blocklisted else 'd-none'">
<p>
Your email is currently <strong>in our block list</strong>.
<t t-if="lists_optin">
You will not receive any news from those mailing lists you are a member of:
</t>
<t t-else="">
You will not hear from us anymore.
</t>
</p>
<ul class="list-group mb-4"
t-if="lists_optin">
<t t-foreach="lists_optin" t-as="mailing_list">
<li class="list-group-item d-flex align-items-center">
<strong>
<t t-if="mailing_list.is_public" t-esc="mailing_list.name"/>
<t t-else="">Mailing List #<t t-esc="mailing_list.id"/></t>
</strong>
</li>
</t>
</ul>
</div>
<div id="o_mailing_subscription_form_manage"
t-att-class="'d-none' if is_blocklisted else ''">
<p t-if="lists_optin + lists_optout">
Choose your mailing subscriptions
</p>
<ul id="o_mailing_subscription_form_lists"
t-if="lists_optin + lists_optout"
class="list-group">
<li t-foreach="(lists_optin + lists_optout)"
t-as="mailing_list"
class="list-group-item d-flex align-items-center"
t-if="mailing_list not in lists_optout or mailing_list.is_public">
<t t-set="title" t-value="mailing_list.name"/>
<input type="checkbox"
name="mailing_list_ids"
t-att-data-member="1"
t-att-disabled="'disabled' if is_blocklisted else None"
t-att-value="mailing_list.id"
t-att-checked="None if mailing_list in lists_optout else 'checked'"
t-att-title="title"/>
<span class="ms-1" t-out="title"/>
<span class="o_mailing_list_unsubscribed ms-auto">
<t t-if="mailing_list in lists_optout">
Not subscribed
</t>
<t t-else="">
Subscribed
</t>
</span>
</li>
</ul>
<p t-if="lists_public">
You may also be interested in
</p>
<ul id="o_mailing_subscription_form_lists_additional"
t-if="lists_public"
class="list-group">
<li t-foreach="lists_public"
t-as="mailing_list"
class="list-group-item">
<input type="checkbox"
name="mailing_list_ids"
t-att-disabled="'disabled' if is_blocklisted else None"
t-att-value="mailing_list.id"
t-att-title="mailing_list.name"/>
<span class="ms-1" t-out="mailing_list.name"/>
</li>
</ul>
<p t-if="not lists_optin and not lists_optout and not lists_public">
You are not subscribed to any of our mailing list.
</p>
</div>
<div id="o_mailing_subscription_blocklist"
class="d-flex align-items-center mb-4 pt-3">
<button type="submit" id="button_form_send"
t-att-disabled="'disabled' if is_blocklisted else None"
t-att-class="'btn btn-primary ' + ('' if lists_optin or lists_optout or lists_public else 'd-none')">
Apply changes
</button>
<div class="btn btn-link me-2 text-uppercase d-none"
t-if="blocklist_enabled and blocklist_possible"
id="button_blocklist_add">Exclude Me</div>
<div class="btn btn-link text-uppercase d-none"
id="button_blocklist_remove">Come Back</div>
<div id="o_mailing_subscription_update_info" class="d-none"/>
</div>
</form>
</div>
<div id="o_mailing_subscription_info"
class="mb-4"
role="status">
<t t-if="unsubscribed_name">
<h1 class="o_page_header">Successfully Unsubscribed</h1>
<span t-out="unsubscribed_name"/>
</t>
<div id="o_mailing_subscription_feedback"
t-att-class="'' if feedback_enabled else 'd-none'">
<form action="/mail/mailing/feedback" method="POST"
class="mt-3">
<p>
Please let us know why you updated your subscription.
</p>
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<fieldset>
<div class="form-check"
t-foreach="opt_out_reasons"
t-as="opt_out_reason">
<input class="form-check-input o_mailing_subscription_opt_out_reason"
type="radio"
name="opt_out_reason_id"
t-att-id="'opt_out_reason_id' + str(opt_out_reason.id)"
t-att-data-is-feedback="opt_out_reason.is_feedback"
t-att-value="opt_out_reason.id"/>
<label class="form-check-label"
t-att-for="'opt_out_reason_id' + str(opt_out_reason.id)"
t-out="opt_out_reason.name"/>
</div>
</fieldset>
<textarea class="form-control d-none" name="feedback" cols="60" rows="3"></textarea>
<div class="d-flex align-items-center mt-2">
<button type="submit" id="button_feedback"
class="btn btn-primary text-start me-2">Send</button>
<div id="o_mailing_subscription_feedback_info" class="d-none"/>
</div>
</form>
</div>
</div>
</div>
</div>
<div id="o_mailing_portal_subscription_editor" class="oe_structure oe_empty"/>
</div>
</template>
<template id="page_unsubscribe" name="Unsubscribe">
<t t-call="mass_mailing.layout">
<t t-call="mass_mailing.unsubscribe"/>
</t>
</template>
<template id="page_unsubscribed" name="Unsubscribed">
<t t-call="mass_mailing.layout">
<t t-call="mass_mailing.unsubscribed"/>
</t>
</template>
</odoo>

View file

@ -11,15 +11,17 @@
<field name="email"/>
<field name="mass_mailing_id"/>
<filter string="Scheduled" name="filter_scheduled" domain="[('trace_status', '=', 'outgoing')]"/>
<filter string="Canceled" name="filter_canceled" domain="[('trace_status', '=', 'cancel')]"/>
<filter string="Cancelled" name="filter_canceled" domain="[('trace_status', '=', 'cancel')]"/>
<filter string="Processing" name="filter_process" domain="[('trace_status', '=', 'process')]"/>
<filter string="Sent" name="filter_sent" domain="[('sent_datetime', '!=', False)]"/>
<filter string="Clicked" name="filter_clicked" domain="[('links_click_datetime', '!=', False)]"/>
<filter string="Delivered" name="filter_delivered" domain="[('sent_datetime', '!=', False), ('trace_status', 'not in', ['error', 'cancel'])]"/>
<filter string="Delivered" name="filter_delivered" domain="[('sent_datetime', '!=', False), ('trace_status', 'not in', ['error', 'cancel', 'process', 'pending'])]"/>
<filter string="Opened" name="filter_opened" domain="[('trace_status', 'in', ['open', 'reply'])]"/>
<filter string="Replied" name="filter_replied" domain="[('trace_status', '=', 'reply')]"/>
<filter string="Bounced" name="filter_bounced" domain="[('trace_status', '=', 'bounce')]"/>
<filter string="Failed" name="filter_failed" domain="[('trace_status', '=', 'error')]"/>
<group expand="0" string="Group By">
<filter string="Test Traces" name="filter_is_test_trace" domain="[('is_test_trace', '=', 'True')]"/>
<group>
<filter string="State" name="state" domain="[]" context="{'group_by': 'trace_status'}"/>
<filter string="Open Date" name="group_open_date" domain="[('trace_status', 'in', ['open', 'reply'])]" context="{'group_by': 'open_datetime:day'}"/>
<filter string="Reply Date" name="group_reply_date" domain="[('trace_status', '=', 'reply')]" context="{'group_by': 'reply_datetime:day'}"/>
@ -31,10 +33,10 @@
</record>
<record id="mailing_trace_view_tree" model="ir.ui.view">
<field name="name">mailing.trace.view.tree</field>
<field name="name">mailing.trace.view.list</field>
<field name="model">mailing.trace</field>
<field name="arch" type="xml">
<tree string="Mailing Traces" create="0">
<list string="Mailing Traces" create="0">
<field name="mass_mailing_id"/>
<field name="email"/>
<field name="message_id"/>
@ -44,18 +46,19 @@
<field name="failure_type" optional="show"/>
<field name="open_datetime" optional="hide"/>
<field name="reply_datetime" optional="hide"/>
<field name="is_test_trace" optional="hide"/>
<button name="action_view_contact" type="object"
string="Open Recipient" icon="fa-user"/>
</tree>
</list>
</field>
</record>
<record id="mailing_trace_view_tree_mail" model="ir.ui.view">
<field name="name">mailing.trace.view.tree.mail</field>
<field name="name">mailing.trace.view.list.mail</field>
<field name="model">mailing.trace</field>
<field name="priority">20</field>
<field name="arch" type="xml">
<tree string="Mail Traces" create="0">
<list string="Mail Traces" create="0">
<field name="mass_mailing_id"/>
<field name="email"/>
<field name="message_id" optional="hide"/>
@ -65,9 +68,10 @@
<field name="failure_type" optional="show"/>
<field name="open_datetime" optional="hide"/>
<field name="reply_datetime" optional="hide"/>
<field name="is_test_trace" optional="hide"/>
<button name="action_view_contact" type="object"
string="Open Recipient" icon="fa-user"/>
</tree>
</list>
</field>
</record>
@ -76,21 +80,30 @@
<field name="model">mailing.trace</field>
<field name="arch" type="xml">
<form string="Mail Statistics" create="0" edit="0">
<header>
<field name="trace_status" widget="statusbar" statusbar_visible="outgoing,sent,error"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="action_view_contact"
type="object" icon="fa-user" class="oe_stat_button">
<span widget="statinfo">Open Recipient</span>
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">Open Recipient</span>
</div>
</button>
</div>
<field name="is_test_trace" invisible="1"/>
<widget name="web_ribbon" title="Test" bg_color="text-bg-danger" invisible="is_test_trace != True"/>
<group>
<group string="Status">
<field name="trace_status"/>
<field name="failure_type" attrs="{'invisible' : [('failure_type', '=', False)]}"/>
<field name="sent_datetime" attrs="{'invisible' : [('sent_datetime', '=', False)]}"/>
<field name="links_click_datetime" attrs="{'invisible' : [('links_click_datetime', '=', False)]}"/>
<field name="open_datetime" attrs="{'invisible' : [('open_datetime', '=', False)]}"/>
<field name="reply_datetime" attrs="{'invisible' : [('reply_datetime', '=', False)]}"/>
<field name="failure_type" invisible="not failure_type"/>
<field name="sent_datetime" invisible="not sent_datetime"/>
<field name="links_click_datetime" invisible="not links_click_datetime"/>
<field name="open_datetime" invisible="not open_datetime"/>
<field name="failure_reason"
invisible="not failure_reason"
class="o_text_overflow"/>
<field name="reply_datetime" invisible="not reply_datetime"/>
</group>
<group string="Mailing">
<field name="trace_type" invisible="1"/>
@ -124,14 +137,14 @@
<record id="mailing_trace_action" model="ir.actions.act_window">
<field name="name">Mailing Traces</field>
<field name="res_model">mailing.trace</field>
<field name="view_mode">tree,form,graph,pivot</field>
<field name="view_mode">list,form,graph,pivot</field>
<field name="domain">[]</field>
</record>
<record id="action_view_mail_mail_statistics_mailing" model="ir.actions.act_window">
<field name="name">Mail Statistics</field>
<field name="res_model">mailing.trace</field>
<field name="view_mode">graph,tree,form,pivot</field>
<field name="view_mode">graph,list,form,pivot</field>
<field name="domain">[]</field>
<field name="context">{'search_default_mass_mailing_id': active_id}</field>
<field name="help" type="html">

View file

@ -6,77 +6,43 @@
<field name="priority" eval="60"/>
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('settings')]" position="inside">
<div class="app_settings_block" data-string="Email Marketing" string="Email Marketing" data-key="mass_mailing" groups="mass_mailing.group_mass_mailing_user">
<h2>Email Marketing</h2>
<div class="row mt16 o_settings_container" name="managa_mail_campaigns_setting_container">
<div class="col-lg-6 o_setting_box col-12" title="This tool is advised if your marketing campaign is composed of several emails.">
<div class="o_setting_left_pane" title="This is useful if your marketing campaigns are composed of several emails.">
<field name="group_mass_mailing_campaign"/>
</div>
<div class="o_setting_right_pane">
<label for="group_mass_mailing_campaign"/>
<div class="text-muted">
Manage mass mailing campaigns
<xpath expr="//form" position="inside">
<app data-string="Email Marketing" string="Email Marketing" name="mass_mailing" groups="mass_mailing.group_mass_mailing_user">
<block title="Email Marketing" name="managa_mail_campaigns_setting_container">
<setting title="This tool is advised if your marketing campaign is composed of several emails." help="Manage mass mailing campaigns">
<field name="group_mass_mailing_campaign"/>
</setting>
<setting name="contact_naming" title="Contact Naming" help="Separate Mailing Contact Names into two fields">
<field name="mass_mailing_split_contact_name"/>
</setting>
<setting name="allow_blacklist_setting_container" title="Allow the recipient to manage themselves their state in the blacklist via the unsubscription page. If the option is active, the 'Blacklist Me' button is hidden on the unsubscription page. The 'come Back' button will always be visible in any case to allow leads and partners to re-subscribe." help="Allow recipients to blacklist themselves">
<field name="show_blacklist_buttons"/>
</setting>
<setting name="mass_mailing_reports_setting_container" title="Send a report to the mailing responsible one day after the mailing has been sent." help="Check how well your mailing is doing a day after it has been sent">
<field name="mass_mailing_reports"/>
</setting>
<setting name="dedicated_server_setting_container" title="Use a specific mail server in priority. Otherwise Odoo relies on the first outgoing mail server available (based on their sequencing) as it does for normal mails." help="Pick a dedicated outgoing mail server for your mass mailings">
<field name="mass_mailing_outgoing_mail_server"/>
<div class="content-group" invisible="not mass_mailing_outgoing_mail_server">
<div class="mt16">
<field name="mass_mailing_mail_server_id" options="{'no_create': True, 'no_open': True}"
placeholder="Default Server"/>
</div>
<div class="mt8">
<button type="action" name="base.action_ir_mail_server_list" string="Configure Outgoing Mail Servers" icon="oi-arrow-right" class="oe_link"/>
</div>
</div>
</div>
<div class="col-lg-6 o_setting_box col-12" name="dedicated_server_setting_container">
<div class="o_setting_left_pane" title="Use a specific mail server in priority. Otherwise Odoo relies on the first outgoing mail server available (based on their sequencing) as it does for normal mails.">
<field name="mass_mailing_outgoing_mail_server"/>
</div>
<div class="o_setting_right_pane">
<label for="mass_mailing_outgoing_mail_server"/>
<div class="text-muted">
Pick a dedicated outgoing mail server for your mass mailings
</div>
<div class="content-group" attrs="{'invisible': [('mass_mailing_outgoing_mail_server', '=', False)]}">
<div class="mt16">
<field name="mass_mailing_mail_server_id" options="{'no_create': True, 'no_open': True}"
placeholder="Default Server"/>
</div>
<div class="mt8">
<button type="action" name="base.action_ir_mail_server_list" string="Configure Outgoing Mail Servers" icon="fa-arrow-right" class="oe_link"/>
</div>
</div>
</div>
</div>
<div class="col-md-6 o_setting_box col-xs-12" name="allow_blacklist_setting_container">
<div class="o_setting_left_pane" title="Allow the recipient to manage themselves their state in the blacklist via the unsubscription page.
If the option is active, the 'Blacklist Me' button is hidden on the unsubscription page.
The 'come Back' button will always be visible in any case to allow leads and partners to re-subscribe.">
<field name="show_blacklist_buttons"/>
</div>
<div class="o_setting_right_pane">
<label for="show_blacklist_buttons"/>
<div class="text-muted">
Allow recipients to blacklist themselves
</div>
</div>
</div>
<div class="col-md-6 o_setting_box col-xs-12" name="mass_mailing_reports_setting_container">
<div class="o_setting_left_pane" title="Send a report to the mailing responsible one day after the mailing has been sent.">
<field name="mass_mailing_reports"/>
</div>
<div class="o_setting_right_pane">
<label for="mass_mailing_reports"/>
<div class="text-muted">
Check how well your mailing is doing a day after it has been sent
</div>
</div>
</div>
</div>
</div>
</setting>
</block>
</app>
</xpath>
</field>
</record>
<record id="action_mass_mailing_configuration" model="ir.actions.act_window">
<field name="name">Settings</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.config.settings</field>
<field name="view_mode">form</field>
<field name="target">inline</field>
<field name="context">{'module' : 'mass_mailing', 'bin_size': False}</field>
</record>
</odoo>

View file

@ -0,0 +1,467 @@
<odoo>
<template id="s_three_columns" name="Columns">
<section class="s_three_columns o_mail_snippet_general o_cc pt32 pb32" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-4 o_mail_no_colorpicker pt16 pb16 col-12">
<div class="card text-bg-white h-100">
<div class="o_not_editable">
<img class="card-img-top o_editable_media" src="/web/image/mass_mailing.s_three_columns_default_image_1" alt=""/>
</div>
<div class="card-body">
<h3 class="card-title" style="font-size: 18px;">Feature One</h3>
<p class="card-text">Adapt these three columns to fit your design need. To duplicate, delete or move columns, select the column and use the top icons to perform your action.</p>
</div>
</div>
</div>
<div class="col-md-4 o_mail_no_colorpicker pt16 pb16 col-12">
<div class="card text-bg-white h-100">
<div class="o_not_editable">
<img class="card-img-top o_editable_media" src="/web/image/mass_mailing.s_three_columns_default_image_2" alt=""/>
</div>
<div class="card-body">
<h3 class="card-title" style="font-size: 18px;">Feature Two</h3>
<p class="card-text">To add a fourth column, reduce the size of these three columns using the right icon of each block. Then, duplicate one of the columns to create a new one as a copy.</p>
</div>
</div>
</div>
<div class="col-md-4 o_mail_no_colorpicker pt16 pb16 col-12">
<div class="card text-bg-white h-100">
<div class="o_not_editable">
<img class="card-img-top o_editable_media" src="/web/image/mass_mailing.s_three_columns_default_image_3" alt=""/>
</div>
<div class="card-body">
<h3 class="card-title" style="font-size: 18px;">Feature Three</h3>
<p class="card-text">Delete the above image or replace it with a picture that illustrates your message. Click on the picture to change its <em>rounded corner</em> style.</p>
</div>
</div>
</div>
</div>
</div>
</section>
</template>
<template name="Big Boxes" id="s_color_blocks_2">
<section class="s_mail_color_blocks_2 o_mail_snippet_general" data-vxml="001">
<div class="container mx-auto my-auto">
<div class="row">
<div class="col-md-6 o_cc o_cc4 pb24 pt24 col-12">
<h2 style="text-align: center;"><font style="color:white;"><span class="h3-fs">A color block</span></font></h2>
<p style="text-align: center;"><font style="color:white;">Color blocks are a simple and effective way to <strong>present and highlight your content</strong>. Choose an image or a color for the background. You can even resize and duplicate the blocks to create your own layout. Add images or icons to customize the blocks.</font></p>
<p style="text-align: center;"><a href="#" class="btn btn-dark"><font style="color:white;">More Details</font></a></p>
</div>
<div class="col-md-6 o_cc o_cc5 pb24 pt24 col-12">
<h2 style="text-align: center;"><font style="color:white;"><span class="h3-fs">Another color block</span></font></h2>
<p style="text-align: center;"><font style="color:white;">Color blocks are a simple and effective way to <strong>present and highlight your content</strong>. Choose an image or a color for the background. You can even resize and duplicate the blocks to create your own layout. Add images or icons to customize the blocks.</font></p>
<p style="text-align: center"><a href="#" class="btn btn-secondary"><font style="color:white;">More Details</font></a></p>
</div>
</div>
</div>
</section>
</template>
<template name="Media List" id="s_media_list">
<section class="s_media_list pt32 pb32 o_colored_level o_cc o_mail_snippet_general" data-vcss="001" data-vxml="001">
<div class="container">
<div class="row s_nb_column_fixed">
<div class="col-md-12 s_media_list_item pt16 pb16 col-12" data-name="Media item">
<div class="row s_col_no_resize o_mail_no_colorpicker g-0 align-items-center o_colored_level o_cc">
<div class="col-md-4 align-self-stretch s_media_list_img_wrapper o_not_editable col-12">
<img src="/web/image/mass_mailing.s_media_list_default_image_1" class="s_media_list_img img-fluid o_editable_media" alt=""/>
</div>
<div class="col-md-8 s_media_list_body ps-md-4 col-12 o_cc">
<h2>Media heading</h2>
<p>Use this snippet to build various types of components that feature a left- or right-aligned image alongside textual content. Duplicate the element to create a list that fits your needs.
<br/><a href="#">Discover more <span class="fa fa-long-arrow-right align-middle ms-1"/></a></p>
</div>
</div>
</div>
<div class="col-md-12 s_media_list_item pt16 pb16" data-name="Media item">
<div class="row s_col_no_resize o_mail_no_colorpicker g-0 align-items-center o_colored_level o_cc">
<div class="col-md-4 align-self-stretch s_media_list_img_wrapper o_not_editable col-12">
<img src="/web/image/mass_mailing.s_media_list_default_image_2" class="s_media_list_img o_editable_media img-fluid" alt=""/>
</div>
<div class="col-md-8 s_media_list_body ps-md-4 col-12 o_cc">
<h2>Event heading</h2>
<p>Speakers from all over the world will join our experts to give inspiring talks on various topics. Stay on top of the latest business management trends &amp; technologies</p>
</div>
</div>
</div>
<div class="col-md-12 s_media_list_item pt16 pb16" data-name="Media item">
<div class="row s_col_no_resize o_mail_no_colorpicker g-0 align-items-center o_colored_level o_cc">
<div class="col-md-4 align-self-stretch s_media_list_img_wrapper o_not_editable">
<img src="/web/image/mass_mailing.s_media_list_default_image_3" class="s_media_list_img o_editable_media img-fluid" alt=""/>
</div>
<div class="col-md-8 s_media_list_body ps-md-4 col-12 o_cc">
<h2>Post heading</h2>
<p>Use this component for creating a list of featured elements to which you want to bring attention.</p>
<p><a href="#">Continue reading <span class="fa fa-long-arrow-right align-middle ms-1"/></a></p>
</div>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="s_attributes_horizontal" name="Horizontal Attributes">
<section class="s_attributes_horizontal pt24 pb24 o_mail_snippet_general" data-vxml="001">
<div class="container">
<div class="row">
<div class="s_attributes_horizontal_col col-md-4 pt24 pb24 col-12" data-name="Column">
<div class="row align-items-center h-100 mx-0 s_col_no_resize o_mail_no_colorpicker">
<div class="col-2 col-md-3 px-0">
<div class="o_not_editable">
<img
src="/html_editor/shape/mass_mailing/s_attributes_1.svg?c1=rgba(0,0,0,.25)&amp;c4=o-color-4&amp;c5=o-color-5"
data-original-src="/mass_mailing/static/shapes/s_attributes_1.svg"
class="s_attributes_horizontal_img img img-fluid o_editable_media"
alt=""
style="width: 100% !important;"
/>
</div>
</div>
<div class="col-10 col-md-9 pe-0">
<p><strong>Easy returns</strong></p>
</div>
</div>
</div>
<div class="s_attributes_horizontal_col col-md-4 pt24 pb24 col-12" data-name="Column">
<div class="row align-items-center h-100 mx-0 s_col_no_resize o_mail_no_colorpicker">
<div class="col-2 col-md-3 px-0">
<div class="o_not_editable">
<img
src="/html_editor/shape/mass_mailing/s_attributes_2.svg?c1=rgba(0,0,0,.25)&amp;c2=rgba(0,0,0,.5)&amp;c4=o-color-4&amp;c5=o-color-5"
data-original-src="/mass_mailing/static/shapes/s_attributes_2.svg"
class="s_attributes_horizontal_img img img-fluid o_editable_media"
alt=""
style="width: 100% !important;"
/>
</div>
</div>
<div class="col-10 col-md-9 pe-0">
<p><strong>Free shipping</strong></p>
</div>
</div>
</div>
<div class="s_attributes_horizontal_col col-md-4 pt24 pb24 col-12" data-name="Column">
<div class="row align-items-center h-100 mx-0 s_col_no_resize o_mail_no_colorpicker">
<div class="col-2 col-md-3 px-0">
<div class="o_not_editable">
<img
src="/html_editor/shape/mass_mailing/s_attributes_3.svg?c1=rgba(0,0,0,.25)&amp;c4=o-color-4&amp;c5=o-color-5"
data-original-src="/mass_mailing/static/shapes/s_attributes_3.svg"
class="s_attributes_horizontal_img img img-fluid o_editable_media"
alt=""
style="width: 100% !important;"
/>
</div>
</div>
<div class="col-10 col-md-9 pe-0">
<p><strong>Secure payment</strong></p>
</div>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="s_numbers" name="Numbers">
<section class="s_numbers o_mail_snippet_general o_cc" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-4 pt24 pb24 o_cc col-12" style="text-align: center;">
<p><strong><font style="font-size: 48px;">12</font></strong></p>
<p>Useful options</p>
</div>
<div class="col-md-4 pt24 pb24 o_cc o_cc4 col-12" style="text-align: center;">
<p><strong><font style="font-size: 48px; color: white;">45</font></strong></p>
<p><font style="color: white;">Beautiful snippets</font></p>
</div>
<div class="col-md-4 pt24 pb24 o_cc col-12" style="text-align: center;">
<p><strong><font style="font-size: 48px;">8</font></strong></p>
<p>Amazing pages</p>
</div>
</div>
</div>
</section>
</template>
<template id="s_event" name="Event">
<section class="s_mail_block_event o_mail_snippet_general" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="o_mail_no_colorpicker col-md-6 pt32 pb32 col-12">
<div class="card bg-white h-100 rounded" style="border-radius: 5px !important; border-color: rgb(233, 236, 239) !important;">
<div class="o_not_editable">
<img class="card-img-top o_editable_media" src="/web/image/mass_mailing.s_event_default_image_1" alt=""/>
</div>
<div class="card-body">
<h3 class="card-title">
<span style="font-size: 18px;">Event One</span>
</h3>
<p><font class="text-o-color-1">25 September 2022 - 4:30 PM</font></p>
<p>London, United Kingdom</p>
<p>
<a href="#" target="_blank" class="btn btn-primary">Register Now</a>
</p>
</div>
</div>
</div>
<div class="o_mail_no_colorpicker col-md-6 pt32 pb32 col-12">
<div class="card bg-white h-100 rounded" style="border-radius: 5px !important; border-color: rgb(233, 236, 239) !important;">
<div class="o_not_editable">
<img class="card-img-top o_editable_media" src="/web/image/mass_mailing.s_event_default_image_2" alt=""/>
</div>
<div class="card-body">
<h3 class="card-title">
<span style="font-size: 18px">Event Two</span>
</h3>
<p><font class="text-o-color-1">26 September 2022 - 1:30 PM</font></p>
<p>London, United Kingdom</p>
<p>
<a href="#" target="_blank" class="btn btn-primary">Register Now</a>
</p>
</div>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="s_product_list" name="Items">
<section class="s_mail_product_list o_mail_snippet_general" data-vxml="001">
<div class="container pt16">
<div class="ps-3">
<h2><span class="h3-fs">Our finest selection</span></h2>
</div>
<div class="row">
<div class="col-md-4 o_cc pt16 pb16 col-12">
<div class="o_not_editable mb-3">
<a href="">
<img src="/web/image/mass_mailing.s_product_list_default_image_1" alt="" class="img img-fluid o_editable_media mx-auto"/>
</a>
</div>
<h3 class="card-title" style="text-align: center;"><a href="#"><span class="h5-fs">Elegant</span></a></h3>
</div>
<div class="col-md-4 o_cc pt16 pb16 col-12">
<div class="o_not_editable mb-3">
<a href="">
<img src="/web/image/mass_mailing.s_product_list_default_image_2" alt="" class="img img-fluid o_editable_media mx-auto"/>
</a>
</div>
<h3 class="card-title" style="text-align: center;"><a href="#"><span class="h5-fs">Simple</span></a></h3>
</div>
<div class="col-md-4 o_cc pt16 pb16 col-12">
<div class="o_not_editable mb-3">
<a href="">
<img src="/web/image/mass_mailing.s_product_list_default_image_3" alt="" class="img img-fluid o_editable_media mx-auto"/>
</a>
</div>
<h3 class="card-title" style="text-align: center;"><a href="#"><span class="h5-fs">Balanced</span></a></h3>
</div>
</div>
</div>
</section>
</template>
<template id="s_features_grid" name="Features Grid">
<section class="s_mail_features_grid o_mail_snippet_general pt48 pb24" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-6 o_cc col-12">
<div class="container">
<div class="row g-0">
<div class="col-md-12 pb24 col-12">
<h2>First list of Features</h2>
<p>Add a great slogan.</p>
</div>
</div>
<div class="row">
<div class="ps-0 col-md-2 col-12 o_not_editable" style="text-align: center;">
<span class="fa fa-2x fa-font-awesome bg-primary o_editable_media" style="padding: 10px; border-radius: 50px !important;"></span>
</div>
<div class="col-md-10 pb16 px-0 col-12">
<h3>Change Icons</h3>
<p>Double click an icon to replace it with one of your choice.</p>
</div>
</div>
<div class="row">
<div class="ps-0 col-md-2 col-12 o_not_editable" style="text-align: center;">
<span class="fa fa-2x fa-files-o bg-primary o_editable_media" style="padding: 10px; border-radius: 50px !important;"></span>
</div>
<div class="col-md-10 pb16 px-0 col-12">
<h3>Duplicate</h3>
<p>Duplicate blocks and columns to add more features.</p>
</div>
</div>
<div class="row">
<div class="ps-0 col-md-2 col-12 o_not_editable" style="text-align: center;">
<span class="fa fa-2x fa-trash bg-primary o_editable_media" style="padding: 10px; border-radius: 50px !important;"></span>
</div>
<div class="col-md-10 pb16 px-0 col-12">
<h3>Delete Blocks</h3>
<p>Select and delete blocks to remove features.</p>
</div>
</div>
</div>
</div>
<div class="col-md-6 o_cc">
<div class="container">
<div class="row g-0">
<div class="col-md-12 pb24 col-12">
<h2>Second list of Features</h2>
<p>Add a great slogan.</p>
</div>
</div>
<div class="row">
<div class="ps-0 col-md-2 col-12 o_not_editable" style="text-align: center;">
<span class="fa fa-2x fa-magic bg-secondary o_editable_media" style="padding: 10px; border-radius: 3px !important; color: white;"></span>
</div>
<div class="col-md-10 pb16 px-0 col-12">
<h3>Great Value</h3>
<p>Turn every feature into a benefit for your reader.</p>
</div>
</div>
<div class="row">
<div class="ps-0 col-md-2 col-12 o_not_editable" style="text-align: center;">
<span class="fa fa-2x fa-eyedropper bg-secondary o_editable_media" style="padding: 10px; border-radius: 3px !important; color: white;"></span>
</div>
<div class="col-md-10 pb16 px-0 col-12">
<h3>Edit Styles</h3>
<p>You can edit colors and backgrounds to highlight features.</p>
</div>
</div>
<div class="row">
<div class="ps-0 col-md-2 col-12 o_not_editable" style="text-align: center;">
<span class="fa fa-2x fa-picture-o bg-secondary o_editable_media" style="padding: 10px; border-radius: 3px !important; color: white;"></span>
</div>
<div class="col-md-10 pb16 px-0 col-12">
<h3>Sample Icons</h3>
<p>All these icons are completely free for commercial use.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="s_features_showcase" name="Feature Showcase with Image">
<section class="o_mail_snippet_general s_text_image" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-6 col-12 pt16 pb16">
<h1>Features showcase</h1>
<p>A features section highlights your product's key attributes, engaging visitors and boosting conversions.</p>
<div class="row">
<div class="col-md-2 col-2">
<span class="fa fa-star-o bg-light rounded p-3" contenteditable="false"/>
</div>
<div class="col-md-10 col-10">
<h3>Highlights Key Attributes</h3>
<p>A feature section allows you to clearly showcase the main benefits and unique aspects of your product.</p>
</div>
<div class="col-md-2 col-2">
<span class="fa fa-user-o bg-light rounded p-3" contenteditable="false"/>
</div>
<div class="col-md-10 col-10">
<h3>Engages Visitors</h3>
<p>It captures your visitors' attention and helps them quickly understand the value of your product.</p>
</div>
<div class="col-md-2 col-2">
<span class="fa fa-heart-o bg-light rounded p-3" contenteditable="false"/>
</div>
<div class="col-md-10 col-10">
<h3>Boosts Conversions</h3>
<p>Organizing and presenting key information effectively increases the likelihood of turning your visitors into customers.</p>
</div>
</div>
<t t-call="mass_mailing.s_hr"/>
<a href="#" class="btn btn-primary">Discover all features</a>
</div>
<div class="col-md-6 col-12 pt16 pb16">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media"
src="/mass_mailing/static/src/img/snippets_demo/s_showcase.jpg"
data-original-src="/mass_mailing/static/src/img/snippets_demo/s_showcase.jpg"
data-original-mimetype="image/jpeg"
data-mimetype="image/jpeg"/>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="s_membership_advertisement" name="Membership Advertisement">
<section class="o_mail_snippet_general s_text_image" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-2 col-4 pt16 pb16">
<div class="o_not_editable">
<img class="img img-fluid mx-auto o_editable_media"
src="/mass_mailing/static/shapes/s_attributes_4.svg"
data-original-src="/mass_mailing/static/shapes/s_attributes_4.svg"
data-original-mimetype="image/svg+xml"
data-mimetype="image/svg+xml"/>
</div>
</div>
<div class="col-md-4 col-8 pt16 pb16">
<h2>Award-winning collection</h2>
<p>Each piece is more than just furniture; it's a recognized masterpiece of craftsmanship and style.</p>
<a href="#">Learn More</a>
</div>
<div class="col-md-2 col-4 pt16 pb16">
<div class="o_not_editable">
<img class="img img-fluid mx-auto o_editable_media"
src="/mass_mailing/static/shapes/s_attributes_5.svg"
data-original-src="/mass_mailing/static/shapes/s_attributes_5.svg"
data-original-mimetype="image/svg+xml"
data-mimetype="image/svg+xml"/>
</div>
</div>
<div class="col-md-4 col-8 pt16 pb16">
<h2>Become a Member</h2>
<p>Join our inner circle to enjoy exclusive privileges and turn every curated choice into a journey of refined inspiration.</p>
<a href="#">Learn More</a>
</div>
</div>
</div>
</section>
</template>
<template id="s_features_column" name="Features Column">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-4 col-12">
<span class="fa fa-envelope bg-light rounded p-3 mb-3" contenteditable="false"/>
<h2>Reliability</h2>
<p>Consistent performance and uptime ensure efficient, reliable service with minimal interruptions and quick response times.</p>
</div>
<div class="col-md-4 col-12">
<span class="fa fa-credit-card bg-light rounded p-3 mb-3" contenteditable="false"/>
<h2>Performance</h2>
<p>Speed and efficiency ensure tasks are completed quickly and resources are used optimally, enhancing productivity and satisfaction.</p>
</div>
<div class="col-md-4 col-12">
<span class="fa fa-flag bg-light rounded p-3 mb-3" contenteditable="false"/>
<h2>Scalability</h2>
<p>Growth capability is a system's ability to scale and adapt, meeting increasing demands and evolving needs for long-term success.</p>
</div>
</div>
</div>
</section>
</template>
<record id="mass_mailing.s_features_grid_000_scss" model="ir.asset">
<field name="name">Features grid 000 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_features_grid/000.scss</field>
</record>
</odoo>

View file

@ -0,0 +1,124 @@
<odoo>
<template id="s_mail_block_footer_social" name="Social + Footer">
<section class="s_footer_social o_mail_block_footer_social o_mail_footer_social_center o_mail_snippet_general pt16 pb16" data-name="Footer Center" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<div class="o_not_editable">
<a t-att-href="company_id.website or '#'" target="_blank">
<img t-if="company_id.logo or user_id.company_id.logo"
class="img img-fluid o_editable_media mx-auto"
style="width: 25% !important;"
t-attf-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
t-attf-data-original-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"/>
</a>
</div>
<div class="o_mail_footer_social pb16" style="text-align: center">
<t t-call="mass_mailing.social_links"/>
</div>
<p style="text-align: center"><t t-if="company_id"><strong>© <t t-out="company_id.partner_id.name"/></strong><br/><t t-out="company_id.partner_id._display_address()"/><br/></t>You're seeing this because you've shopped with us or joined our mailing list.</p>
<p style="text-align: center"><a class="btn btn-link" role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_footer_social_left" name="Social + Footer">
<section class="s_footer_social o_mail_block_footer_social o_mail_footer_social_left o_mail_snippet_general pt16 pb16" data-name="Footer Left" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-6 col-12">
<p t-if="company_id"><strong>© <t t-out="company_id.partner_id.name"/></strong><br/><t t-out="company_id.partner_id._display_address()"/></p>
<div class="o_mail_footer_social pb16">
<t t-call="mass_mailing.social_links"/>
</div>
</div>
<div class="col-md-6 col-12">
<p class="text-muted">You're seeing this because you've shopped with us or joined our mailing list.</p>
<p><a class="btn btn-link" role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_footer_one_liner" name="Social + Footer + Separator">
<section class="s_footer_one_liner o_mail_block_footer o_mail_snippet_general pt16 pb16" data-name="One Liner">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<p class="mb-0"><t t-if="company_id"><strong>© <t t-out="company_id.partner_id.name"/></strong><br/></t>You're seeing this because you've shopped with us or joined our mailing list. <a class="btn btn-link" role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>
</div>
</div>
<div class="s_hr o_mail_snippet_general pt8 pb8">
<hr class="w-75 mx-auto" style="border-top-color: rgb(156, 156, 148);"/>
</div>
<div class="row">
<div class="col-md-6 col-12">
<p><font t-out="company_id.partner_id._display_address()"/></p>
</div>
<div class="col-md-6 col-12">
<div class="o_mail_footer_social pb16" style="text-align: right">
<t t-call="mass_mailing.social_links"/>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_footer_social_and_logo" name="Social + Logo">
<section class="o_mail_snippet_general pt16 pb16">
<div class="container">
<div class="row">
<div class="col-md-4 col-12">
<div class="o_not_editable">
<a t-att-href="company_id.website or '#'" target="_blank">
<img t-if="company_id.logo or user_id.company_id.logo"
class="img img-fluid o_editable_media"
style="width: 80% !important"
t-attf-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
t-attf-data-original-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"/>
</a>
</div>
</div>
<div class="col-md-8 col-12">
<div class="o_mail_footer_social pb16" style="text-align: right">
<t t-call="mass_mailing.social_links"/>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 col-12">
<p><t t-if="company_id"><strong>© <t t-out="company_id.partner_id.name"/></strong><br/><t t-out="company_id.partner_id._display_address()"/><br/></t>You're seeing this because you've shopped with us or joined our mailing list. <a class="btn btn-link" role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="social_links">
<t t-set="social_links" t-value="company_id._get_social_media_links()"/>
<p class="mb-0">
<a t-att-href="social_links.get('social_facebook')" t-attf-style="{{optionalTextStyle}}" aria-label="Facebook" title="Facebook">
<span class="fa fa-facebook"></span>
</a>&amp;nbsp;&amp;nbsp;
<a t-att-href="social_links.get('social_linkedin')" t-attf-style="margin-left:10px; {{optionalTextStyle or ''}}" aria-label="LinkedIn" title="LinkedIn">
<span class="fa fa-linkedin"></span>
</a>&amp;nbsp;&amp;nbsp;
<a t-att-href="social_links.get('social_twitter')" t-attf-style="margin-left:10px; {{optionalTextStyle or ''}}" aria-label="X" title="X">
<span class="fa fa-twitter"></span>
</a>&amp;nbsp;&amp;nbsp;
<a t-att-href="social_links.get('social_instagram')" t-attf-style="margin-left:10px; {{optionalTextStyle or ''}}" aria-label="Instagram" title="Instagram">
<span class="fa fa-instagram"></span>
</a>&amp;nbsp;&amp;nbsp;
<a t-att-href="social_links.get('social_tiktok')" t-attf-style="margin-left:10px; {{optionalTextStyle or ''}}" aria-label="TikTok" title="TikTok">
<span class="fa fa-tiktok"></span>
</a>
</p>
</template>
</odoo>

View file

@ -0,0 +1,236 @@
<odoo>
<template id="s_mail_block_header_social" name="Left Logo">
<section class="s_header_social o_mail_block_header_social o_mail_snippet_general pt16 pb16" data-name="Left Logo" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-6 col-12 pt16 pb16">
<div class="o_not_editable">
<a t-att-href="company_id.website or '#'" style="text-decoration:none;float:none;" target="_blank">
<img t-if="company_id.logo or user_id.company_id.logo"
class="img img-fluid o_editable_media py-4"
t-attf-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
t-attf-data-original-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
style="height:auto;max-width:100%;" />
</a>
</div>
</div>
<div class="col-md-6 col-12 o_mail_header_social" style="text-align: right;">
<t t-call="mass_mailing.social_links"/>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_logo" name="Centered Logo">
<section class="s_header_logo o_mail_block_header_logo o_mail_snippet_general" data-name="Centered Logo" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-3"/>
<div class="col-md-6" style="text-align: center;">
<div class="o_not_editable">
<a t-att-href="(company_id.website) or '#'" style="text-decoration:none;" target="_blank">
<img t-if="company_id.logo or user_id.company_id.logo"
class="img img-fluid o_editable_media py-4"
t-attf-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
t-attf-data-original-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
style="height:auto;max-width:100%;"/>
</a>
</div>
</div>
<div class="col-md-3" style="text-align: right;"/>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_menu">
<section class="s_header_menu o_mail_snippet_general" data-name="Menu">
<div class="container">
<div class="row">
<div class="col-md-3"/>
<div class="col-md-6" style="text-align: center;">
<div class="o_not_editable">
<a t-att-href="(company_id.website) or '#'" style="text-decoration:none;" target="_blank">
<img t-if="company_id.logo or user_id.company_id.logo"
class="img img-fluid o_editable_media py-4"
t-attf-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
t-attf-data-original-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
style="height:auto;max-width:100%;"/>
</a>
</div>
</div>
<div class="col-md-3" style="text-align: right;"/>
</div>
</div>
<t t-call="mass_mailing.s_hr"/>
<div class="container">
<div class="row">
<div class="offset-md-3 offset-3 col-md-2 col-2">
<a href="https://www.example.com">
News
</a>
</div>
<div class="col-md-2 col-2">
<a href="https://www.example.com">
Shop
</a>
</div>
<div class="col-md-2 col-2 me-auto">
<a href="https://www.example.com">
Contact
</a>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_logo_and_button">
<section class="o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 col-6">
<div class="o_not_editable">
<a t-att-href="company_id.website or '#'" target="_blank">
<img t-if="company_id.logo or user_id.company_id.logo"
class="img img-fluid o_editable_media py-4"
t-attf-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
t-attf-data-original-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"/>
</a>
</div>
</div>
<div class="col-md-6 col-6">
<p class="m-0" style="text-align: right;">
<a href="/web/login" class="btn btn-primary">
<span class="fa fa-user me-2" contenteditable="false"/>My Account<span class="fa fa-chevron-right ms-2" contenteditable="false"/>
</a>
</p>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_logo_and_stacked_menu" name="Logo + Stacked Menu">
<section class="o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<div class="o_not_editable">
<a t-att-href="company_id.website or '#'" target="_blank">
<img t-if="company_id.logo or user_id.company_id.logo"
class="img img-fluid o_editable_media mx-auto py-4"
style="width: 30% !important"
t-attf-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
t-attf-data-original-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo" />
</a>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 col-12">
<p class="m-0" style="text-align: center;"><a href="#" class="btn btn-link">News</a><a href="#" class="btn btn-link">Shop</a><a href="#" class="btn btn-link">Contact Us</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_logo_col" name="Company Logo with Dates and Issues">
<section class="o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-3 col-3">
<t t-set="now" t-value="datetime.datetime.now()"/>
<p style="text-align: center"><t t-out="now.month"/><br/><strong t-out="now.year"/></p>
</div>
<div class="col-md-6 col-6">
<div class="o_not_editable">
<a t-att-href="company_id.website or '#'" target="_blank">
<img t-if="company_id.logo or user_id.company_id.logo"
class="img img-fluid o_editable_media py-4"
t-attf-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
t-attf-data-original-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"/>
</a>
</div>
</div>
<div class="col-md-3 col-3">
<p style="text-align: center">Issue<br/><strong>#42</strong></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_logo_and_inline_menu" name="Logo + Inline Menu">
<section class="o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 col-12">
<div class="o_not_editable">
<a t-att-href="company_id.website or '#'" target="_blank">
<img t-if="company_id.logo or user_id.company_id.logo"
class="img img-fluid o_editable_media py-4"
t-attf-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo"
t-attf-data-original-src="/web/image/res.company/{{ company_id.id if company_id.id else user_id.company_id.id }}/logo" />
</a>
</div>
</div>
<div class="col-md-6 col-12">
<p class="m-0" style="text-align: center;"><a href="#" class="btn btn-link">News</a><a href="#" class="btn btn-link">Shop</a><a href="#" class="btn btn-link">Contact Us</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_name_and_inline_menu" name="Company Name and Menu">
<section class="o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 col-12">
<h1><span class="h2-fs" t-out="company_id.partner_id.name"/></h1>
</div>
<div class="col-md-6 col-12">
<p class="m-0" style="text-align: center;"><a href="#" class="btn btn-link">News</a><a href="#" class="btn btn-link">Shop</a><a href="#" class="btn btn-link">Contact Us</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_name_and_inline_menu" name="Company Name and Menu">
<section class="o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 col-12">
<h1><span class="h2-fs" t-out="company_id.partner_id.name"/></h1>
</div>
<div class="col-md-6 col-12">
<p class="m-0" style="text-align: center;"><a href="#" class="btn btn-link">News</a><a href="#" class="btn btn-link">Shop</a><a href="#" class="btn btn-link">Contact Us</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_name_and_button" name="Company Name and Log In Button">
<section class="o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 col-12">
<h1><span class="h2-fs" t-out="company_id.partner_id.name"/></h1>
</div>
<div class="col-md-6 col-12">
<p class="m-0" style="text-align: end;">
<a href="/web/login" class="btn btn-primary">
<span class="fa fa-user me-2" contenteditable="false"/>My Account<span class="fa fa-chevron-right ms-2" contenteditable="false"/>
</a>
</p>
</div>
</div>
</div>
</section>
</template>
</odoo>

View file

@ -0,0 +1,75 @@
<odoo>
<template id="s_title" name="Title">
<section class="s_title o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container s_allow_columns">
<h1 style="text-align:center">Your Title</h1>
</div>
</section>
</template>
<template id="s_subtitle" name="Subtitle">
<section class="s_subtitle o_mail_snippet_general pt16 pb16">
<div class="container s_allow_columns">
<h3 style="text-align:center">Your Subtitle</h3>
</div>
</section>
</template>
<template id="s_author" name="Author">
<section class="s_author o_mail_snippet_general s_text_image s_author bg-o-color-1" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-3 col-12 pt16 pb16">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
style="width: 75% !important;"
src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_1/html_builder/geometric_round/geo_round_circle.svg"
data-original-src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_1/html_builder/geometric_round/geo_round_circle.svg"
data-shape="html_builder/geometric_round/geo_round_circle"
data-file-name="team_member_1-circle.svg"
data-shape-colors=";;;;"
data-format-mimetype="image/png"/>
</div>
</div>
<div class="col-md-9 col-12 pt16 pb16">
<p><font style="color: white">Hi there, I'm <strong>John Doe</strong>, a design expert specializing in responsive web and mobile app interfaces. <strong>For over 13 years</strong>, I've focused on creating elegant, user-centric designs that are both scalable and easy to maintain.</font></p>
<p class="mb-0"><font style="color: white"><strong>If you're ready to transform your website into a high-converting asset</strong>, <em>hit reply and let's work together.</em></font></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_hr_title" name="Separator Title">
<section class="s_hr_title o_mail_snippet_general pt16 pb16">
<div class="container">
<div class="row align-items-center">
<div class="col-md-4 col-12">
<t t-call="mass_mailing.s_hr"/>
</div>
<div class="col-md-4 text-break col-12">
<h1 style="text-align:center;"> Your Title </h1>
</div>
<div class="col-md-4 col-12">
<t t-call="mass_mailing.s_hr"/>
</div>
</div>
</div>
</section>
</template>
<template id="s_blog_title" name="Blog Title">
<section class="s_blog_title o_mail_snippet_general pt16 pb16">
<div class="container">
<div class="row">
<h3>Your Super Article Title</h3>
</div>
<div class="row">
<p class="mb-0">
<a href="https://www.example.com">By John Doe</a>
</p>
</div>
</div>
</section>
</template>
</odoo>

View file

@ -0,0 +1,299 @@
<odoo>
<template id="s_cover" name="Cover">
<section class="s_cover o_mail_snippet_general" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 oe_img_bg pt56 pb48 col-12" style="background-image: url('/web/image/mass_mailing.s_cover_default_image'); background-position: 50% 84.7081%;">
<div class="o_we_bg_filter bg-black-75" contenteditable="false"></div>
<h1 style="text-align: center;"><span style="font-size: 62px;"><strong><font class="text-white">Your journey starts here</font></strong></span></h1>
<p class="lead" style="text-align: center;"><font class="text-white">Write one or two paragraphs describing your product, services or a specific feature.<br/> To be successful your content needs to be useful to your readers.</font></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_image_text" name="Image - Text">
<section class="s_text_image o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<div class="row align-items-start">
<div class="col-md-6 pt16 pb16 col-12">
<div class="o_not_editable">
<img src="/web/image/mass_mailing.s_image_text_default_image" class="img o_editable_media img-fluid w-100" />
</div>
</div>
<div class="col-md-6 o_cc pt16 pb16 col-12">
<h2>Discover New <strong>Opportunities</strong></h2>
<p>Write one or two paragraphs describing your product or services. To be successful your content needs to be useful to your readers.</p>
<p>Start with the customer - find out what they want and give it to them.</p>
<p><a href="https://www.example.com" class="btn btn-secondary o_translate_inline">Learn more</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_image" name="Text - Image">
<section class="s_text_image o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<div class="row align-items-start">
<div class="col-md-6 col-12 pt16 pb16">
<h2>Enhance Your <strong>Experience</strong></h2>
<p>Write one or two paragraphs describing your product or services. To be successful your content needs to be useful to your readers.</p>
<p>Start with the customer - find out what they want and give it to them.</p>
<p><a href="https://www.example.com" class="btn btn-secondary">Learn more</a></p>
</div>
<div class="col-md-6 col-12 pt16 pb16">
<div class="o_not_editable">
<img src="/web/image/mass_mailing.s_text_image_default_image" class="img o_editable_media img-fluid mx-auto rounded" alt="" data-mimetype="image/webp"/>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="s_picture" name="Picture">
<section class="s_picture o_mail_snippet_general pt48 pb24 o_cc o_cc2" style="padding-left: 15px; padding-right: 15px;" data-vxml="001">
<div class="container s_allow_columns">
<h2 style="text-align: center;"><strong>Step Up Your Game</strong></h2>
<p style="text-align: center;">Experience unparalleled comfort, cutting-edge design, and performance-enhancing<br/>technology with this latest innovation, crafted to elevate every athlete's journey.</p>
<div class="row">
<div class="col-md-12 pt24 col-12" style="text-align: center;">
<div class="o_not_editable">
<img src="/web/image/mass_mailing.s_picture_default_image" style="padding: 10px; width: 100% !important;" class="img img-fluid o_editable_media mx-auto d-block mw-100" width="500" alt=""/>
</div>
<p style="text-align: center;"><font style="font-size: 12px;">Where innovation meets performance</font></p>
</div>
</div>
</div>
</section>
</template>
<template id="mass_mailing.s_mailing_list_advertisement" name="Mailing List">
<section class="o_mail_snippet_general s_text_image" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 col-12 pt16 pb16">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
src="/html_editor/shape/mass_mailing/s_newsletter_benefits_popup.svg"
data-original-src="/html_editor/shape/mass_mailing/s_newsletter_benefits_popup.svg"
data-original-mimetype="image/svg+xml"
data-mimetype="image/svg+xml"/>
</div>
</div>
<div class="col-md-6 col-12 pt16 pb16">
<h2><strong>Stay Ahead with weekly insights &amp; updates</strong></h2>
<p>Join our mailing list to receive carefully curated resources, tips, and updates straight to your inbox.</p>
<p><span class="fa fa-check text-o-color-1" role="img"/>&#160;&#160;Curated Industry Insights</p>
<p><span class="fa fa-check text-o-color-1" role="img"/>&#160;&#160;Expert Tips &amp; How-Tos</p>
<p><span class="fa fa-check text-o-color-1" role="img"/>&#160;&#160;Guides &amp; Resources</p>
<p><a href="#" class="btn btn-primary">Subscribe</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="mass_mailing.s_content_card_1" name="Content card">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-6 col-12">
<h1><strong>Unveil Our Exclusive Collections</strong></h1>
</div>
<div class="col-md-6 col-12">
<p>Write one or two paragraphs describing your product or services. To be successful, your content needs to be useful to your readers.</p>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
style="width: 100% !important"
src="/mass_mailing/static/src/img/snippets_demo/shop_category_1.webp"
data-original-src="/mass_mailing/static/src/img/snippets_demo/shop_category_1.webp"
data-original-mimetype="image/webp"
data-mimetype="image/webp"/>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="mass_mailing.s_content_card_2" name="Content card">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
style="width: 100% !important"
src="/mass_mailing/static/src/img/snippets_demo/s_bento_grid_default_image_4.jpg"
data-original-src="/mass_mailing/static/src/img/snippets_demo/s_bento_grid_default_image_4.jpg"
data-original-mimetype="image/jpeg"
data-mimetype="image/jpeg"/>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12 col-12 pt16">
<h1 style="text-align: center"><strong>The Innovation Behind Our Product</strong></h1>
<p style="text-align: center">Write one or two paragraphs describing your product or services. To be successful, your content needs to be useful to your readers.</p>
<p style="text-align: center">Start with the customer - find out what they want and give it to them.</p>
<p style="text-align: center"><a href="#" class="btn btn-primary">Learn More</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="mass_mailing.s_content_card_3" name="Content card">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<h1><strong>Timeless Design</strong></h1>
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
style="width: 100% !important"
src="/mass_mailing/static/src/img/snippets_demo/s_bento_grid_default_image_2.webp"
data-original-src="/mass_mailing/static/src/img/snippets_demo/s_bento_grid_default_image_2.webp"
data-original-mimetype="image/webp"
data-mimetype="image/webp"/>
</div>
<p>Experience the perfect harmony of form and function. Each piece is meticulously designed with <strong>premium materials</strong>, ensuring that your interior reflects a sophisticated yet inviting atmosphere.</p>
<p><a href="#" class="btn btn-primary">Shop now</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="mass_mailing.s_content_card_4" name="Content card">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<h2><strong>A Breath of Fresh Air</strong></h2>
</div>
</div>
</div>
<div class="container">
<div class="row align-items-center">
<div class="col-md-2 col-2">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
style="width: 100% !important;"
src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_2/html_builder/geometric_round/geo_round_circle.svg"
data-original-src="/web/image/mass_mailing.s_company_team_default_image_2"
data-shape="html_builder/geometric_round/geo_round_circle"
data-original-mimetype="image/svg+xml"
data-mimetype="image/svg+xml"/>
</div>
</div>
<div class="col-md-10 col-10 ps-0">
<p class="mb-0"><strong>John DOE</strong><br/><t t-out="datetime.datetime.now().strftime('%b %d, %Y')"/></p>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12 col-12 pt16">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
src="/mass_mailing/static/src/img/snippets_demo/shop_generic_1_lg.jpg"
data-original-src="/mass_mailing/static/src/img/snippets_demo/shop_generic_1_lg.jpg"
data-original-mimetype="image/jpeg"
data-mimetype="image/jpeg"/>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12 col-12 pt16">
<h3>A Breath of Fresh Air</h3>
<p>Redefine your daily rituals with interiors that inspire. From the moment you walk through the door, our pieces evoke a sense of <strong>pure delight</strong>, turning every corner of your home into a sanctuary of happiness and ease.</p>
<h3>Elegance That Inspires</h3>
<p>Discover the thrill of a home that truly reflects your soul. It's more than just decor; it's about creating a space so vibrant and curated that <strong>you'll beam with pride</strong> every time you step inside.</p>
<p><a href="#" class="btn btn-primary">Learn More</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="mass_mailing.s_content_card_5" name="Content card">
<section class="o_mail_snippet_general s_cover" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-6 col-6 pt80 pb80 oe_img_bg" style="background-image: url('/web/image/mass_mailing.s_picture_default_image');">
<div class="o_we_bg_filter bg-black-50" contenteditable="false"></div>
<h2><strong><font class="text-white">Key Milestone</font></strong></h2>
<p><font class="text-white">Reaching new heights together</font></p>
</div>
<div class="col-md-6 col-6 pt80 pb80 oe_img_bg" style="background-image: url('/web/image/mass_mailing.s_masonry_block_default_image_1');">
<div class="o_we_bg_filter bg-black-50" contenteditable="false"></div>
<h2><strong><font class="text-white">Innovation Hub</font></strong></h2>
<p><font class="text-white">Where ideas come to life</font></p>
</div>
</div>
</div>
</section>
</template>
<template id="mass_mailing.s_content_card_6" name="Content card">
<section class="o_mail_snippet_general s_text_image pt16 pb16" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 col-12">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
src="/html_editor/image_shape/mass_mailing.s_shape_image_default_image/html_builder/composite/composite_double_pill.svg"
data-original-src="/html_editor/image_shape/mass_mailing.s_shape_image_default_image/html_builder/composite/composite_double_pill.svg"
data-shape="html_builder/composite/composite_double_pill"
data-file-name="s_shape_image_default_image.jpg"
data-format-mimetype="image/svg+xml"
data-mimetype="image/svg+xml"/>
</div>
</div>
<div class="col-md-6 col-12">
<h2><strong>About our product line</strong></h2>
<p>Our product line offers a range of innovative solutions designed to meet your needs. Each product is crafted for quality and reliability.</p>
<p>Enhance your experience with our user-focused designs, ensuring you get the best value.</p>
</div>
</div>
</div>
</section>
</template>
<template id="mass_mailing.s_content_card_7" name="Content card">
<section class="o_mail_snippet_general s_text_image pb16 pt16" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 col-12">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
src="/html_editor/shape/mass_mailing/s_newsletter_sms_notifications.svg"
data-original-src="/html_editor/shape/mass_mailing/s_newsletter_sms_notifications.svg"
data-format-mimetype="image/svg+xml"
data-mimetype="image/svg+xml"/>
</div>
</div>
<div class="col-md-6 col-12">
<h2><strong>Stay in the Loop !<br/>Get the latest updates</strong></h2>
<p>Be the first to find out all the latest new, products and trends.</p>
<a href="#" class="btn btn-primary">Subscribe</a>
</div>
</div>
</div>
</section>
</template>
</odoo>

View file

@ -0,0 +1,132 @@
<odoo>
<template id="s_text_highlight" name="Text Highlight">
<div class="s_text_highlight s_mail_text_highlight o_mail_snippet_general o_cc o_cc3 pt32 pb32 text-center mx-auto w-100" style="border-radius: 6px;" data-vxml="001">
<h3><font class="text-white">Text Highlight</font></h3>
<p><font class="text-white">Put the focus on what you have to say!</font></p>
</div>
</template>
<template id="s_rating" name="Rating">
<div class="s_rating o_mail_snippet_general pt16 pb16 s_rating_no_title" style="padding: 0 15px;" data-vcss="001" data-vxml="001" data-icon="fa-star">
<h3 class="s_rating_title">Quality</h3>
<div class="s_rating_icons o_not_editable">
<span class="s_rating_active_icons" style="color: #f3cc00;">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
</span>
<span class="s_rating_inactive_icons" style="color: var(--border-color);">
<i class="fa fa-star-o"></i>
<i class="fa fa-star-o"></i>
</span>
</div>
</div>
</template>
<template id="s_hr" name="Separator">
<div class="s_hr o_mail_snippet_general pt16 pb16 o_not_editable" data-vxml="001">
<hr class="w-100 mx-auto"/>
</div>
</template>
<template id="s_inline_text" name="Text">
<p class="o_snippet_drop_in_only">Text</p>
</template>
<template id="s_alert" name="Alert">
<div class="oe_unmovable s_alert s_mail_alert s_alert_md alert alert-info w-100 row" style="border-width: 1px !important; border-color: rgb(190 229 235) !important;">
<i class="fa fa-2x fa-info-circle fa-stack o_not_editable s_alert_icon rounded-1 col-auto"/>
<div class="s_alert_content col-9">
<p class="mb-0">Explain the benefits you offer. <br/>Don't write about products or services here, write about solutions.</p>
</div>
</div>
</template>
<template name="CTA Badge" id="s_cta_badge">
<div class="s_cta_badge badge d-block mx-auto o_mail_snippet_general border rounded py-2 px-3" data-name="CTA Badge" style="border-radius: 32px !important;">
<p class="mb-0">
<span class="fa fa-fw fa-info-circle" role="img"/>&#160;&#160;What do you want to promote&amp;nbsp;? &#160;&#160;&#160;&#160;<a href="#">See more <span class="fa fa-long-arrow-right" role="img"/></a>
</p>
</div>
</template>
<template id="s_button" name="Button">
<p class="o_snippet_drop_in_only">
<a class="btn btn-primary" href="https://www.example.com">Button</a>
</p>
</template>
<template id="s_video" name="Video">
<p class="o_snippet_drop_in_only">
<a href="https://www.youtube.com/embed/G8b4UZIcTfg?rel=0&amp;autoplay=0">
<img class="img img-fluid" data-original-src="https://img.youtube.com/vi/G8b4UZIcTfg/0.jpg" src="https://img.youtube.com/vi/G8b4UZIcTfg/0.jpg"/>
</a>
</p>
</template>
<template id="s_image" name="Image">
<p class="o_snippet_drop_in_only">
<span class="s_image o_mail_snippet_general rounded border d-inline-flex justify-content-center align-items-center bg-100 opacity-50 w-100 ratio ratio-16x9" style="max-width: 50vw">
<svg xmlns="http://www.w3.org/2000/svg" width="12em" height="7em" viewBox="0 0 120 120" fill="none">
<rect width="120" height="120"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M33.2503 38.4816C33.2603 37.0472 34.4199 35.8864 35.8543 35.875H83.1463C84.5848 35.875 85.7503 37.0431 85.7503 38.4816V80.5184C85.7403 81.9528 84.5807 83.1136 83.1463 83.125H35.8543C34.4158 83.1236 33.2503 81.957 33.2503 80.5184V38.4816ZM80.5006 41.1251H38.5006V77.8751L62.8921 53.4783C63.9172 52.4536 65.5788 52.4536 66.6039 53.4783L80.5006 67.4013V41.1251ZM43.75 51.6249C43.75 54.5244 46.1005 56.8749 49 56.8749C51.8995 56.8749 54.25 54.5244 54.25 51.6249C54.25 48.7254 51.8995 46.3749 49 46.3749C46.1005 46.3749 43.75 48.7254 43.75 51.6249Z" opacity="0.4" fill="currentColor"/>
</svg>
</span>
</p>
</template>
<template id="s_icon" name="Icon">
<p class="o_snippet_drop_in_only">
<span class="s_icon" />
</p>
</template>
<template name="Badge" id="s_badge">
<div class="s_badge badge text-bg-secondary o_mail_snippet_general" data-name="Badge" data-vxml="001">
<p class="mb-0">
<span class="fa fa-fw fa-folder"/>Category
</p>
</div>
</template>
<!-- Assets -->
<record id="mass_mailing.s_alert_001_scss" model="ir.asset">
<field name="name">Alert 001 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_alert/000.scss</field>
</record>
<record id="mass_mailing.s_cta_badge_000_scss" model="ir.asset">
<field name="name">CTA Badge 000 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_cta_badge/000.scss</field>
</record>
<record id="mass_mailing.s_badge_000_scss" model="ir.asset">
<field name="name">Badge 000 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_badge/000.scss</field>
</record>
<record id="mass_mailing.s_hr_000_scss" model="ir.asset">
<field name="name">Hr 000 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_hr/000.scss</field>
</record>
<record id="mass_mailing.s_rating_000_scss" model="ir.asset">
<field name="name">Rating 000 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_rating/000.scss</field>
<field name="active" eval="False"/>
</record>
<record id="mass_mailing.s_rating_001_scss" model="ir.asset">
<field name="name">Rating 001 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_rating/001.scss</field>
</record>
</odoo>

View file

@ -0,0 +1,159 @@
<odoo>
<template id="s_comparisons" name="Comparisons">
<section class="s_comparisons pt48 pb48 o_mail_snippet_general" data-vcss="001" data-vxml="001">
<div class="container">
<div class="row gap-4 gap-md-0">
<div class="col-12 col-md-6" data-name="Plan">
<div class="card h-100 my-0">
<div class="card-body">
<h3 class="card-title h5-fs">Beginner</h3>
<div class="my-2">
<p>
<span class="h2-fs"><strong>$ 15.00</strong></span>
<span class="o_small-fs">/ month</span>
</p>
</div>
<p class="card-text small">Ideal for newcomers. Essential features to kickstart sales and marketing. Perfect for small teams.</p>
<p><a href="#" class="btn btn-outline-primary w-100">Start Now</a></p>
<ul class="list-group list-group-flush text-start">
<li class="list-group-item px-0 bg-transparent"><span class="fa fa-check text-success" role="img"/> Sales &amp; marketing for 2</li>
<li class="list-group-item px-0 bg-transparent"><span class="fa fa-check text-success" role="img"/> Account management</li>
<li class="list-group-item px-0 bg-transparent"><span class="fa fa-times text-danger" role="img"/> No customization</li>
<li class="list-group-item px-0 bg-transparent"><span class="fa fa-times text-danger" role="img"/> No support</li>
</ul>
</div>
<div class="card-footer text-center">
<p class="mb-0" style="text-align: center;">
<span class="o_small-fs">Instant setup, satisfied or reimbursed.</span>
</p>
</div>
</div>
</div>
<div class="col-12 col-md-6" data-name="Plan">
<div class="card h-100 my-0">
<div class="card-body">
<h3 class="card-title h5-fs">Professional</h3>
<div class="my-2">
<p>
<span class="h2-fs"><strong>$ 25.00</strong></span>
<span class="o_small-fs">/ month</span>
</p>
</div>
<p class="card-text small">Comprehensive tools for growing businesses. Optimize your processes and productivity across your team.</p>
<p><a href="#" class="btn btn-primary w-100">Start Now</a></p>
<ul class="list-group list-group-flush text-start">
<li class="list-group-item px-0 bg-transparent"><span class="fa fa-check text-success" role="img"/> Complete CRM for any team</li>
<li class="list-group-item px-0 bg-transparent"><span class="fa fa-check text-success" role="img"/> Access all modules</li>
<li class="list-group-item px-0 bg-transparent"><span class="fa fa-check text-success" role="img"/> Limited customization</li>
<li class="list-group-item px-0 bg-transparent"><span class="fa fa-check text-success" role="img"/> Email support</li>
</ul>
</div>
<div class="card-footer text-center">
<p class="mb-0" style="text-align: center;">
<span class="o_small-fs">Instant setup, satisfied or reimbursed.</span>
</p>
</div>
</div>
</div>
</div>
</div>
</section>
</template>
<template name="Showcase" id="s_showcase">
<section class="s_showcase o_mail_snippet_general pt48 pb48" data-vxml="001">
<div class="container">
<div class="row s_nb_column_fixed">
<div class="col-12 pb32 oe_unmovable">
<h3>Features showcase</h3>
<p class="lead">A features section highlights your product's key attributes, engaging visitors and boosting conversions.</p>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-12">
<div class="container">
<div class="row">
<div class="ps-0 col-md-1 col-2 o_not_editable" style="text-align: center;">
<span style="padding: 5px 15px" class="align-self-start fa fa-star-o rounded float-start bg-o-color-3 o_editable_media" role="img"></span>
</div>
<div data-name="Feature" class="px-0 col-md-11 col-10 o_colored_level">
<h3 class="s_showcase_title h4-fs">Highlights Key Attributes</h3>
<p>A feature section allows you to clearly showcase the main benefits and unique aspects of your product.</p>
</div>
</div>
<div class="row">
<div class="ps-0 col-md-1 col-2 o_not_editable" style="text-align: center;">
<span style="padding: 5px 15px" class="align-self-start fa fa-user-o rounded float-start bg-o-color-3 o_editable_media" role="img"></span>
</div>
<div data-name="Feature" class="px-0 col-md-11 col-10 o_colored_level">
<h3 class="s_showcase_title h4-fs">Engages Visitors</h3>
<p>It captures your visitors' attention and helps them quickly understand the value of your product.</p>
</div>
</div>
<div class="row">
<div class="ps-0 col-md-1 col-2 o_not_editable" style="text-align: center;">
<span style="padding: 5px 15px" class="align-self-start fa fa-heart-o rounded float-start bg-o-color-3 o_editable_media" role="img"></span>
</div>
<div data-name="Feature" class="px-0 col-md-11 col-10 o_colored_level">
<h3 class="s_showcase_title h4-fs">Boosts Conversions</h3>
<p>Organizing and presenting key information effectively increases the likelihood of turning your visitors into customers.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row s_nb_column_fixed">
<div class="col-12 pt8 pb8 oe_unmovable" style="text-align: center;" align="center">
<t t-call="mass_mailing.s_hr"/>
<p class="mb-0">
<a href="#">Discover all the features</a>
</p>
</div>
</div>
</div>
</section>
</template>
<template id="s_call_to_action" name="Call to Action">
<section class="s_call_to_action o_mail_snippet_general bg-black pt48 pb24" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-9 col-9">
<h3><font style="color: white;"><strong>50,000+ companies</strong> run Odoo.</font></h3>
<p><font style="color: white;">Join us and make your company a better place.</font></p>
</div>
<div class="col-md-3 col-3" style="text-align: center;">
<p>
<a href="#" class="btn btn-secondary btn-lg">Contact us</a>
</p>
</div>
</div>
</div>
</section>
</template>
<template id="s_coupon_code" name="Promo Code">
<section class="s_discount2 o_mail_block_discount2 o_mail_snippet_general pt32 pb32" style="padding-left: 15px; padding-right: 15px;" data-vxml="001">
<h2 style="text-align: center;"><span><font style="font-weight: bolder;">GET $20 OFF</font></span></h2>
<p style="text-align: center;">
Here's your coupon code - but hurry! Ends 9/28
</p>
<table border="0" cellpadding="0" data-name="Promo Ticket" cellspacing="0" align="center" class="border" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
<tr>
<td width="50" data-name="Icon Cell" height="50" align="center" class="mx-auto o_cc o_cc3" style="width:50px !important; min-width: 50px; max-width:5.6rem; text-align: center;"><span class="fa fa-2x fa-ticket"/></td>
<td width="200" data-name="Code Cell" height="50" align="center" class="o_cc" style="font-size: 15px; line-height: 22px; font-weight: 700; min-width: 150px; width: 200px; text-align: center;"><p class="mb0">ENDOFSUMMER20</p></td>
</tr>
</table>
<div class="s_hr o_mail_snippet_general o_not_editable o_colored_level pt8 pb8" data-name="Separator">
<hr class="w-100 mx-auto" style="border-top-width: 0px !important;"/>
</div>
<p style="text-align:center;">
<a role="button" href="#" class="btn btn-primary">Use now</a>
</p>
</section>
</template>
</odoo>

View file

@ -0,0 +1,260 @@
<!-- Still needs to be adapted: img done needs colors now. -->
<odoo>
<!-- Template -->
<template id="s_masonry_block" name="Masonry">
<section class="s_masonry_block o_mail_snippet_general" data-vcss="001" data-vxml="001" data-template-name="default_template">
<div class="container text-white">
<t t-call="mass_mailing.s_masonry_block_default_template"/>
</div>
</section>
</template>
<!-- Templates -->
<template id="s_masonry_block_default_template" groups="base.group_user">
<div class="row">
<div class="col-md-6 col-12 oe_img_bg text-center pb224 pt224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-md-6 col-12 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-md-6 col-12 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-6 col-12 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-6 col-12 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3><font style="color: white">A great title</font></h3>
<p><font style="color: white">And a great subtitle</font></p>
</div>
<div class="col-md-6 col-12 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</div>
</div>
</template>
<!-- TODO EGGMAIL: remove masonry variants -->
<template id="s_masonry_block_reversed_template" groups="base.group_user">
<div class="row">
<div class="col-md-6 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-md-6 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-6 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-6 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-6 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3><font style="color: white">A great title</font></h3>
<p><font style="color: white">And a great subtitle</font></p>
</div>
</div>
</div>
<div class="col-md-6 oe_img_bg text-center pb224 pt224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
</div>
</template>
<template id="s_masonry_block_images_template" groups="base.group_user">
<div class="row">
<div class="col-md-6 oe_img_bg text-center pb224 pt224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-md-6 oe_img_bg text-center pb224 pt224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
</div>
</template>
<template id="s_masonry_block_image_texts_image_template" groups="base.group_user">
<div class="row">
<div class="col-md-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
<div class="col-md-3 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-md-12 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-12 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3><font style="color: white">A great title</font></h3>
<p><font style="color: white">And a great subtitle</font></p>
</div>
</div>
</div>
<div class="col-md-6 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
</div>
</template>
<template id="s_masonry_block_mosaic_template" groups="base.group_user">
<div class="row">
<div class="col-md-6 s_col_no_resize o_masonry_grid_container">
<div class="row">
<div class="col-md-6 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-6 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
<div class="row">
<div class="col-md-12 oe_img_bg text-center pt224 pb224" data-name="Block"
style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
</div>
</div>
<div class="col-md-6 s_col_no_resize o_masonry_grid_container">
<div class="row">
<div class="col-md-12 oe_img_bg text-center pt224 pb224" data-name="Block"
style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
</div>
<div class="row">
<div class="col-md-6 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-6 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3><font style="color: white">A great title</font></h3>
<p><font style="color: white">And a great subtitle</font></p>
</div>
</div>
</div>
</div>
</template>
<template id="s_masonry_block_texts_image_texts_template" groups="base.group_user">
<div class="row">
<div class="col-md-3 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-md-12 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-12 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</div>
<div class="col-md-6 oe_img_bg text-center pt224 pb224" data-name="Block"
style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-md-3 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-md-12 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-12 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3><font style="color: white">A great title</font></h3>
<p><font style="color: white">And a great subtitle</font></p>
</div>
</div>
</div>
</div>
</template>
<template id="s_masonry_block_alternation_text_template" groups="base.group_user">
<div class="row">
<div class="col-md-3 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-3 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3><font style="color: white">A great title</font></h3>
<p><font style="color: white">And a great subtitle</font></p>
</div>
<div class="col-md-3 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-3 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</template>
<template id="s_masonry_block_alternation_text_image_template" groups="base.group_user">
<div class="row">
<div class="col-md-3 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-md-3 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
</div>
</template>
<template id="s_masonry_block_alternation_image_text_template" groups="base.group_user">
<div class="row">
<div class="col-md-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-md-3 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3><font style="color: white">A great title</font></h3>
<p><font style="color: white">And a great subtitle</font></p>
</div>
<div class="col-md-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
<div class="col-md-3 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</template>
<template id="s_masonry_block_alternation_text_image_text_template" groups="base.group_user">
<div class="row">
<div class="col-md-3 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-md-6 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-md-3 pt24 pb8 text-center o_cc" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</template>
<!-- Assets -->
<record id="mass_mailing.s_masonry_block_001_scss" model="ir.asset">
<field name="name">Masonry block 001 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_masonry_block/001.scss</field>
</record>
</odoo>

View file

@ -0,0 +1,362 @@
<odoo>
<template id="s_company_team" name="Team">
<section class="s_company_team o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="ms-3">
<h3>Meet our team</h3>
<p class="lead">Dedicated professionals driving our success</p>
</div>
<div class="row">
<div class="col-md-6 col-12 pt32 pb32" data-name="Team Member">
<div class="row s_col_no_resize o_mail_no_colorpicker">
<div class="col-md-3 col-12 pb24 o_not_editable" contenteditable="false">
<img src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_1/html_builder/geometric_round/geo_round_circle.svg" data-shape="html_builder/geometric_round/geo_round_circle" data-original-src="/web/image/mass_mailing.s_company_team_default_image_1" class="img-fluid rounded-circle o_editable_media"/>
</div>
<div class="col-md-9 col-12 o_cc">
<h3><font class="h5-fs">Tony Fred</font></h3>
<p class="text-muted mb-3">Chief Executive Officer</p>
<p>
Founder and chief visionary, Tony is the driving force behind the company. He loves
to keep his hands full by participating in the development of the software,
marketing, and customer experience strategies.
</p>
</div>
</div>
</div>
<div class="col-md-6 col-12 pt32 pb32" data-name="Team Member">
<div class="row s_col_no_resize o_mail_no_colorpicker">
<div class="col-md-3 col-12 pb24 o_not_editable" contenteditable="false">
<img alt="" src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_2/html_builder/geometric_round/geo_round_circle.svg" data-shape="html_builder/geometric_round/geo_round_circle" data-original-src="/web/image/mass_mailing.s_company_team_default_image_2" class="img-fluid rounded-circle o_editable_media"/>
</div>
<div class="col-md-9 col-12 o_cc">
<h3><font class="h5-fs">Mich Stark</font></h3>
<p class="text-muted mb-3">Chief Commercial Officer</p>
<p>Mich loves taking on challenges. With his multi-year experience as Commercial Director in the software industry, Mich has helped the company to get where it is today. Mich is among the best minds.</p>
</div>
</div>
</div>
<div class="col-md-6 col-12 pt32 pb32" data-name="Team Member">
<div class="row s_col_no_resize o_mail_no_colorpicker">
<div class="col-md-3 col-12 pb24 o_not_editable" contenteditable="false">
<img alt="" src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_3/html_builder/geometric_round/geo_round_circle.svg" data-shape="html_builder/geometric_round/geo_round_circle" data-original-src="/web/image/mass_mailing.s_company_team_default_image_3" class="img-fluid rounded-circle o_editable_media"/>
</div>
<div class="col-md-9 col-12 o_cc">
<h3><font class="h5-fs">Aline Turner</font></h3>
<p class="text-muted mb-3">Chief Technical Officer</p>
<p>Aline is one of the iconic people in life who can say they love what they do. She mentors 100+ in-house developers and looks after the community of thousands of developers.</p>
</div>
</div>
</div>
<div class="col-md-6 col-12 pt32 pb32" data-name="Team Member">
<div class="row s_col_no_resize o_mail_no_colorpicker">
<div class="col-md-3 col-12 pb24 o_not_editable" contenteditable="false">
<img alt="" src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_4/html_builder/geometric_round/geo_round_circle.svg" data-shape="html_builder/geometric_round/geo_round_circle" data-original-src="/web/image/mass_mailing.s_company_team_default_image_4" class="img-fluid rounded-circle o_editable_media"/>
</div>
<div class="col-md-9 col-12 o_cc">
<h3><font class="h5-fs">Iris Joe</font></h3>
<p class="text-muted mb-3">Chief Financial Officer</p>
<p>Iris, with her international experience, helps us easily understand the numbers and improves them. She is determined to drive success and delivers her professional acumen to bring the company to the next level.</p>
</div>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="s_company_team_shapes" name="Team Shapes">
<section class="s_company_team_shapes o_mail_snippet_general o_cc o_cc2 pt48 pb48">
<div class="container">
<h2 style="text-align: center;">Our talented crew</h2>
<div class="row">
<div class="col-6 col-md-4 pb24">
<div class="mb-3 o_not_editable"><img src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_1/html_builder/geometric_round/geo_round_square.svg" class="img img-fluid o_editable_media" alt="" data-original-src="/web/image/mass_mailing.s_company_team_default_image_1" data-shape="html_builder/geometric_round/geo_round_square" data-original-mimetype="image/jpeg" data-file-name="s_company_team_image_1.svg" data-shape-colors=";;;;" style="width: 100% !important;"/></div>
<h3 style="text-align: center;"><span class="h5-fs">Tony Fred</span></h3>
</div>
<div class="col-6 col-md-4 pb24">
<div class="mb-3 o_not_editable"><img src="/web/image/mass_mailing.s_company_team_default_image_2" data-original-src="/web/image/mass_mailing.s_company_team_default_image_2" class="img img-fluid rounded o_editable_media" alt="" style="width: 100% !important;"/></div>
<h3 style="text-align: center;"><span class="h5-fs">Mich Stark</span></h3>
</div>
<div class="col-6 col-md-4 pb24">
<div class="mb-3 o_not_editable"><img src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_3/html_builder/geometric/geo_sonar.svg" class="img img-fluid o_editable_media" alt="" data-shape="html_builder/geometric/geo_sonar" data-original-src="/web/image/mass_mailing.s_company_team_default_image_3" data-original-mimetype="image/jpeg" data-file-name="s_company_team_image_3.svg" data-shape-colors=";;;;" style="width: 100% !important;"/></div>
<h3 style="text-align: center;"><span class="h5-fs">Aline Turner</span></h3>
</div>
<div class="col-6 col-md-4 pb24">
<div class="mb-3 o_not_editable"><img src="/web/image/mass_mailing.s_company_team_default_image_4" data-original-src="/web/image/mass_mailing.s_company_team_default_image_4" class="img img-fluid rounded o_editable_media" alt="" style="width: 100% !important;"/></div>
<h3 style="text-align: center;"><span class="h5-fs">Iris Joe</span></h3>
</div>
<div class="col-6 col-md-4 pb24">
<div class="mb-3 o_not_editable"><img src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_5/html_builder/geometric/geo_door.svg" class="img img-fluid o_editable_media" alt="" data-shape="html_builder/geometric/geo_door" data-original-src="/web/image/mass_mailing.s_company_team_default_image_5" data-original-mimetype="image/jpeg" data-file-name="s_company_team_image_5.svg" data-shape-colors=";;;;" style="width: 100% !important;"/></div>
<h3 style="text-align: center;"><span class="h5-fs">Pete Bluestork</span></h3>
</div>
<div class="col-6 col-md-4 pb24">
<div class="mb-3 o_not_editable"><img src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_6/html_builder/geometric_round/geo_round_circle.svg" data-original-src="/web/image/mass_mailing.s_company_team_default_image_6" class="img img-fluid o_editable_media" alt="" data-shape="html_builder/geometric_round/geo_round_circle" data-original-mimetype="image/jpeg" data-file-name="s_company_team_image_6.svg" data-shape-colors=";;;;" style="width: 100% !important;"/></div>
<h3 style="text-align: center;"><span class="h5-fs">Sophia Langston</span></h3>
</div>
</div>
</div>
</section>
</template>
<template id="s_reviews_wall" name="Customers Testimonials">
<section class="s_reviews_wall o_mail_snippet_general o_colored_level o_cc o_cc2 pt80 pb80">
<div class="container">
<div class="ms-3">
<h2>Customers testimonials</h2>
<p>What our customers are saying about us.</p>
</div>
<div class="row">
<div class="col-md-6 col-12 pt16 pb16">
<blockquote class="s_mail_blockquote s_blockquote oe_unmovable o_mail_snippet_general o_cc w-100 h-100 mx-auto rounded fst-normal" data-snippet="s_blockquote" data-name="Review" style="border: 0;border-radius: 6.4px !important;">
<div class="s_rating s_rating_no_title" data-snippet="s_rating" data-name="Rating" data-vcss="001" data-icon="fa-star" aria-label="4 out of 5 stars">
<p class="mb-0 s_rating_title"><strong>Rating</strong></p>
<div class="s_rating_icons o_not_editable">
<span class="s_rating_active_icons" style="color: #f3cc00;">
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
</span>
<span class="s_rating_inactive_icons" style="color: var(--border-color);">
<i class="fa fa-star" role="presentation"/>
</span>
</div>
</div>
<div class="py-4">
<p class="mb-0">"Engaging with this team was effortless from start to end. Their proficiency and meticulous approach greatly enhanced our project. I couldn't be happier with the final product!"</p>
</div>
<div class="row ms-0 s_blockquote_infos">
<div class="px-0 col-md-2 col-2 o_not_editable">
<img src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_1/html_builder/geometric_round/geo_round_circle.svg" class="s_blockquote_author_avatar img img-fluid p-0 o_editable_media" data-original-src="/web/image/mass_mailing.s_company_team_default_image_1" alt=""/>
</div>
<div class="s_blockquote_author col-md-10 col-10">
<p>
<strong>Sullivan Mitchell</strong><br/>
<span class="text-muted">Marketing Director</span>
</p>
</div>
</div>
</blockquote>
</div>
<div class="col-md-6 col-12 pt16 pb16">
<blockquote class="s_mail_blockquote s_blockquote oe_unmovable o_mail_snippet_general o_cc w-100 h-100 mx-auto rounded fst-normal" data-snippet="s_blockquote" data-name="Review" style="border: 0;border-radius: 6.4px !important;">
<div class="s_rating s_rating_no_title" data-snippet="s_rating" data-name="Rating" data-vcss="001" data-icon="fa-star" aria-label="4 out of 5 stars">
<p class="mb-0 s_rating_title"><strong>Rating</strong></p>
<div class="s_rating_icons o_not_editable">
<span class="s_rating_active_icons" style="color: #f3cc00;">
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
</span>
<span class="s_rating_inactive_icons" style="color: var(--border-color);">
<i class="fa fa-star" role="presentation"/>
</span>
</div>
</div>
<div class="py-4">
<p class="mb-auto">"Working with this team was smooth and efficient at every stage. Their skills and commitment to quality had a major impact on our project. I am thrilled with the final results!"</p>
</div>
<div class="row ms-0 s_blockquote_infos">
<div class="px-0 col-md-2 col-2 o_not_editable">
<img src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_2/html_builder/geometric_round/geo_round_circle.svg" class="s_blockquote_author_avatar img img-fluid p-0 o_editable_media" data-original-src="/web/image/mass_mailing.s_company_team_default_image_2" alt=""/>
</div>
<div class="s_blockquote_author col-md-10 col-10">
<p>
<strong>James Carter</strong><br/>
<span class="text-muted">Chief Technical Officer</span>
</p>
</div>
</div>
</blockquote>
</div>
<div class="col-md-6 col-12 pt16 pb16">
<blockquote class="s_mail_blockquote s_blockquote oe_unmovable o_mail_snippet_general o_cc w-100 h-100 mx-auto rounded fst-normal" data-snippet="s_blockquote" data-name="Review" style="border: 0;border-radius: 6.4px !important;">
<div class="s_rating s_rating_no_title" data-snippet="s_rating" data-name="Rating" data-vcss="001" data-icon="fa-star" aria-label="4 out of 5 stars">
<p class="mb-0 s_rating_title"><strong>Rating</strong></p>
<div class="s_rating_icons o_not_editable">
<span class="s_rating_active_icons" style="color: #f3cc00;">
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
</span>
<span class="s_rating_inactive_icons" style="color: var(--border-color);">
<i class="fa fa-star" role="presentation"/>
</span>
</div>
</div>
<div class="py-4">
<p class="mb-auto">"From the first meeting, it was clear we were in good hands. They took our vision and turned it into something even better than we had imagined. Highly recommend!"</p>
</div>
<div class="row ms-0 s_blockquote_infos">
<div class="px-0 col-md-2 col-2 o_not_editable">
<img src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_4/html_builder/geometric_round/geo_round_circle.svg" data-original-src="/web/image/mass_mailing.s_company_team_default_image_4" class="s_blockquote_author_avatar img img-fluid rounded-circle p-0 o_editable_media" alt=""/>
</div>
<div class="s_blockquote_author col-md-10 col-10">
<p>
<strong>Jody Roberts</strong><br/>
<span class="text-muted">Chief Financial Officer</span>
</p>
</div>
</div>
</blockquote>
</div>
<div class="col-md-6 col-12 pt16 pb16">
<blockquote class="s_mail_blockquote s_blockquote oe_unmovable o_mail_snippet_general o_cc w-100 h-100 mx-auto rounded fst-normal" data-snippet="s_blockquote" data-name="Review" style="border: 0;border-radius: 6.4px !important;">
<div class="s_rating s_rating_no_title" data-snippet="s_rating" data-name="Rating" data-vcss="001" data-icon="fa-star" aria-label="4 out of 5 stars">
<p class="mb-0 s_rating_title"><strong>Rating</strong></p>
<div class="s_rating_icons o_not_editable">
<span class="s_rating_active_icons" style="color: #f3cc00;">
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
<i class="fa fa-star" role="presentation"/>
</span>
<span class="s_rating_inactive_icons" style="color: var(--border-color);">
<i class="fa fa-star" role="presentation"/>
</span>
</div>
</div>
<div class="py-4">
<p class="mb-auto">"Exceptional service and great communication throughout the entire process. They went above and beyond to ensure our project was a complete success."</p>
</div>
<div class="row ms-0 s_blockquote_infos">
<div class="px-0 col-md-2 col-2 o_not_editable">
<img src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_5/html_builder/geometric_round/geo_round_circle.svg" class="s_blockquote_author_avatar img img-fluid rounded-circle p-0 o_editable_media" data-original-src="/web/image/mass_mailing.s_company_team_default_image_5" alt=""/>
</div>
<div class="s_blockquote_author col-md-10 col-10">
<p>
<strong>Emil Foster</strong><br/>
<span class="text-muted">Creative Director</span>
</p>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</section>
</template>
<template id="s_references" name="References">
<section class="s_references o_mail_snippet_general pt32 pb32" data-vxml="001">
<div class="container">
<h2 style="text-align: center;">Our References</h2>
<p style="text-align: center;">We are in good company.</p>
<div class="row">
<div class="col-md-3 col-12 pt16 pb16">
<div class="o_not_editable"><img src="/web/image/mass_mailing.s_reference_default_image_1" class="img img-fluid mx-auto o_editable_media" alt=""/></div>
</div>
<div class="col-md-3 col-12 pt16 pb16">
<div class="o_not_editable"><img src="/web/image/mass_mailing.s_reference_default_image_2" class="img img-fluid mx-auto o_editable_media" alt=""/></div>
</div>
<div class="col-md-3 col-12 pt16 pb16">
<div class="o_not_editable"><img src="/web/image/mass_mailing.s_reference_default_image_3" class="img img-fluid mx-auto o_editable_media" alt=""/></div>
</div>
<div class="col-md-3 col-12 pt16 pb16">
<div class="o_not_editable"><img src="/web/image/mass_mailing.s_reference_default_image_4" class="img img-fluid mx-auto o_editable_media" alt=""/></div>
</div>
</div>
</div>
</section>
</template>
<template id="s_blockquote" name="Blockquote">
<section class="s_mail_blockquote s_blockquote o_mail_snippet_general pt16 pb16">
<div class="container">
<div class="row align-items-center">
<div class="col-md-12 col-12">
<blockquote>
There is a certain magic in a room that just feels right. It's that effortless click when a sleek silhouette meets a soft, lived-in texture, turning a house into a haven that truly moves you...
</blockquote>
</div>
<div class="col-md-2 col-2">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
style="width: 100% !important;"
src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_1/html_builder/geometric_round/geo_round_circle.svg"
data-original-src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_1/html_builder/geometric_round/geo_round_circle.svg"
data-original-mimetype="image/svg+xml"
data-mimetype="image/svg+xml"
data-shape="html_builder/geometric_round/geo_round_circle"
data-file-name="team_member_1-circle.svg"
data-shape-colors=";;;;"
data-format-mimetype="image/png"/>
</div>
</div>
<div class="col-md-10 col-10 ps-0 s_blockquote_author">
<p class="mb-0"><strong>John DOE</strong><br/><span class="h6-fs"><font class="text-600">CEO of MyCompany</font></span></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_blog_post_card" name="Blog Post">
<section class="o_mail_snippet_general s_text_image" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 col-12 o_cc o_cc4">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
style="padding: 16px; width: 50% !important"
src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_2/html_builder/geometric_round/geo_round_circle.svg"
data-original-src="/web/image/mass_mailing.s_company_team_default_image_2"
data-original-mimetype="image/png"
data-mimetype="image/png"
data-shape="html_builder/geometric_round/geo_round_circle"/>
</div>
<h1 style="text-align: center"><font style="color: white">Julian Thorne</font></h1>
<p style="text-align: center"><font style="color: white">Head of Design</font></p>
</div>
<div class="col-md-6 col-12">
<p style="text-align: center">New Blog post</p>
<h1 style="text-align: center">The Joy of Coming Home</h1>
<p style="text-align: center">A love letter to the space you call your own.</p>
<p style="text-align: center"><a href="#" class="btn btn-secondary">Read Now</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_customer_quote" name="Customer Quote">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<p>
<span class="fa fa-quote-right fa-5x mx-auto" contenteditable="false"/>
</p>
<p style="text-align: center">"This company transformed our business. Their solutions are innovative and reliable"</p>
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
style="width: 15% !important"
src="/html_editor/image_shape/mass_mailing.s_company_team_default_image_3/html_builder/geometric_round/geo_round_circle.svg"
data-original-src="https://www.odoo.com/web/image/38874595-16ef5349/odoo-mobile.png"
data-original-mimetype="image/png"
data-shape="html_builder/geometric_round/geo_round_circle"
data-file-name="team_member_1-circle.svg"
data-shape-colors=";;;;"/>
</div>
<p style="text-align: center"><strong>Jane DOE</strong><br/>CEO of MyCompany</p>
</div>
</div>
</div>
</section>
</template>
<!-- Assets -->
<record id="mass_mailing.s_company_team_000_scss" model="ir.asset">
<field name="name">Company team 000 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_company_team/000.scss</field>
</record>
<record id="mass_mailing.s_blockquote_000_scss" model="ir.asset">
<field name="name">Blockquote 000 SCSS</field>
<field name="bundle">mass_mailing.assets_iframe_style</field>
<field name="path">mass_mailing/static/src/snippets/s_blockquote/000.scss</field>
</record>
</odoo>

View file

@ -0,0 +1,402 @@
<odoo>
<template id="s_text_block" name="Text">
<section class="s_text_block o_mail_snippet_general pt24 pb24" style="padding-left: 15px; padding-right: 15px;" data-vxml="001">
<div class="container s_allow_columns">
<p>Great stories have a <strong>personality</strong>. Consider telling a great story that provides personality. Writing a story with personality for potential clients will assist with making a relationship connection. This shows up in small quirks like word choices or phrases. Write from your point of view, not from someone else's experience.</p>
<p>Great stories are <strong>for everyone</strong> even when only written <strong>for just one person</strong>. If you try to write with a wide, general audience in mind, your story will sound fake and lack emotion. No one will be interested. Write for one person. If it's genuine for the one, it's genuine for the rest.</p>
</div>
</section>
</template>
<template id="s_link_list" name="Link List">
<section class="s_link_list o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<h1>Popular Links</h1>
<ul>
<li><a href="#" target="_blank" data-original-title="" title="">7 Design Secrets of the World's Most Beautiful Homes</a></li>
<li><a href="#" target="_blank" data-original-title="" title="">The Interior Trend You Can't Afford to Miss</a></li>
<li><a href="#" target="_blank" data-original-title="" title="">Why Your Living Room Feels Unfinished (And How to Fix It)</a></li>
<li><a href="#" target="_blank" data-original-title="" title="">5 Color Mistakes That Are Ruining Your Home's Vibe</a></li>
<li><a href="#" target="_blank" data-original-title="" title="">The Essential Guide to Timeless Furniture Investing</a></li>
</ul>
</div>
</div>
</div>
</section>
</template>
<template id="s_schedule" name="Schedule">
<section class="s_schedule o_mail_snippet_general pt16 pb16">
<div class="container">
<div class="row s_nb_column_fixed">
<div class="col-md-12 col-12">
<h3 class="text-center">Schedule</h3>
<div class="s_hr o_mail_snippet_general o_not_editable pt4 pb16 o_colored_level" data-name="Separator">
<hr class="w-50 mx-auto"/>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-12 col-md-12">
<table class="mx-auto">
<tr style="vertical-align:top">
<td style="text-align:right;" class="p-2">
<p><strong>8h:</strong></p>
</td>
<td class="p-2">
<p><strong>Welcome</strong></p>
</td>
</tr>
<tr style="vertical-align:top">
<td style="text-align:right;" class="p-2">
<p><strong>18h30:</strong></p>
</td>
<td class="p-2">
<p><strong>[speaker] &amp; [speaker]'s conference</strong></p>
<ul>
<li>Interactive Odoo demo</li>
<li>Best practices to digitize your company</li>
</ul>
</td>
</tr>
<tr style="vertical-align:top">
<td style="text-align:right;" class="p-2">
<p><strong>19h00:</strong></p>
</td>
<td class="p-2">
<p><strong>Table Ronde</strong></p>
<ul>
<li>Business Case</li>
<li>Client Testimonials</li>
</ul>
</td>
</tr>
<tr style="vertical-align:top">
<td style="text-align:right;" class="p-2">
<p><strong>19h30: </strong></p>
</td>
<td class="p-2">
<p><strong>Networking: Walking Dinner &amp; Drinks</strong></p>
</td>
</tr>
</table>
</div>
</div>
</div>
</section>
</template>
<template id="s_pricelist_boxed" name="Pricelist Boxed">
<section class="s_pricelist_boxed o_mail_snippet_general pt72 pb72 o_colored_level">
<div class="container">
<div class="row">
<div class="col-md-12 px-3 pt48 pb48 o_cc col-12" data-name="Menu">
<div class="row mx-auto">
<div class="col-md-12" data-name="Menu Heading">
<h2 style="text-align:center;">Our Menu</h2>
<p style="text-align:center;">Savor our fresh, local cuisine with a modern twist.<br/>Deliciously crafted for every taste!</p>
</div>
<div class="s_pricelist_boxed_section col-md-12 pt48 col-12" data-name="Menu Section">
<h3>&#160;&#160;Pizzas</h3>
<t t-call="mass_mailing.s_pricelist_boxed_item">
<t t-set="name">Margherita</t>
<t t-set="mobileSize" t-value="4"/>
<t t-set="size" t-value="3"></t>
<t t-set="price">$12.00</t>
<t t-set="description">Classic pizza with fresh mozzarella, San Marzano tomatoes, and basil leaves, drizzled with extra virgin olive oil.</t>
</t>
<t t-call="mass_mailing.s_pricelist_boxed_item">
<t t-set="name">Quattro Stagioni</t>
<t t-set="mobileSize" t-value="6"/>
<t t-set="size" t-value="4"></t>
<t t-set="price">$14.50</t>
<t t-set="description">A delicious mix of four toppings: mushrooms, artichokes, ham, and olives, all on a bed of mozzarella and tomato sauce.</t>
</t>
<t t-call="mass_mailing.s_pricelist_boxed_item">
<t t-set="name">Diavola</t>
<t t-set="mobileSize" t-value="4"/>
<t t-set="size" t-value="3"></t>
<t t-set="price">$13.50</t>
<t t-set="description">Spicy pepperoni paired with fiery chili flakes, mozzarella, and tomato sauce for a flavorful kick.</t>
</t>
</div>
<div class="s_pricelist_boxed_section col-md-12 pt48 col-12" data-name="Menu Section">
<h3>&#160;&#160;Pastas</h3>
<t t-call="mass_mailing.s_pricelist_boxed_item">
<t t-set="name">Spaghetti Carbonara</t>
<t t-set="mobileSize" t-value="7"/>
<t t-set="size" t-value="5"></t>
<t t-set="price">$15.00</t>
<t t-set="description">Traditional Roman dish with creamy egg, crispy pancetta, and Pecorino Romano, topped with black pepper.</t>
</t>
<t t-call="mass_mailing.s_pricelist_boxed_item">
<t t-set="name">Penne all'Arrabbiata</t>
<t t-set="mobileSize" t-value="7"/>
<t t-set="size" t-value="5"></t>
<t t-set="price">$13.00</t>
<t t-set="description">Penne pasta tossed in a spicy tomato and garlic sauce with a hint of chili peppers, finished with fresh parsley.</t>
</t>
<t t-call="mass_mailing.s_pricelist_boxed_item">
<t t-set="name">Lasagna al Forno</t>
<t t-set="mobileSize" t-value="6"/>
<t t-set="size" t-value="5"></t>
<t t-set="price">$16.00</t>
<t t-set="description">Layers of pasta, rich meat ragu, béchamel sauce, and melted mozzarella, baked to perfection.</t>
</t>
</div>
</div>
</div>
</div>
</div>
</section>
</template>
<template id="s_pricelist_boxed_item">
<div class="container">
<div class="row">
<div t-attf-class="col-md-{{size}} col-{{mobileSize}}" style="padding-right: 0px;">
<p t-out="name"></p>
</div>
<div t-attf-class="col-md-{{10 - size}} col-{{9 - mobileSize}}" style="padding-left: 0px; padding-right: 0px;">
<div class="s_hr o_mail_snippet_general o_not_editable pt8 pb8 o_colored_level" data-name="Separator">
<hr class="w-100 mx-auto" style="border-top-color: rgb(206, 198, 206);"/>
</div>
</div>
<div class="col-md-2 col-3">
<p t-out="price" style="text-align: right;"></p>
</div>
</div>
<div t-if="description" class="row">
<div class="col-md-12 col-12">
<p t-out="description"/>
</div>
</div>
</div>
</template>
<template id="s_text_describing_benefits" name="Benefits">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<p><span class="fa fa-asterisk me-2" contenteditable="false"/>What We Offer</p>
<h1><span class="display-3-fs">Discover our main three benefits</span></h1>
</div>
<div class="col-md-4 col-12">
<p><span class="display-4-fs">1</span></p>
<hr class="s_hr" style="border-top-color: rgb(156, 156, 148);" />
<h3>Fair pricing</h3>
<p>We provide transparent pricing that offers great value, ensuring you always get the best deal without hidden costs.</p>
</div>
<div class="col-md-4 col-12">
<p><span class="display-4-fs">2</span></p>
<hr class="s_hr" style="border-top-color: rgb(156, 156, 148);" />
<h3>24/7 Support</h3>
<p>Our support team is available 24/7 to assist with any inquiries or issues, ensuring you get help whenever you need it.</p>
</div>
<div class="col-md-4 col-12">
<p><span class="display-4-fs">3</span></p>
<hr class="s_hr" style="border-top-color: rgb(156, 156, 148);" />
<h3>Tax free</h3>
<p>Benefit from tax-free shopping, simplifying your purchase and enhancing your savings without any extra costs.</p>
</div>
</div>
</div>
</section>
</template>
<template id="s_title_with_side_text" name="Title with Side Text">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-6 col-12">
<h1><strong>Unveil Our Exclusive Collections</strong></h1>
</div>
<div class="col-md-6 col-12">
<p>Write one or two paragraphs describing your product or services. To be successful your content needs to be useful to your readers.</p>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_card" name="Card with Text">
<section class="o_mail_snippet_general pt16 pb16 bg-light" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<h1>Unlock your full potential</h1>
<p><strong>Why settle for a generic solution?</strong><br/>We don't just offer tools; we provide a competitive advantage. Our platform is engineered to streamline your workflow, eliminate bottlenecks, and help you scale faster than ever before.</p>
<ul>
<li>Automate your daily tasks. <a href="#">See how</a></li>
<li>Gain real-time insights. <a href="#">Learn More</a></li>
<li>Integrate with your favorite apps. <a href="#">Browse our documentation</a></li>
</ul>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_need_help" name="Need Help?">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<h1>Need help?</h1>
<p>In this section, you can address common questions efficiently.</p>
</div>
<div class="col-md-6 col-12">
<h3>What sets us apart?</h3>
<p>We deliver personalized solutions, ensuring that every customer receives top-tier service tailored to their needs.</p>
</div>
<div class="col-md-6 col-12">
<h3>Is the website user-friendly?</h3>
<p>Our website is designed for easy navigation, allowing you to find the information you need quickly and efficiently.</p>
</div>
<div class="col-md-6 col-12">
<h3>What support do we offer?</h3>
<p>We provide 24/7 support through various channels, including live chat, email, and phone, to assist with any queries.</p>
</div>
<div class="col-md-6 col-12">
<h3>How is your data secured?</h3>
<p>Your data is protected by advanced encryption and security protocols, keeping your personal information safe.</p>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_product_description" name="Product Description">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<h1>A great product</h1>
<p>Starting from $29.99</p>
<p><strong>Replace this block with the authentic, singular story of your product.</strong> Focus on the unique spark that gave it personality. <strong>Be short, be specific, and let your brand's voice shine</strong> through unique work choices. This explains the <em>soul</em> behind the product, inspiring a deeper connection beyond simple features.</p>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_product_showcase" name="Product Showcase">
<section class="o_mail_snippet_general" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12 pt16 pb16">
<h2>Design for the Soul: Why Your Home Should Be a Reflection of Your Best Self</h2>
<p>Great design is about more than just filling a room; it is about creating a lifestyle that feels both luxurious and meaningful. Our pieces are carefully made to bring soul to your space, blending modern ideas with the warmth of traditional craftsmanship. Every detail is a deliberate choice, intended to turn your house into a personal gallery where you can truly relax in style.</p>
<a href="#">Read More</a>
</div>
<div class="col-md-6 col-12 pt16 pb16">
<h2>Built to Last: The Beauty of Choosing Quality Materials</h2>
<p>True elegance is something you can feel, rooted in high-quality materials that only get better with time. By using the finest woods and textiles, we create furniture that doesn't just sit in a room—it grows with it. These pieces are designed to be your home's future heirlooms, crafted with such care that they will remain as beautiful and relevant years from now as they are today.</p>
<a href="#">Read More</a>
</div>
<div class="col-md-6 col-12 pt16 pb16">
<h2>The Art of the Escape: Creating a Quiet Sanctuary in a Busy World</h2>
<p>In a fast-paced world, your home should be your ultimate escape—a private place that brings you a sense of calm and clarity. Our collection focuses on clean lines and comfortable shapes, providing a sophisticated backdrop for your most important moments. We believe your surroundings should be a testament to your taste, offering the perfect l ease you need to unwind.</p>
<a href="#">Read More</a>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_contact" name="Contact and Schedule">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-6 col-12">
<h1>Let's get in touch</h1>
<p t-if="env.company.email"><a t-if="env.company.email" t-attf-href="mailto:#{env.company.email}" t-out="env.company.email"/></p>
<p><a href="#" class="btn btn-primary">Contact us</a></p>
</div>
<div class="col-md-3 col-12">
<u>Monday</u>
<p>8.00am - 6.00pm</p>
<u>Tuesday</u>
<p>8.00am - 6.00pm</p>
<u>Wednesday</u>
<p>8.00am - 12.00am</p>
<u>Thursday</u>
<p>8.00am - 6.00pm</p>
</div>
<div class="col-md-3 col-12">
<u>Friday</u>
<p>8.00am - 6.00pm</p>
<u>Saturday</u>
<p>8.00am - 6.00pm</p>
<u>Sunday</u>
<p>Closed</p>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_signature" name="Mail Structure">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<p>Best,</p>
<p t-out="env.user.name"/>
<p><em>Customer Service</em></p>
<p><img src="/mass_mailing/static/src/img/theme_default/signature.png"
class="img img-fluid o_we_custom_image o_mail_signature_image"
data-original-src="/mass_mailing/static/src/img/theme_default/signature.png"
style="width: 50% !important"/></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_left_cta" name="Call To Action with Text">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<h3>The Mastery of Making</h3>
<p>Don't settle for the ordinary. Our artisans obsess over every detail to create the perfection your home demands. Own a masterpiece today.</p>
<a href="#" class="btn btn-primary">Buy Now</a>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_center_cta" name="Call To Action with Centered Text">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12">
<h3 style="text-align: center">Invest in the Future</h3>
<p style="text-align: center">True luxury is measured in decades.<br/>We blend heritage craft with the finest materials.<br/>Discover pieces that age beautifully.</p>
<p style="text-align: center"><a href="#" class="btn btn-primary">Shop now</a></p>
</div>
</div>
</div>
</section>
</template>
<template id="s_text_cta_card" name="Call To Action Card">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-md-12 col-12 pt16 pb16 border">
<h3 style="text-align: center">Designed for You</h3>
<p style="text-align: center">True luxury is more rewarding as a member.<br/>Join our inner circle for exclusive benefits and early access.<br/>Elevate your home today.</p>
<p style="text-align: center"><a href="#" class="btn btn-primary">Become a Member</a></p>
</div>
</div>
</div>
</section>
</template>
</odoo>

View file

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_centered_cta_badge" name="Alert Info CTA">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="s_cta_badge alert alert-info rounded mx-auto py-2 px-3" data-name="CTA Badge" style="border-radius: 32px !important;">
<p class="mb-0">
<span class="fa fa-fw fa-shopping-cart" contenteditable="false"/>&#160;&#160;Huge holiday sale savings. Don't miss out. &#160;&#160;&#160;&#160;<a href="#" class="btn btn-link">Shop Now</a>
</p>
</div>
</section>
</template>
<template id="s_special_offer_cta" name="Special Offer CTA">
<section class="o_mail_snippet_general pt16 pb16" data-vxml="001">
<div class="s_cta_badge border rounded mx-auto py-2 px-3" data-name="CTA Badge" style="border-radius: 32px !important;">
<p class="mb-0">
<span class="fa fa-fw fa-tag" contenteditable="false"/>&#160;&#160;<strong>Special Offers</strong>. Complimentary care packs included with every sofa. &#160;&#160;&#160;&#160;<a href="#" class="btn btn-primary">See more</a>
</p>
</div>
</section>
</template>
<template id="s_section_mobile" name="App Advertising Block">
<section class="o_mail_snippet_general s_text_image pt16 pb16" data-vxml="001">
<div class="container">
<div class="row align-items-center">
<div class="col-md-4 col-12">
<div class="o_not_editable">
<img class="img img-fluid o_editable_media mx-auto"
style="width: 50% !important"
src="https://www.odoo.com/web/image/38874595-16ef5349/odoo-mobile.png"
data-original-src="https://www.odoo.com/web/image/38874595-16ef5349/odoo-mobile.png"
data-original-mimetype="image/png"
data-mimetype="image/png"
alt="Odoo Mobile" />
</div>
</div>
<div class="col-md-8 col-12">
<p style="text-align: center">Available for iOS and Android.</p>
<div class="row">
<div class="col-md-4 offset-2">
<div class="o_not_editable">
<a href="https://play.google.com/store/apps/details?id=com.odoo.mobile" target="_blank">
<img class="img img-fluid o_editable_media mx-auto"
src="https://download.odoocdn.com/digests/digest/static/src/img/google_play.png"
data-original-src="https://download.odoocdn.com/digests/digest/static/src/img/google_play.png"
data-original-mimetype="image/png"
data-mimetype="image/png"
alt="Google Play Store"/>
</a>
</div>
</div>
<div class="col-md-4 col-4">
<div class="o_not_editable">
<a href="https://itunes.apple.com/us/app/odoo/id1272543640" target="_blank">
<img class="img img-fluid o_editable_media mx-auto"
src="https://download.odoocdn.com/digests/digest/static/src/img/app_store.png"
data-original-src="https://download.odoocdn.com/digests/digest/static/src/img/app_store.png"
data-original-mimetype="image/png"
data-mimetype="image/png"
alt="App Store"/>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</template>
</odoo>

View file

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_alert" name="Alert">
<div class="s_mail_alert o_mail_snippet_general pt16 pb16 mx-auto">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="s_alert s_alert_md s_alert_info w-100" style="background-color: rgb(209 236 241); border-width: 1px !important; border-color: rgb(190 229 235) !important;">
<div class="s_alert_icon" valign="top">
<i class="fa fa-2x fa-info-circle" style="color: rgb(12 84 96);"/>
</div>
<div class="s_alert_content">
<h3><span style="color: rgb(12 84 96); font-size: 16px; font-weight: bolder;">Explain the benefits you offer</span></h3>
<p><font style="color: rgb(12 84 96);">Don't write about products or services here, write about solutions.</font></p>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<template id="s_alert_options" inherit_id="mass_mailing.snippet_options">
<!-- Keep those options in separate xpath for options order -->
<xpath expr="//div[@id='so_width']" position="after">
<div data-selector=".s_mail_alert .s_alert">
<we-select string="Size">
<we-button data-select-class="s_alert_sm">Small</we-button>
<we-button data-select-class="s_alert_md">Medium</we-button>
<we-button data-select-class="s_alert_lg">Large</we-button>
</we-select>
<we-colorpicker string="Background Color" data-name="alert_colorpicker_opt"
data-select-style="true"
data-css-property="background-color"
data-color-prefix="alert-"/>
</div>
<div data-selector=".s_mail_alert .s_alert">
<t t-call="mass_mailing.snippet_options_border_widgets">
<t t-set="so_rounded_no_dependencies" t-value="True"/>
</t>
</div>
</xpath>
</template>
<!-- Assets -->
<record id="mass_mailing.s_alert_001_scss" model="ir.asset">
<field name="name">Alert 001 SCSS</field>
<field name="bundle">web.assets_frontend</field>
<field name="path">mass_mailing/static/src/snippets/s_alert/000.scss</field>
</record>
</odoo>

View file

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_blockquote" name="Blockquote">
<div class="s_mail_blockquote blockquote o_mail_snippet_general o_cc o_cc2 pt16 pb16 mb-0 w-100">
<div class="container">
<div class="row">
<div class="col-lg-1 pb80" style="text-align: right;">
<i class="fa fa-quote-left"/>
</div>
<div class="col-lg-10">
<div>
<p><i>Write a quote here from one of your customers. Quotes are a great way to build confidence in your products or services.</i></p>
<div>
<img src="/web_editor/image_shape/mass_mailing.s_company_team_default_image_2/mass_mailing/basic/circle.svg" style="width: 40px" class="img me-2" data-shape="mass_mailing/basic/circle" data-file-name="team_member_2-circle.svg" data-shape-colors=";;;;" data-original-mimetype="image/png"/>
<p style="font-weight: bolder; font-size: 14px;"><b>John DOE</b> &#8226; CEO of MyCompany</p>
</div>
</div>
</div>
<div class="col-lg-1 pt80" style="text-align: left;">
<i class="fa fa-quote-right"/>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_call_to_action" name="Call to Action">
<div class="s_call_to_action o_mail_snippet_general o_cc o_cc3 pt48 pb24">
<div class="container">
<div class="row">
<div class="col-lg-9">
<h3><span style="font-weight: bolder;">50,000+ companies</span> run Odoo.</h3>
<p>Join us and make your company a better place.</p>
</div>
<div class="col-lg-3" style="text-align: center;">
<a href="#" class="btn btn-primary btn-lg">Contact us</a>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_color_blocks_2" name="Big Boxes">
<div class="s_mail_color_blocks_2 o_mail_snippet_general">
<div class="container">
<div class="row">
<div class="col-lg-6 o_cc o_cc3 pt32 pb32">
<i class="fa fa-shield fa-5x m-3 mx-auto d-block"/>
<h2 style="text-align: center;">A color block</h2>
<p style="text-align: center;">Color blocks are a simple and effective way to <b>present and highlight your content</b>. Choose an image or a color for the background. You can even resize and duplicate the blocks to create your own layout. Add images or icons to customize the blocks.</p>
<p style="text-align: center;"><a href="#" class="btn btn-primary">More Details</a></p>
</div>
<div class="col-lg-6 o_cc o_cc5 pt32 pb32">
<i class="fa fa-cube fa-5x m-3 mx-auto d-block"/>
<h2 style="text-align: center;">Another color block</h2>
<p style="text-align: center;">Color blocks are a simple and effective way to <b>present and highlight your content</b>. Choose an image or a color for the background. You can even resize and duplicate the blocks to create your own layout. Add images or icons to customize the blocks.</p>
<p style="text-align: center;"><a href="#" class="btn btn-primary">More Details</a></p>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_company_team" name="Team">
<div class="s_company_team o_mail_snippet_general">
<div class="container">
<div class="row">
<div class="col-lg-6 pt24 pb24">
<div class="container">
<div class="row">
<div class="col-lg-3 pb16 px-0">
<img src="/web_editor/image_shape/mass_mailing.s_company_team_default_image_1/mass_mailing/basic/circle.svg" class="img-fluid mx-auto" data-shape="mass_mailing/basic/circle" data-file-name="team_member_1-circle.svg" data-shape-colors=";;;;" data-original-mimetype="image/png"/>
</div>
<div class="col-lg-9">
<h3>Tony Fred, CEO</h3>
<p>Founder and chief visionary, Tony is the driving force behind the company. He loves to keep his hands full by participating in the development of the software, marketing, and customer experience strategies.</p>
</div>
</div>
</div>
</div>
<div class="col-lg-6 pt24 pb24">
<div class="container">
<div class="row">
<div class="col-lg-3 px-0 pb16">
<img src="/web_editor/image_shape/mass_mailing.s_company_team_default_image_2/mass_mailing/basic/circle.svg" class="img-fluid mx-auto" data-shape="mass_mailing/basic/circle" data-file-name="team_member_2-circle.svg" data-shape-colors=";;;;" data-original-mimetype="image/png"/>
</div>
<div class="col-lg-9">
<h3>Mich Stark, COO</h3>
<p>Mich loves taking on challenges. With his multi-year experience as Commercial Director in the software industry, Mich has helped the company to get where it is today. Mich is among the best minds.</p>
</div>
</div>
</div>
</div>
<div class="col-lg-6 pt24 pb24">
<div class="container">
<div class="row">
<div class="col-lg-3 px-0 pb16">
<img src="/web_editor/image_shape/mass_mailing.s_company_team_default_image_3/mass_mailing/basic/circle.svg" class="img-fluid mx-auto" data-shape="mass_mailing/basic/circle" data-file-name="team_member_3-circle.svg" data-shape-colors=";;;;" data-original-mimetype="image/png"/>
</div>
<div class="col-lg-9">
<h3>Aline Turner, CTO</h3>
<p>Aline is one of the iconic people in life who can say they love what they do. She mentors 100+ in-house developers and looks after the community of thousands of developers.</p>
</div>
</div>
</div>
</div>
<div class="col-lg-6 pt24 pb24">
<div class="container">
<div class="row">
<div class="col-lg-3 px-0 pb16">
<img src="/web_editor/image_shape/mass_mailing.s_company_team_default_image_4/mass_mailing/basic/circle.svg" class="img-fluid mx-auto" data-shape="mass_mailing/basic/circle" data-file-name="team_member_4-circle.svg" data-shape-colors=";;;;" data-original-mimetype="image/png"/>
</div>
<div class="col-lg-9">
<h3>Iris Joe, CFO</h3>
<p>Iris, with her international experience, helps us easily understand the numbers and improves them. She is determined to drive success and delivers her professional acumen to bring the company to the next level.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,63 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_comparisons" name="Comparisons">
<div class="s_comparisons o_mail_snippet_general pt32 pb32">
<div class="container">
<div class="row">
<div class="col-lg-6 s_col_no_bgcolor pt32 pb16">
<div class="card o_cc o_cc2">
<div class="card-header"><h2 style="text-align: center;"><span style="font-weight: bolder;">DEFAULT</span></h2></div>
<div class="bg-white pt24 pb24">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<h3 class="card-title" style="text-align: center;">$8</h3>
<p class="card-title" style="text-align: center;"><span style="font-size: 11px">user / month (billed annually)</span></p>
</li>
<li class="list-group-item"><p style="text-align: center;">Basic features</p></li>
<li class="list-group-item"><p style="text-align: center;">Basic management</p></li>
<li class="list-group-item"><p style="text-align: center;">No customization</p></li>
<li class="list-group-item"><p style="text-align: center;">No support</p></li>
</ul>
</div>
<div class="card-footer" style="text-align: center;">
<a href="#" class="btn btn-primary">More</a>
</div>
</div>
</div>
<div class="col-lg-6 s_col_no_bgcolor pt32 pb16">
<div class="card o_cc o_cc3">
<div class="card-header"><h2 style="text-align: center;"><span style="font-weight: bolder;">PRO</span></h2></div>
<div class="bg-white pt24 pb24">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<h3 class="card-title" style="text-align: center;">$18</h3>
<p class="card-title" style="text-align: center;"><span style="font-size: 11px">user / month (billed annually)</span></p>
</li>
<li class="list-group-item">
<p style="text-align: center;"><span style="font-weight:bolder">Advanced</span>
features</p>
</li>
<li class="list-group-item">
<p style="text-align: center;"><span style="font-weight:bolder">Total</span>
management</p>
</li>
<li class="list-group-item">
<p style="text-align: center;"><span style="font-weight:bolder">Fully customizable</span></p>
</li>
<li class="list-group-item">
<p style="text-align: center;"><span style="font-weight:bolder">24/7 Support</span></p>
</li>
</ul>
</div>
<div class="card-footer" style="text-align: center;">
<a href="#" class="btn btn-primary">More</a>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_coupon_code" name="Promo Code">
<div class="s_discount2 o_mail_block_discount2 o_mail_snippet_general pt32 pb32" style="padding-left: 15px; padding-right: 15px;">
<h2 style="text-align: center;"><span style="font-weight: bolder;">GET $20 OFF</span></h2>
<p style="text-align: center;">
Here's your coupon code - but hurry! Ends 9/28
</p>
<table border="0" cellpadding="0" cellspacing="0" align="center" class="border" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
<tr>
<td width="50" height="50" align="center" class="o_mail_no_resize mx-auto o_cc o_cc3" style="width:50px!important; min-width: 50px; max-width:5.6rem; text-align: center;"><i class="fa fa-2x fa-ticket"></i></td>
<td width="200" height="50" align="center" class="o_cc" style="font-size: 15px; line-height: 22px; font-weight: 700; min-width: 150px; width: 200px; text-align: center;"><p class="mb0">ENDOFSUMMER20</p></td>
</tr>
</table>
<br/>
<p style="text-align:center;">
<a role="button" href="#" class="btn btn-primary">Use now</a>
</p>
</div>
</template>
</odoo>

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_cover" name="Cover">
<div class="s_cover o_mail_snippet_general">
<div class="container">
<div class="row">
<div class="col-lg-12 oe_img_bg pt56 pb48" style="background-image: url('/web/image/mass_mailing.s_cover_default_image');">
<h1 style="text-align: center;"><font style="font-size: 62px; font-weight: bold;">Catchy Headline</font></h1>
<p class="lead" style="text-align: center;">Write one or two paragraphs describing your product, services or a specific feature.<br/> To be successful your content needs to be useful to your readers.</p>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,43 +0,0 @@
<odoo>
<template id="s_event" name="Event">
<div class="s_mail_block_event o_mail_snippet_general bg-100">
<div class="container">
<div class="row align-items-center">
<div class="s_col_no_bgcolor col-lg-6 pt32 pb32">
<div class="card bg-white h-100 rounded" style="border-radius: 5px !important; border-color: rgb(233, 236, 239) !important;">
<img class="card-img-top" src="/web/image/mass_mailing.s_event_default_image_1" alt=""/>
<div class="card-body">
<h3 class="card-title">
<font style="font-size: 18px;">Event One</font>
</h3>
<p><font class="text-o-color-1">25 September 2022 - 4:30 PM</font></p>
<p>London, United Kingdom</p>
<p>
<a href="#" target="_blank" class="btn btn-primary">Register Now</a>
</p>
</div>
</div>
</div>
<div class="s_col_no_bgcolor col-lg-6 pt32 pb32">
<div class="card bg-white h-100 rounded" style="border-radius: 5px !important; border-color: rgb(233, 236, 239) !important;">
<img class="card-img-top" src="/web/image/mass_mailing.s_event_default_image_2" alt=""/>
<div class="card-body">
<h3 class="card-title">
<font style="font-size: 18px">Event Two</font>
</h3>
<p><font class="text-o-color-1">26 September 2022 - 1:30 PM</font></p>
<p>London, United Kingdom</p>
<p>
<a href="#" target="_blank" class="btn btn-primary">Register Now</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_features" name="Features">
<div class="s_features o_mail_snippet_general">
<div class="container">
<div class="row">
<div class="col-lg-4 o_cc pt16 pb16" style="text-align: center;">
<i class="fa fa-3x fa-gear bg-primary" style="padding: 10px; border-radius: 3px !important;"></i>
<br/>
<br/>
<h3>First Feature</h3>
<p>Tell what's the value for the customer for this feature.</p>
</div>
<div class="col-lg-4 o_cc pt16 pb16" style="text-align: center;">
<i class="fa fa-3x fa-photo bg-o-color-5" style="padding: 10px; border-radius: 3px !important;"></i>
<br/>
<br/>
<h3>Second Feature</h3>
<p>Write what the customer would like to know, not what you want to show.</p>
</div>
<div class="col-lg-4 o_cc pt16 pb16" style="text-align: center;">
<i class="fa fa-3x fa-leaf bg-secondary" style="padding: 10px; border-radius: 3px !important;"></i>
<br/>
<br/>
<h3>Third Feature</h3>
<p>A small explanation of this great feature, in clear words.</p>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,93 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_features_grid" name="Features Grid">
<div class="s_mail_features_grid o_mail_snippet_general pt48 pb24">
<div class="container">
<div class="row">
<div class="col-lg-6 o_cc">
<div class="container">
<div class="row g-0">
<div class="col-lg-12 pb24">
<h2>First list of Features</h2>
<p>Add a great slogan.</p>
</div>
</div>
<div class="row">
<div class="col-lg-2 px-0" style="text-align: center;">
<i class="fa fa-2x fa-font-awesome bg-primary" style="padding: 10px; border-radius: 50px !important;"></i>
</div>
<div class="col-lg-10 pb16">
<h3>Change Icons</h3>
<p>Double click an icon to replace it with one of your choice.</p>
</div>
</div>
<div class="row">
<div class="col-lg-2 px-0" style="text-align: center;">
<i class="fa fa-2x fa-files-o bg-primary" style="padding: 10px; border-radius: 50px !important;"></i>
</div>
<div class="col-lg-10 pb16">
<h3>Duplicate</h3>
<p>Duplicate blocks and columns to add more features.</p>
</div>
</div>
<div class="row">
<div class="col-lg-2 px-0" style="text-align: center;">
<i class="fa fa-2x fa-trash bg-primary" style="padding: 10px; border-radius: 50px !important;"></i>
</div>
<div class="col-lg-10 pb16">
<h3>Delete Blocks</h3>
<p>Select and delete blocks to remove features.</p>
</div>
</div>
</div>
</div>
<div class="col-lg-6 o_cc">
<div class="container">
<div class="row g-0">
<div class="col-lg-12 pb24">
<h2>Second list of Features</h2>
<p>Add a great slogan.</p>
</div>
</div>
<div class="row">
<div class="col-lg-2 px-0" style="text-align: center;">
<i class="fa fa-2x fa-magic bg-secondary" style="padding: 10px; border-radius: 3px !important;"></i>
</div>
<div class="col-lg-10 pb16">
<h3>Great Value</h3>
<p>Turn every feature into a benefit for your reader.</p>
</div>
</div>
<div class="row">
<div class="col-lg-2 px-0" style="text-align: center;">
<i class="fa fa-2x fa-eyedropper bg-secondary" style="padding: 10px; border-radius: 3px !important;"></i>
</div>
<div class="col-lg-10 pb16">
<h3>Edit Styles</h3>
<p>You can edit colors and backgrounds to highlight features.</p>
</div>
</div>
<div class="row">
<div class="col-lg-2 px-0" style="text-align: center;">
<i class="fa fa-2x fa-picture-o bg-secondary" style="padding: 10px; border-radius: 3px !important;"></i>
</div>
<div class="col-lg-10 pb16">
<h3>Sample Icons</h3>
<p>All these icons are completely free for commercial use.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<record id="mass_mailing.s_features_grid_000_scss" model="ir.asset">
<field name="name">Features grid 000 SCSS</field>
<field name="bundle">web.assets_frontend</field>
<field name="path">mass_mailing/static/src/snippets/s_features_grid/000.scss</field>
</record>
</odoo>

View file

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_hr" name="Separator" inherit_id="web_editor.s_hr" primary="True">
<xpath expr="//div[hasclass('s_hr')]" position="attributes">
<attribute name="class" add="o_mail_snippet_general pt16 pb16" remove="pt32 pb32" separator=" "/>
</xpath>
<xpath expr="//hr" position="attributes">
<attribute name="class" remove="w-100 mx-auto" separator=" "/>
</xpath>
</template>
<template id="s_hr_options" inherit_id="mass_mailing.snippet_options">
<xpath expr="." position="inside">
<div data-selector=".s_hr" data-target="hr">
<t t-call="mass_mailing.snippet_options_border_line_widgets">
<t t-set="label">Border</t>
<t t-set="direction" t-value="'top'"/>
</t>
<we-select string="Width">
<we-button data-select-class="w-25">25%</we-button>
<we-button data-select-class="w-50">50%</we-button>
<we-button data-select-class="w-75">75%</we-button>
<we-button data-select-class="w-100" data-name="so_width_100">100%</we-button>
</we-select>
<we-button-group string="Alignment" data-dependencies="!so_width_100">
<we-button class="fa fa-fw fa-align-left" title="Left" data-select-class="me-auto"/>
<we-button class="fa fa-fw fa-align-center" title="Center" data-select-class="mx-auto"/>
<we-button class="fa fa-fw fa-align-right" title="Right" data-select-class="ms-auto"/>
</we-button-group>
</div>
</xpath>
</template>
<record id="mass_mailing.s_hr_000_scss" model="ir.asset">
<field name="name">Hr 000 SCSS</field>
<field name="bundle">web.assets_frontend</field>
<field name="path">mass_mailing/static/src/snippets/s_hr/000.scss</field>
</record>
</odoo>

View file

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_image_text" name="Image - Text">
<div class="s_text_image o_mail_snippet_general pt32 pb32">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 o_cc px-0">
<img src="/web/image/mass_mailing.s_image_text_default_image" class="img w-100" />
</div>
<div class="col-lg-6 o_cc pt16 pb16">
<h3>Omnichannel sales</h3>
<p style="text-align: justify;">Get your inside sales (CRM) fully integrated with online sales (eCommerce), in-store sales (Point of Sale) and marketplaces like eBay and Amazon.</p>
<div style="text-align: left;">
<a href="#" class="btn btn-link">Read More</a>
</div>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,313 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Template -->
<template id="s_masonry_block" name="Masonry">
<div class="s_masonry_block o_mail_snippet_general" data-vcss="001">
<div class="container text-white">
<t t-call="mass_mailing.s_masonry_block_default_template"/>
</div>
</div>
</template>
<!-- Templates -->
<template id="s_masonry_block_default_template" groups="base.group_user">
<div class="row">
<div class="col-lg-6 oe_img_bg text-center pb224 pt224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-lg-6 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</div>
</div>
</template>
<template id="s_masonry_block_reversed_template" groups="base.group_user">
<div class="row">
<div class="col-lg-6 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</div>
<div class="col-lg-6 oe_img_bg text-center pb224 pt224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
</div>
</template>
<template id="s_masonry_block_images_template" groups="base.group_user">
<div class="row">
<div class="col-lg-6 oe_img_bg text-center pb224 pt224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-lg-6 oe_img_bg text-center pb224 pt224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
</div>
</template>
<template id="s_masonry_block_image_texts_image_template" groups="base.group_user">
<div class="row">
<div class="col-lg-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
<div class="col-lg-3 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-lg-12 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-12 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</div>
<div class="col-lg-6 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
</div>
</template>
<template id="s_masonry_block_mosaic_template" groups="base.group_user">
<div class="row">
<div class="col-lg-6 s_col_no_resize o_masonry_grid_container">
<div class="row">
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
<div class="row">
<div class="col-lg-12 oe_img_bg text-center pt224 pb224" data-name="Block"
style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
</div>
</div>
<div class="col-lg-6 s_col_no_resize o_masonry_grid_container">
<div class="row">
<div class="col-lg-12 oe_img_bg text-center pt224 pb224" data-name="Block"
style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
</div>
<div class="row">
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-6 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</div>
</div>
</template>
<template id="s_masonry_block_texts_image_texts_template" groups="base.group_user">
<div class="row">
<div class="col-lg-3 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-lg-12 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-12 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</div>
<div class="col-lg-6 oe_img_bg text-center pt224 pb224" data-name="Block"
style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-lg-3 s_col_no_resize o_masonry_grid_container">
<div class="row h-100">
<div class="col-lg-12 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-12 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</div>
</div>
</template>
<template id="s_masonry_block_alternation_text_template" groups="base.group_user">
<div class="row">
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</template>
<template id="s_masonry_block_alternation_text_image_template" groups="base.group_user">
<div class="row">
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
</div>
</template>
<template id="s_masonry_block_alternation_image_text_template" groups="base.group_user">
<div class="row">
<div class="col-lg-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc4" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-3 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_2);">
<p><br/></p>
</div>
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc3" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</template>
<template id="s_masonry_block_alternation_text_image_text_template" groups="base.group_user">
<div class="row">
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="col-lg-6 oe_img_bg text-center pt224 pb224" data-name="Block" style="background-image: url(/web/image/mass_mailing.s_masonry_block_default_image_1);">
<p><br/></p>
</div>
<div class="col-lg-3 pt24 pb8 text-center o_cc o_cc2" data-name="Block">
<h3>A great title</h3>
<p>And a great subtitle</p>
</div>
</div>
</template>
<!-- Options -->
<template id="s_masonry_block_options" inherit_id="mass_mailing.snippet_options">
<xpath expr="//div[@data-js='layout_column']" position="after">
<div data-js="MasonryLayout" data-selector=".s_masonry_block">
<we-select string="Template"
data-name="masonry_template_opt"
data-attribute-name="masonryTemplate"
data-attribute-default-value="default">
<we-button title="Default"
data-select-template="mass_mailing.s_masonry_block_default_template"
data-select-data-attribute="default"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_default.svg"/>
<we-button title="Default Reversed"
data-select-template="mass_mailing.s_masonry_block_reversed_template"
data-select-data-attribute="default_reversed"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_reversed.svg"/>
<we-button title="Images"
data-select-template="mass_mailing.s_masonry_block_images_template"
data-select-data-attribute="images"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_images.svg"/>
<we-button title="Image Text Image"
data-select-template="mass_mailing.s_masonry_block_image_texts_image_template"
data-select-data-attribute="image_text_image"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_image_texts_image.svg"/>
<we-button title="Mosaic"
data-select-template="mass_mailing.s_masonry_block_mosaic_template"
data-select-data-attribute="mosaic"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_mosaic.svg"/>
<we-button title="Text Image Text"
data-select-template="mass_mailing.s_masonry_block_texts_image_texts_template"
data-select-data-attribute="text_image_text"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_texts_image_texts.svg"/>
<we-button title="Alternate Text"
data-select-template="mass_mailing.s_masonry_block_alternation_text_template"
data-select-data-attribute="alternate_text"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_alternate_texts.svg"/>
<we-button title="Alternate Text Image"
data-select-template="mass_mailing.s_masonry_block_alternation_text_image_template"
data-select-data-attribute="alternate_text_image"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_alternate_text_image.svg"/>
<we-button title="Alternate Image Text"
data-select-template="mass_mailing.s_masonry_block_alternation_image_text_template"
data-select-data-attribute="alternate_image_text"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_alternate_image_text.svg"/>
<we-button title="Alternate Text Image Text"
data-select-template="mass_mailing.s_masonry_block_alternation_text_image_text_template"
data-select-data-attribute="alternate_text_image_text"
data-img="/mass_mailing/static/src/img/snippets_options/masonry_template_alternate_text_image_text.svg"/>
</we-select>
</div>
</xpath>
</template>
<!-- Assets -->
<record id="mass_mailing.s_masonry_block_001_scss" model="ir.asset">
<field name="name">Masonry block 001 SCSS</field>
<field name="bundle">web.assets_frontend</field>
<field name="path">mass_mailing/static/src/snippets/s_masonry_block/001.scss</field>
</record>
</odoo>

View file

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_media_list" name="Media List">
<div class="s_media_list o_mail_snippet_general pt8 pb8 o_cc o_cc2" data-vcss="001">
<div class="container">
<div class="row s_nb_column_fixed">
<div class="col-lg-12 s_media_list_item pt8 pb8" data-name="Media item">
<div class="row s_col_no_resize s_col_no_bgcolor align-items-center o_cc o_cc1">
<div class="col-lg-4 s_media_list_img_wrapper align-self-stretch px-0">
<img src="/web/image/mass_mailing.s_media_list_default_image_1" class="s_media_list_img h-100 w-100" alt=""/>
</div>
<div class="col-lg-8 s_media_list_body">
<h3>Media heading</h3>
<p>Use this snippet to build various types of components that feature a left- or right-aligned image alongside textual content. Duplicate the element to create a list that fits your needs.</p>
<a href="#" class="btn btn-primary">Discover</a>
</div>
</div>
</div>
<div class="col-lg-12 s_media_list_item pt8 pb8" data-name="Media item">
<div class="row s_col_no_resize s_col_no_bgcolor align-items-center o_cc o_cc1">
<div class="col-lg-4 s_media_list_img_wrapper align-self-stretch px-0">
<img src="/web/image/mass_mailing.s_media_list_default_image_2" class="s_media_list_img h-100 w-100" alt=""/>
</div>
<div class="col-lg-8 s_media_list_body">
<h3>Event heading</h3>
<p>Speakers from all over the world will join our experts to give inspiring talks on various topics. Stay on top of the latest business management trends &amp; technologies</p>
</div>
</div>
</div>
<div class="col-lg-12 s_media_list_item pt8 pb8" data-name="Media item">
<div class="row s_col_no_resize s_col_no_bgcolor align-items-center o_cc o_cc1">
<div class="col-lg-4 s_media_list_img_wrapper align-self-stretch px-0">
<img src="/web/image/mass_mailing.s_media_list_default_image_3" class="s_media_list_img h-100 w-100" alt=""/>
</div>
<div class="col-lg-8 s_media_list_body">
<h3>Post heading</h3>
<p>Use this component for creating a list of featured elements to which you want to bring attention.</p>
<a href="#">Continue reading <i class="fa fa-long-arrow-right align-middle ms-1"/></a>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<record id="mass_mailing.s_media_list_001_scss" model="ir.asset">
<field name="name">Media list 001 SCSS</field>
<field name="bundle">web.assets_frontend</field>
<field name="path">mass_mailing/static/src/snippets/s_media_list/001.scss</field>
</record>
</odoo>

View file

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_numbers" name="Numbers">
<div class="s_numbers o_mail_snippet_general o_cc o_cc1">
<div class="container">
<div class="row">
<div class="col-lg-4 pt24 pb24 o_cc o_cc2" style="text-align: center;">
<span style="font-size: 48px;">12</span>
<p>Useful options</p>
</div>
<div class="col-lg-4 pt24 pb24 o_cc o_cc4" style="text-align: center;">
<span style="font-size: 48px;">45</span>
<p>Beautiful snippets</p>
</div>
<div class="col-lg-4 pt24 pb24 o_cc o_cc2" style="text-align: center;">
<span style="font-size: 48px;">8</span>
<p>Amazing pages</p>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_picture" name="Picture">
<div class="s_picture o_mail_snippet_general pt48 pb24 o_cc o_cc2" style="padding-left: 15px; padding-right: 15px;">
<div class="container s_allow_columns">
<h2 style="text-align: center;">
<font style="font-size: 48px;">A Punchy Headline</font>
</h2>
<p style="text-align: center;">With strong technical foundations, Odoo's framework is unique. It provides <span style="font-weight: bolder;">top notch usability that scales across all apps</span>.</p>
<img src="/web/image/mass_mailing.s_picture_default_image" style="padding: 10px;" class="mx-auto d-block mw-100" width="500" alt=""/>
<p style="text-align: center;"><font style="font-size: 12px;">Add a caption to enhance the meaning of this image.</font></p>
</div>
</div>
</template>
</odoo>

View file

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_product_list" name="Items">
<div class="s_mail_product_list o_mail_snippet_general">
<div class="container">
<div class="row">
<div class="col-lg-4 o_cc pt16 pb16">
<a href="">
<img src="/web/image/mass_mailing.s_product_list_default_image_1" alt="" class="img img-fluid" style="padding: 15px 0px"/>
</a>
<p style="text-align: center;">Check out all our furniture</p>
<p style="text-align: center;"><a class="btn btn-primary" href="#">Furniture</a></p>
</div>
<div class="col-lg-4 o_cc pt16 pb16">
<a href="">
<img src="/web/image/mass_mailing.s_product_list_default_image_2" alt="" class="img img-fluid" style="padding: 15px 0px"/>
</a>
<p style="text-align: center;">Check out all our clothes</p>
<p style="text-align: center;"><a class="btn btn-primary" href="#">Clothes</a></p>
</div>
<div class="col-lg-4 o_cc pt16 pb16">
<a href="">
<img src="/web/image/mass_mailing.s_product_list_default_image_3" alt="" class="img img-fluid" style="padding: 15px 0px"/>
</a>
<p style="text-align: center;">Check out all our books</p>
<p style="text-align: center;"><a class="btn btn-primary" href="#">Books</a></p>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_rating" name="Rating">
<div class="s_rating o_mail_snippet_general pt16 pb16" style="padding-left: 15px; padding-right: 15px;" data-vcss="001" data-icon="fa-star">
<h3>Quality</h3>
<div class="s_rating_icons o_not_editable">
<span class="s_rating_active_icons">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
</span>
<span class="s_rating_inactive_icons">
<i class="fa fa-star-o"></i>
<i class="fa fa-star-o"></i>
</span>
</div>
</div>
</template>
<template id="s_rating_options" inherit_id="mass_mailing.snippet_options">
<xpath expr="." position="inside">
<div data-js="Rating" data-selector=".s_rating">
<we-select string="Icon">
<we-button data-set-icons="fa-star"><i class="fa fa-fw fa-star"/> Stars</we-button>
<we-button data-set-icons="fa-thumbs-up"><i class="fa fa-fw fa-thumbs-up"/> Thumbs</we-button>
<we-button data-set-icons="fa-circle"><i class="fa fa-fw fa-circle"/> Circles</we-button>
<we-button data-set-icons="fa-square"><i class="fa fa-fw fa-square"/> Squares</we-button>
<we-button data-set-icons="fa-heart"><i class="fa fa-fw fa-heart"/> Hearts</we-button>
<we-button data-set-icons="custom" class="d-none">Custom</we-button>
</we-select>
<we-row string="&#8985; Active">
<we-colorpicker data-select-style="" data-apply-to=".s_rating_active_icons" data-css-property="color" data-color-prefix="text-"/>
<we-button data-custom-icon="true" data-custom-active-icon="true" data-no-preview="true">
<i class="fa fa-fw fa-refresh me-1"/> Replace Icon
</we-button>
</we-row>
<we-row string="&#8985; Inactive">
<we-colorpicker data-select-style="" data-apply-to=".s_rating_inactive_icons" data-css-property="color" data-color-prefix="text-"/>
<we-button data-custom-icon="true" data-custom-active-icon="false" data-no-preview="true">
<i class="fa fa-fw fa-refresh me-1"/> Replace Icon
</we-button>
</we-row>
<we-row string="Score">
<we-input data-active-icons-number="true" data-step="1"/>
<span class="mx-2">/</span>
<we-input data-total-icons-number="true" data-step="1"/>
</we-row>
<we-button-group string="Size" data-apply-to=".s_rating_icons">
<we-button data-select-class="" title="Small" data-img="/website/static/src/img/snippets_options/size_small.svg"/>
<we-button data-select-class="fa-2x" title="Medium" data-img="/website/static/src/img/snippets_options/size_medium.svg"/>
<we-button data-select-class="fa-3x" title="Large" data-img="/website/static/src/img/snippets_options/size_large.svg"/>
</we-button-group>
<we-checkbox string="Display Inline" data-select-class="s_rating_inline" data-no-preview="true"/>
</div>
</xpath>
</template>
<record id="mass_mailing.s_rating_000_scss" model="ir.asset">
<field name="name">Rating 000 SCSS</field>
<field name="bundle">web.assets_frontend</field>
<field name="path">mass_mailing/static/src/snippets/s_rating/000.scss</field>
<field name="active" eval="False"/>
</record>
<record id="mass_mailing.s_rating_001_scss" model="ir.asset">
<field name="name">Rating 001 SCSS</field>
<field name="bundle">web.assets_frontend</field>
<field name="path">mass_mailing/static/src/snippets/s_rating/001.scss</field>
</record>
</odoo>

View file

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_references" name="References">
<div class="s_references o_mail_snippet_general pt32 pb32">
<div class="container">
<h2 style="text-align: center;">Our References</h2>
<p style="text-align: center;">We are in good company.</p>
<div class="row">
<div class="col-lg-3 pt16 pb16">
<img src="/web/image/mass_mailing.s_reference_default_image_1" class="img img-fluid mx-auto" alt=""/>
</div>
<div class="col-lg-3 pt16 pb16">
<img src="/web/image/mass_mailing.s_reference_default_image_2" class="img img-fluid mx-auto" alt=""/>
</div>
<div class="col-lg-3 pt16 pb16">
<img src="/web/image/mass_mailing.s_reference_default_image_3" class="img img-fluid mx-auto" alt=""/>
</div>
<div class="col-lg-3 pt16 pb16">
<img src="/web/image/mass_mailing.s_reference_default_image_4" class="img img-fluid mx-auto" alt=""/>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,48 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_showcase" name="Showcase">
<div class="s_showcase o_mail_snippet_general pt48 pb48">
<!-- TODO: (below) issue with height: `fit-content` is not supported, can we calculate it in px in translation ?
empty div height is 0 unless table has defined height (div.col-1 > div.w-50.h100.border-end)-->
<div class="container" style="height: fit-content;">
<div class="row g-0 s_col_no_resize s_col_no_bgcolor s_nb_column_fixed">
<div class="col-lg-6 pb24" style="text-align: right; padding-right: 70px;" align="right">
<div class="mb-2">
<h3 class="d-inline-block">First feature</h3>
<i class="fa fa-2x fa-desktop text-secondary ms-3"/>
</div>
<p>A short description of this great feature.</p>
</div>
<div class="col-lg-6 pb24 border-start" style="padding-left: 70px;" align="left">
<div class="mb-2">
<i class="fa fa-2x fa-heart text-secondary me-3"/>
<h3 class="d-inline-block">Another feature</h3>
</div>
<p>A short description of this great feature.</p>
</div>
</div>
<div class="row g-0 s_col_no_resize s_col_no_bgcolor s_nb_column_fixed">
<div class="col-lg-6" style="text-align: right; padding-right: 70px;" align="right">
<div class="mb-2">
<h3 class="d-inline-block">Second feature</h3>
<i class="fa fa-2x fa-paint-brush text-secondary ms-3"/>
</div>
<p>A short description of this great feature.</p>
</div>
<div class="col-lg-6 border-start" style="padding-left: 70px;" align="left">
<div class="mb-2">
<i class="fa fa-2x fa-gift text-secondary me-3"/>
<h3 class="d-inline-block">Last Feature</h3>
</div>
<p>A short description of this great feature.</p>
</div>
</div>
</div>
<div class="container pt32" style="text-align: center;" align="center">
<a href="#" class="btn btn-primary">Discover all the features</a>
</div>
</div>
</template>
</odoo>

View file

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_text_block" name="Text">
<div class="s_text_block o_mail_snippet_general pt40 pb40" style="padding-left: 15px; padding-right: 15px;">
<div class="container s_allow_columns">
<p> The open source model of Odoo has allowed us to leverage thousands of developers and
business experts to build hundreds of apps in just a few years.</p>
<p> With strong technical foundations, Odoo's framework is unique.
It provides top notch usability that scales across all apps.</p>
<p> Usability improvements made on Odoo will automatically apply to all
of our fully integrated apps.</p>
<p> That way, Odoo evolves much faster than any other solution.</p>
</div>
</div>
</template>
</odoo>

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_text_highlight" name="Text Highlight">
<div class="s_mail_text_highlight o_mail_snippet_general o_cc o_cc3 pt32 pb32 w-100">
<h3 style="text-align: center;">Text Highlight</h3>
<p style="text-align: center;">Put the focus on what you have to say!</p>
</div>
</template>
</odoo>

View file

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_text_image" name="Text - Image">
<div class="s_text_image o_mail_snippet_general">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 o_cc pt16 pb16">
<h3>A unique value</h3>
<p style="text-align: justify;">The open source model of Odoo has allowed us to leverage thousands of developers and business experts to build hundreds of apps in just a few years.</p>
<div style="text-align: left;">
<a href="#" class="btn btn-link">Read More</a>
</div>
</div>
<div class="col-lg-6 px-0">
<img src="/web/image/mass_mailing.s_text_image_default_image" class="img w-100"/>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_three_columns" name="Columns">
<div class="s_three_columns o_mail_snippet_general o_cc o_cc2 pt32 pb32">
<div class="container">
<div class="row d-flex align-items-stretch">
<div class="col-lg-4 s_col_no_bgcolor pt16 pb16">
<div class="card text-bg-white h-100">
<img class="card-img-top" src="/web/image/mass_mailing.s_three_columns_default_image_1" alt=""/>
<div class="card-body">
<h3 class="card-title">Feature One</h3>
<p class="card-text">Adapt these three columns to fit your design need. To duplicate, delete or move columns, select the column and use the top icons to perform your action.</p>
</div>
</div>
</div>
<div class="col-lg-4 s_col_no_bgcolor pt16 pb16">
<div class="card text-bg-white h-100">
<img class="card-img-top" src="/web/image/mass_mailing.s_three_columns_default_image_2" alt=""/>
<div class="card-body">
<h3 class="card-title">Feature Two</h3>
<p class="card-text">To add a fourth column, reduce the size of these three columns using the right icon of each block. Then, duplicate one of the columns to create a new one as a copy.</p>
</div>
</div>
</div>
<div class="col-lg-4 s_col_no_bgcolor pt16 pb16">
<div class="card text-bg-white h-100">
<img class="card-img-top" src="/web/image/mass_mailing.s_three_columns_default_image_3" alt=""/>
<div class="card-body">
<h3 class="card-title">Feature Three</h3>
<p class="card-text">Delete the above image or replace it with a picture that illustrates your message. Click on the picture to change its <em>rounded corner</em> style.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</odoo>

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="s_title" name="Title">
<div class="s_title o_mail_snippet_general pt32 pb32">
<div class="container s_allow_columns">
<h1 style="text-align:center">Your Title</h1>
</div>
</div>
</template>
</odoo>

View file

@ -1,839 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="email_designer_themes" groups="base.group_user">
<t t-set="company_id" t-value="res_company"/>
<div data-name="basic"
title="Plain Text"
data-nowrap="1"
data-img="/mass_mailing/static/src/img/theme_imgs/basic_thumb"
data-images-info='{"logo": {"format": "png"}}'>
<t t-call="mass_mailing.theme_basic_template"/>
</div>
<div data-name="empty"
title="Start From Scratch"
data-img="/mass_mailing/static/src/img/theme_imgs/empty_thumb"
data-images-info='{"logo": {"format": "png"}}'
data-hide-from-mobile="true">
<t t-call="mass_mailing.theme_empty_template"/>
</div>
<div data-name="default"
title="Welcome Message"
data-img="/mass_mailing/static/src/img/theme_imgs/default_thumb"
data-images-info='{"logo": {"format": "png"}, "header_logo": {"format": "png"}}'>
<t t-call="mass_mailing.theme_default_template"/>
</div>
</template>
<template id="mass_mailing.s_snippet_group" name="Snippet Group">
<section class="s_snippet_group"/>
</template>
<!-- Snippets & Themes Menu -->
<template id="email_designer_snippets" inherit_id="web_editor.snippets" primary="True" groups="base.group_user">
<xpath expr="//div[hasclass('o_we_website_top_actions')]" position="inside">
<div class="email_designer_top_actions">
<button class="o_codeview_btn btn btn-primary">
<i class="fa fa-code"></i>
</button>
<button class="o_mobile_preview_btn btn btn-primary">
<i class="fa fa-lg fa-mobile"/>
</button>
<button class="o_fullscreen_btn btn btn-primary">
<img class="img-fluid" src="/web_editor/font_to_img/61541/rgb(255,255,255)/16" alt="Fullscreen"/>
</button>
</div>
</xpath>
<xpath expr="//div[@id='snippets_menu']" position="inside">
<button type="button" tabindex="3" class="o_we_customize_design_btn text-uppercase" accesskey="2">
<span>Design</span>
</button>
</xpath>
<xpath expr="//t[@id='default_snippets']" position="replace">
<t id="default_snippets">
<t t-set="company_id" t-value="res_company"/>
<div id="email_designer_themes" class="d-none">
<div data-name="basic"
title="Plain Text"
data-nowrap="1"
data-img="/mass_mailing/static/src/img/theme_imgs/basic_thumb"
data-images-info='{"logo": {"format": "png"}}'>
<t t-call="mass_mailing.theme_basic_template"/>
</div>
<div data-name="empty"
title="Start From Scratch"
data-img="/mass_mailing/static/src/img/theme_imgs/empty_thumb"
data-images-info='{"logo": {"format": "png"}}'
data-hide-from-mobile="true">
<t t-call="mass_mailing.theme_empty_template"/>
</div>
<div data-name="default"
title="Welcome Message"
data-img="/mass_mailing/static/src/img/theme_imgs/default_thumb"
data-images-info='{"logo": {"format": "png"}, "header_logo": {"format": "png"}}'>
<t t-call="mass_mailing.theme_default_template"/>
</div>
</div>
<div id="email_designer_default_headers" class="o_panel">
<div class="o_panel_header">Headers</div>
<div class="o_panel_body" id="email_designer_header_elements">
<t t-snippet="mass_mailing.s_mail_block_header_social" string="Left Logo" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/block_header_social.png"/>
<t t-snippet="mass_mailing.s_mail_block_header_text_social" string="Left Text" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/block_header_text_social.png"/>
<t t-snippet="mass_mailing.s_mail_block_header_logo" string="Centered Logo" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/block_header_logo.png"/>
<t t-snippet="mass_mailing.s_cover" string="Cover" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_cover.svg"/>
<t t-snippet="mass_mailing.s_mail_block_header_view" string="View Online" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/block_header_browser.png"/>
</div>
</div>
<div id="email_designer_default_body" class="o_panel">
<div class="o_panel_header">Body</div>
<div class="o_panel_body" id="email_designer_body_elements">
<t t-snippet="mass_mailing.s_title" string="Title" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_title.svg"/>
<t t-snippet="mass_mailing.s_text_block" string="Text" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_text_block.svg"/>
<t t-snippet="mass_mailing.s_comparisons" string="Comparisons" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_comparisons.svg"/>
<t t-snippet="mass_mailing.s_color_blocks_2" string="Big Boxes" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_color_blocks_2.svg"/>
<t t-snippet="mass_mailing.s_three_columns" string="Columns" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_three_columns.svg"/>
<t t-snippet="mass_mailing.s_image_text" string="Image - Text" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_image_text.svg"/>
<t t-snippet="mass_mailing.s_text_image" string="Text - Image" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_text_image.svg"/>
<t t-snippet="mass_mailing.s_picture" string="Picture" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_picture.svg"/>
<t t-snippet="mass_mailing.s_features" string="Features" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_features.svg"/>
<t t-snippet="mass_mailing.s_numbers" string="Numbers" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_numbers.svg"/>
<t t-snippet="mass_mailing.s_masonry_block" string="Masonry" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_masonry_block.svg"/>
<t t-snippet="mass_mailing.s_media_list" string="Media List" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_media_list.svg"/>
<t t-snippet="mass_mailing.s_showcase" string="Showcase" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_showcase.svg"/>
</div>
</div>
<div id="email_designer_default_extra" class="o_panel">
<div class="o_panel_header">Marketing Content</div>
<div class="o_panel_body" id="email_designer_marketing_elements">
<t t-snippet="mass_mailing.s_company_team" string="Team" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_company_team.svg"/>
<t t-snippet="mass_mailing.s_call_to_action" string="Call to Action" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_call_to_action.svg"/>
<t t-snippet="mass_mailing.s_references" string="References" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_references.svg"/>
<t t-snippet="mass_mailing.s_coupon_code" string="Promo Code" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/block_discount2.png"/>
<t t-snippet="mass_mailing.s_mail_block_discount1" string="Discount Offer" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/block_discount1.png"/>
<t t-snippet="mass_mailing.s_event" string="Event" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_event.svg"/>
<t t-snippet="mass_mailing.s_product_list" string="Items" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_product_list.svg"/>
<t t-snippet="mass_mailing.s_features_grid" string="Features Grid" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_features_grid.svg"/>
</div>
</div>
<div id="email_designer_default_inner" class="o_panel">
<div class="o_panel_header">Inner Content</div>
<div class="o_panel_body" id="email_designer_inner_elements">
<t t-snippet="mass_mailing.s_alert" string="Alert" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_alert.svg"/>
<t t-snippet="mass_mailing.s_rating" string="Rating" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_rating.svg"/>
<t t-snippet="mass_mailing.s_blockquote" string="Blockquote" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_blockquote.svg"/>
<t t-snippet="mass_mailing.s_hr" string="Separator" t-thumbnail="/web_editor/static/src/img/snippets_thumbs/s_hr.svg"/>
<t t-snippet="mass_mailing.s_text_highlight" string="Text Highlight" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_text_highlight.svg"/>
</div>
</div>
<div id="email_designer_default_footer" class="o_panel">
<div class="o_panel_header">Footers</div>
<div class="o_panel_body" id="email_designer_footer_elements">
<t t-snippet="mass_mailing.s_mail_block_footer_social" string="Footer Center" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/block_footer_social.png"/>
<t t-snippet="mass_mailing.s_mail_block_footer_social_left" string="Footer Left" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/block_footer_social_left.png"/>
</div>
</div>
</t>
</xpath>
<xpath expr="//div[@id='snippet_options']/t" position="attributes">
<attribute name="t-call">mass_mailing.snippet_options</attribute>
</xpath>
<template id="email_designer_snippets" groups="base.group_user">
<snippets id="snippet_custom" string="Custom"/>
<t id="default_snippets">
<t t-set="company_id" t-value="res_company"/>
<snippets id="snippet_groups" string="Categories">
<t snippet-group="headers" t-snippet="mass_mailing.s_snippet_group" string="Headers" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_alert.svg"/>
<t snippet-group="text" t-snippet="mass_mailing.s_snippet_group" string="Text" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_text_block.svg"/>
<t snippet-group="images" t-snippet="mass_mailing.s_snippet_group" string="Images" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_picture.svg"/>
<t snippet-group="people" t-snippet="mass_mailing.s_snippet_group" string="People" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_company_team.svg"/>
<t snippet-group="columns" t-snippet="mass_mailing.s_snippet_group" string="Columns" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_three_columns.svg"/>
<t snippet-group="website" t-snippet="mass_mailing.s_snippet_group" string="Website" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_blog_posts.svg"/>
<t snippet-group="footers" t-snippet="mass_mailing.s_snippet_group" string="Footers" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/block_footer_social.png"/>
</snippets>
<snippets id ="snippet_structure">
<t t-snippet="mass_mailing.s_mail_block_header_social" string="Left Logo" group="headers"/>
<t t-snippet="mass_mailing.s_mail_block_header_text_social" string="Name + Social" group="headers"/>
<t t-snippet="mass_mailing.s_mail_block_header_logo" string="Centered Logo" group="headers"/>
<t t-snippet="mass_mailing.s_mail_block_header_logo_and_button" string="Logo + Button" group="headers"/>
<t t-snippet="mass_mailing.s_mail_block_header_logo_and_stacked_menu" string="Logo + Stacked Menu" group="headers"/>
<t t-snippet="mass_mailing.s_mail_block_header_logo_col" string="Menu" group="headers"/>
<t t-snippet="mass_mailing.s_mail_block_header_logo_and_inline_menu" string="Logo + Inline Menu" group="headers"/>
<t t-snippet="mass_mailing.s_mail_block_header_name_and_inline_menu" string="Name + Inline Menu" group="headers"/>
<t t-snippet="mass_mailing.s_mail_block_header_name_and_button" string="Name + Button" group="headers"/>
<t t-snippet="mass_mailing.s_mail_block_footer_social" string="Social + Footer" group="footers"/>
<t t-snippet="mass_mailing.s_mail_block_footer_social_left" string="Social + Footer" group="footers"/>
<t t-snippet="mass_mailing.s_mail_block_footer_one_liner" string="Social + Footer + Separator" group="footers"/>
<t t-snippet="mass_mailing.s_mail_block_footer_social_and_logo" string="Social + Logo" group="footers"/>
<t t-snippet="mass_mailing.s_cover" string="Cover" group="images"/>
<t t-snippet="mass_mailing.s_image_text" group="images" string="Image - Text"/>
<t t-snippet="mass_mailing.s_text_image" group="images" string="Text - Image"/>
<t t-snippet="mass_mailing.s_picture" group="images" string="Picture"/>
<t t-snippet="mass_mailing.s_masonry_block" string="Masonry" group="images"/>
<t t-snippet="mass_mailing.s_mailing_list_advertisement" string="Mailing List" group="images"/>
<t t-snippet="mass_mailing.s_content_card_1" string="Content Card" group="images"/>
<t t-snippet="mass_mailing.s_content_card_2" string="Content Card" group="images"/>
<t t-snippet="mass_mailing.s_content_card_3" string="Content Card" group="images"/>
<t t-snippet="mass_mailing.s_content_card_4" string="Content Card" group="images"/>
<t t-snippet="mass_mailing.s_content_card_5" string="Content Card" group="images"/>
<t t-snippet="mass_mailing.s_content_card_6" string="Content Card" group="images"/>
<t t-snippet="mass_mailing.s_content_card_7" string="Content Card" group="images"/>
<t t-snippet="mass_mailing.s_company_team_shapes" string="Team shapes" group="people"/>
<t t-snippet="mass_mailing.s_company_team" string="Team" group="people"/>
<t t-snippet="mass_mailing.s_reviews_wall" string="Customer testimonials" group="people"/>
<t t-snippet="mass_mailing.s_references" string="References" group="people"/>
<t t-snippet="mass_mailing.s_blockquote" string="Blockquote" group="people"/>
<t t-snippet="mass_mailing.s_blog_post_card" string="People" group="people"/>
<t t-snippet="mass_mailing.s_customer_quote" string="Customer Quote" group="people"/>
<t t-snippet="mass_mailing.s_author" string="Author" group="people"/>
<t t-snippet="mass_mailing.s_three_columns" string="Columns" group="columns"/>
<t t-snippet="mass_mailing.s_color_blocks_2" string="Big Boxes" group="columns"/>
<t t-snippet="mass_mailing.s_media_list" string="Media List" group="columns"/>
<t t-snippet="mass_mailing.s_attributes_horizontal" string="Horizontal Attributes" group="columns"/>
<t t-snippet="mass_mailing.s_numbers" string="Numbers" group="columns"/>
<t t-snippet="mass_mailing.s_event" string="Event" group="columns"/>
<t t-snippet="mass_mailing.s_product_list" string="Items" group="columns"/>
<t t-snippet="mass_mailing.s_features_showcase" string="Features Showcase" group="columns"/>
<t t-snippet="mass_mailing.s_features_column" string="Features Column" group="columns"/>
<t t-snippet="mass_mailing.s_membership_advertisement" string="Membership" group="columns"/>
<t t-snippet="mass_mailing.s_comparisons" string="Comparisons" group="columns"/>
<t t-snippet="mass_mailing.s_text_block" string="Paragraph" group="text"/>
<t t-snippet="mass_mailing.s_link_list" string="Links List" group="text"/>
<t t-snippet="mass_mailing.s_schedule" string="Schedule" group="text"/>
<t t-snippet="mass_mailing.s_text_describing_benefits" string="Benefits" group="text"/>
<t t-snippet="mass_mailing.s_title_with_side_text" string="Title + Side Text" group="text"/>
<t t-snippet="mass_mailing.s_text_card" string="Text Card" group="text"/>
<t t-snippet="mass_mailing.s_text_need_help" string="Need help?" group="text"/>
<t t-snippet="mass_mailing.s_text_product_description" string="Product Description" group="text"/>
<t t-snippet="mass_mailing.s_text_product_showcase" string="Product Showcase" group="text"/>
<t t-snippet="mass_mailing.s_text_contact" string="Contact" group="text"/>
<t t-snippet="mass_mailing.s_text_signature" string="Signature" group="text"/>
<t t-snippet="mass_mailing.s_text_left_cta" string="Call To Action Text (left)" group="text"/>
<t t-snippet="mass_mailing.s_text_center_cta" string="Call To Action Text (center)" group="text"/>
<t t-snippet="mass_mailing.s_text_cta_card" string="Call To Action Card" group="text"/>
<t t-snippet="mass_mailing.s_showcase" string="Showcase" group="text"/>
<t t-snippet="mass_mailing.s_call_to_action" string="Call To Action" group="text"/>
<t t-snippet="mass_mailing.s_title" string="Title" group="text"/>
<t t-snippet="mass_mailing.s_subtitle" string="Subtitle" group="text"/>
<t t-snippet="mass_mailing.s_hr_title" string="Separator Title" group="text"/>
<t t-snippet="mass_mailing.s_pricelist_boxed" string="Pricelist Boxed" group="text"/>
<t t-snippet="mass_mailing.s_blog_title" string="Blog Title" group="text"/>
<t t-snippet="mass_mailing.s_mail_block_header_view" string="View Online" group="website"/>
<t t-snippet="mass_mailing.s_centered_cta_badge" string="Centered CTA" group="website"/>
<t t-snippet="mass_mailing.s_special_offer_cta" string="Special Offer CTA" group="website"/>
<t t-snippet="mass_mailing.s_section_mobile" string="Section Mobile" group="website"/>
<t t-snippet="mass_mailing.s_coupon_code" string="Promo Code" group="website"/>
</snippets>
<snippets id="snippet_content" string="Inner Content">
<t t-snippet="mass_mailing.s_inline_text" string="Text" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_text_block.svg"/>
<t t-snippet="mass_mailing.s_alert" string="Alert" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_alert.svg"/>
<t t-snippet="mass_mailing.s_hr" string="Separator" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_hr.svg"/>
<t t-snippet="mass_mailing.s_text_highlight" string="Text Highlight" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_text_highlight.svg"/>
<t t-snippet="mass_mailing.s_rating" string="Rating" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_rating.svg"/>
<t t-snippet="mass_mailing.s_button" string="Button" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_button.svg"/>
<t t-snippet="mass_mailing.s_image" string="Image" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_image.svg"/>
<t t-snippet="mass_mailing.s_icon" string="Icon" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_icon.svg"/>
<t t-snippet="mass_mailing.s_video" string="Video" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_video.svg"/>
<t t-snippet="mass_mailing.s_badge" string="Badge" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_badge.svg"/>
<t t-snippet="mass_mailing.s_cta_badge" string="CTA Badge" t-thumbnail="/mass_mailing/static/src/img/snippets_thumbs/s_cta_badge.svg"/>
</snippets>
</t>
</template>
<!-- Snippet Templates -->
<template id="s_mail_block_header_social" name="Left Logo">
<div class="s_header_social o_mail_block_header_social o_mail_snippet_general pt16 pb16">
<div class="container">
<div class="row">
<div class="col-lg-4 pt16 pb16">
<a t-att-href="(company_id.website) or '#'" style="text-decoration:none;float:none;" target="_blank">
<img t-if="company_id.logo" border="0" t-att-src="image_data_uri(company_id.logo)" style="height:auto;max-width:100%;" />
</a>
</div>
<div class="col-lg-8 o_mail_header_social" style="text-align: right;">
<t t-call="mass_mailing.social_links"/>
</div>
</div>
</div>
</div>
</template>
<template id="s_mail_block_header_text_social" name="Left Text">
<div class="s_header_text_social o_mail_block_header_text_social o_mail_snippet_general">
<section class="s_header_text_social o_mail_block_header_text_social o_mail_snippet_general pt32 pb32" data-name="Left Text">
<div class="container">
<div class="row">
<div class="col-lg-4 pt16 pb16">
<h1>
<a t-att-href="(company_id.website) or '#'" target="_blank">
My Company
</a>
</h1>
<div class="col-md-6 col-12 pt16 pb16">
<h1><span class="h2-fs" t-out="company_id.partner_id.name"/></h1>
</div>
<div class="col-lg-8 o_mail_header_social" style="text-align: right;">
<div class="col-md-6 col-12 o_mail_header_social" style="text-align: right;">
<t t-call="mass_mailing.social_links"/>
</div>
</div>
</div>
</div>
</template>
<template id="s_mail_block_header_logo" name="Centered Logo">
<div class="s_header_logo o_mail_block_header_logo o_mail_snippet_general">
<div class="container">
<div class="row">
<div class="col-lg-3"/>
<div class="col-lg-6" style="text-align: center;">
<a t-att-href="(company_id.website) or '#'" style="text-decoration:none;" target="_blank">
<img t-if="company_id.logo" border="0" t-att-src="image_data_uri(company_id.logo)" style="height:auto;max-width:100%;"/>
</a>
</div>
<div class="col-lg-3" style="text-align: right;"/>
</div>
</div>
</div>
</section>
</template>
<template id="s_mail_block_header_view" name="View Online">
<div class="o_snippet_view_in_browser o_mail_snippet_general pt16 pb16" style="text-align: center; padding-left: 15px; padding-right: 15px;">
<a href="/view">
View Online
</a>
</div>
</template>
<template id="s_mail_block_discount1" name="Discount Offer">
<div class="s_discount1 o_mail_block_discount1 o_mail_snippet_general pt0 pb16">
<div class="container">
<div class="row">
<div class="col-lg-6 pt16">
<h3 style="text-align: center;"><font class="text-o-color-2"><span style="font-weight:bolder;">-20%</span></font></h3>
<p style="text-align: center;">ON YOUR NEXT ORDER!</p>
<div style="text-align: center;">
<a role="button" href="#" class="btn btn-primary">Redeem Discount!</a>
</div>
</div>
<div class="col-lg-6 pt16">
<p>We are continuing to grow and we miss seeing you be a part of it! We've increased store hours and have lot's of new brands available. To welcome you back please accept this 20% discount on you next purchase by clicking the button.</p>
</div>
</div>
</div>
</div>
</template>
<template id="s_mail_block_footer_social" name="Footer Center">
<div class="s_footer_social o_mail_block_footer_social o_mail_footer_social_center o_mail_snippet_general bg-200 pt16">
<div class="container">
<div class="row">
<div class="col-lg o_mail_footer_social" style="text-align: center;">
<t t-call="mass_mailing.social_links"/>
</div>
</div>
<div class="row">
<div class="col-lg o_mail_footer_links" style="text-align: center;">
<a role="button" href="/unsubscribe_from_list" class="btn btn-link">Unsubscribe</a>
</div>
</div>
<div class="row">
<div class="col-lg">
<p style="text-align: center;">
© <t t-esc="datetime.datetime.now().year"/> All Rights Reserved
</p>
</div>
</div>
</div>
</div>
</template>
<template id="s_mail_block_footer_social_left" name="Footer Left">
<div class="s_footer_social o_mail_block_footer_social o_mail_footer_social_left o_mail_snippet_general pt16">
<div class="container">
<div class="row">
<div class="col-lg o_mail_footer_description">
<p t-if="res_company">
<strong><t t-esc="res_company.partner_id.name"/></strong>
</p>
<div class="o_mail_footer_links">
<a role="button" href="/unsubscribe_from_list" class="btn btn-link">Unsubscribe</a>
</div>
</div>
<div class="col-lg" align="right">
<div class="o_mail_footer_social pb16"><t t-call="mass_mailing.social_links"/></div>
<p class="o_mail_footer_copy">© <t t-esc="datetime.datetime.now().year"/> All Rights Reserved</p>
</div>
</div>
</div>
</div>
</template>
<template id="social_links">
<t t-set="social_links" t-value="company_id._get_social_media_links()"/>
<a t-att-href="social_links.get('social_facebook')" aria-label="Facebook" title="Facebook">
<span class="fa fa-facebook"></span>
</a>&amp;nbsp;&amp;nbsp;
<a t-att-href="social_links.get('social_linkedin')" style="margin-left:10px" aria-label="LinkedIn" title="LinkedIn">
<span class="fa fa-linkedin"></span>
</a>&amp;nbsp;&amp;nbsp;
<a t-att-href="social_links.get('social_twitter')" style="margin-left:10px" aria-label="Twitter" title="Twitter">
<span class="fa fa-twitter"></span>
</a>&amp;nbsp;&amp;nbsp;
<a t-att-href="social_links.get('social_instagram')" style="margin-left:10px" aria-label="Instagram" title="Instagram">
<span class="fa fa-instagram"></span>
</a>
</template>
<!-- Border -->
<template id="snippet_options_border_line_widgets">
<we-row t-att-string="label">
<we-input data-name="border_width_opt"
t-att-data-apply-to="apply_to"
data-select-style="0"
t-attf-data-css-property="border-#{direction and ('%s-' % direction) or ''}width"
data-unit="px"
t-att-data-extra-class="with_bs_class and 'border'"
t-att-data-variable="width_variable"/>
<we-select t-attf-data-css-property="border-#{direction and ('%s-' % direction) or ''}style"
data-dependencies="border_width_opt"
t-att-data-apply-to="apply_to"
t-att-data-variable="style_variable">
<we-button title="Solid" data-select-style="solid"><div class="o_we_fake_img_item o_we_border_preview" style="border-style: solid;"/></we-button>
<we-button title="Dashed" data-select-style="dashed"><div class="o_we_fake_img_item o_we_border_preview" style="border-style: dashed;"/></we-button>
<we-button title="Dotted" data-select-style="dotted"><div class="o_we_fake_img_item o_we_border_preview" style="border-style: dotted;"/></we-button>
<we-button title="Double" data-select-style="double"><div class="o_we_fake_img_item o_we_border_preview" style="border-style: double; border-left: none; border-right: none;"/></we-button>
</we-select>
<we-colorpicker data-dependencies="border_width_opt"
t-att-data-apply-to="apply_to"
data-select-style="true"
t-attf-data-css-property="border-#{direction and ('%s-' % direction) or ''}color"
data-color-prefix="border-"
t-att-data-color="color_variable"/>
</we-row>
</template>
<template id="snippet_options_border_widgets">
<t t-call="mass_mailing.snippet_options_border_line_widgets">
<t t-set="label">Border</t>
<t t-set="with_bs_class" t-value="True"/>
</t>
<we-input string="Round Corners"
t-att-data-apply-to="apply_to"
t-att-data-dependencies="not so_rounded_no_dependencies and 'border_width_opt,bg_color_opt'"
data-select-style="0" data-css-property="border-radius"
data-unit="px" data-extra-class="rounded"
t-att-data-variable="radius_variable"/>
</template>
<template id="snippet_options_background_options" inherit_id="web_editor.snippet_options_background_options" primary="True">
<xpath expr="//div[@data-js='BackgroundImage']" position="attributes">
<attribute name="data-js">MassMailingBackgroundImage</attribute>
</xpath>
</template>
<!--
TODO these next two templates should have been removed in 16.0 as they were
emptied pre-release while waiting for a proper upgrade script to remove them
after backport. They will now be removed in master.
-->
<template id="snippet_options_extra_shapes" inherit_id="web_editor.snippet_options">
<xpath expr="//div"><!-- TODO remove me in master (do not xpath this) --></xpath>
</template>
<template id="snippet_options_image_styles" inherit_id="web_editor.snippet_options">
<xpath expr="//div"><!-- TODO remove me in master (do not xpath this) --></xpath>
</template>
<!-- Mass Mailing Snippet Options -->
<template id="snippet_options" inherit_id="web_editor.snippet_options" primary="True">
<!-- =================================================================== -->
<!-- Modify generic snippet options -->
<!-- =================================================================== -->
<xpath expr="//t[@t-set='no_animations']" position="attributes">
<attribute name="t-value">True</attribute>
</xpath>
<!-- Extra shapes -->
<xpath expr="//div[hasclass('o_we_image_shape')]//we-select-page[hasclass('o_we_basic_shapes')]" position="inside">
<we-button data-set-img-shape="mass_mailing/basic/circle" data-select-label="Circle"/>
<we-button data-set-img-shape="mass_mailing/basic/triangle" data-select-label="Triangle"/>
<we-button data-set-img-shape="mass_mailing/basic/slanted" data-select-label="Slanted"/>
</xpath>
<xpath expr="//div[hasclass('o_we_image_shape')]//we-select-page[hasclass('o_we_basic_shapes')]" position="attributes">
<attribute name="t-if">True</attribute>
</xpath>
<!-- Image styles -->
<!-- TODO review to only modify what's really necessary and potentially -->
<!-- make the changes in web_editor directly so that website can benefit -->
<!-- from it. -->
<xpath expr="//div[hasclass('o_we_image_options')]" position="replace">
<div data-selector="span.fa, i.fa, img">
<we-select string="Alignment" data-state-to-first-class="true">
<we-button data-select-class="float-start" title="Align Left">Left</we-button>
<we-button data-select-class="mx-auto" title="Align Center">Center</we-button>
<we-button data-select-class="float-end" title="Align Right">Right</we-button>
</we-select>
<t t-call="mass_mailing.snippet_options_border_line_widgets">
<t t-set="label">Border</t>
<t t-set="with_bs_class" t-value="True"></t>
</t>
<we-input string="Round Corners"
data-select-style="0" data-css-property="border-radius"
data-unit="px" data-extra-class="rounded"
t-att-data-variable="radius_variable"/>
<we-row string="Padding ⭤">
<we-input data-select-style="" data-unit="px" data-css-property="padding-left"/>
<we-input data-select-style="" data-unit="px" data-css-property="padding-right"/>
</we-row>
<we-row string="Padding ↕">
<we-input data-select-style="" data-unit="px" data-css-property="padding-top"/>
<we-input data-select-style="" data-unit="px" data-css-property="padding-bottom"/>
</we-row>
</div>
</xpath>
<!-- Transform is _very_ badly supported in mail clients -->
<xpath expr="//we-button[@data-name='image_transform_opt']" position="replace" />
<xpath expr="//div[@data-js='ImageTools']" position="attributes">
<attribute name="data-js">MassMailingImageTools</attribute>
</xpath>
<!-- =================================================================== -->
<!-- Adding mass_mailing specific snippet options -->
<!-- =================================================================== -->
<xpath expr="." position="inside">
<!-- Border | Columns -->
<div data-js="Box"
data-selector=".row > div"
data-exclude=".o_mail_wrapper_td, .s_col_no_bgcolor, .s_col_no_bgcolor.row > div, .s_image_gallery .row > div">
<t t-call="mass_mailing.snippet_options_border_widgets"/>
</div>
<div data-js="layout_column"
data-selector=".o_mail_snippet_general"
data-target="> *:has(> .row:not(.s_nb_column_fixed)), > .s_allow_columns">
<we-select string="Columns" data-no-preview="true">
<we-button data-select-count="0" data-name="zero_cols_opt">None</we-button>
<we-button data-select-count="1">1</we-button>
<we-button data-select-count="2">2</we-button>
<we-button data-select-count="3">3</we-button>
<we-button data-select-count="4">4</we-button>
<we-button data-select-count="5">5</we-button>
<we-button data-select-count="6">6</we-button>
</we-select>
</div>
<!-- Move snippets around -->
<div data-js="SnippetMove" data-selector=".o_mail_snippet_general">
<we-button class="fa fa-fw fa-angle-up" data-move-snippet="prev" data-no-preview="true" data-name="move_up_opt"/>
<we-button class="fa fa-fw fa-angle-down" data-move-snippet="next" data-no-preview="true" data-name="move_down_opt"/>
</div>
<div data-js="SnippetMove"
data-selector=".row:not(.s_col_no_resize) > div"
data-exclude=".s_showcase .row > div"
data-name="move_horizontally_opt">
<we-button class="fa fa-fw fa-angle-left" data-move-snippet="prev" data-no-preview="true" data-name="move_left_opt"/>
<we-button class="fa fa-fw fa-angle-right" data-move-snippet="next" data-no-preview="true" data-name="move_right_opt"/>
</div>
<div id="so_width" data-selector=".s_mail_alert .s_alert, .s_mail_blockquote, .s_mail_text_highlight">
<we-select string="Width">
<we-button data-select-class="w-25">25%</we-button>
<we-button data-select-class="w-50">50%</we-button>
<we-button data-select-class="w-75">75%</we-button>
<we-button data-select-class="w-100" data-name="so_width_100">100%</we-button>
</we-select>
</div>
<div id="so_block_align" data-selector=".s_mail_alert .s_alert, .s_mail_blockquote, .s_mail_text_highlight">
<we-button-group string="Alignment" data-dependencies="!so_width_100">
<we-button class="fa fa-fw fa-align-left" title="Left" data-select-class="me-auto"/>
<we-button class="fa fa-fw fa-align-center" title="Center" data-select-class="mx-auto"/>
<we-button class="fa fa-fw fa-align-right" title="Right" data-select-class="ms-auto"/>
</we-button-group>
</div>
<!-- TODO there is no data-js associated to this but a data-option-name, -->
<!-- somehow it acts as data-js... it will be reviewed in master. -->
<div data-option-name="minHeight" data-selector=".o_mail_snippet_general" data-exclude=".o_mail_snippet_general .row > div *">
<we-button-group string="Height">
<we-button data-name="minheight_auto_opt" data-select-class="" title="Fit content">Auto</we-button>
<we-button data-select-class="o_height_400" title="400px">50%</we-button>
<we-button data-select-class="o_height_800" title="800px">100%</we-button>
</we-button-group>
</div>
<div data-js="mass_mailing_sizing_x"
data-selector="img, .mv, .col_mv, td, th"
data-exclude=".o_mail_no_resize, .o_mail_no_options"/>
<div data-js="table_row"
data-selector="tr:has(> .row), tr:has(> .col_mv)"
data-exclude=".o_mail_no_options"
data-drop-near="tr:has(> .row), tr:has(> .col_mv)"/>
<div data-js="table_column"
data-selector=".col>td, .col>th"
data-exclude=".o_mail_no_options"
data-drop-near=".col>td, .col>th"/>
<div data-js="table_column_mv"
data-selector=".col_mv, td, th"
data-exclude=".o_mail_no_options"
data-drop-near=".col_mv, td, th"/>
<t t-set="mailing_content_selector" t-translation="off">.note-editable > div:not(.o_layout), .note-editable .oe_structure > div, .oe_snippet_body</t>
<div data-js="content"
t-att-data-selector="mailing_content_selector"
data-exclude=".o_mail_no_options"
data-drop-near="[data-oe-field='body_html']:not(:has(.o_layout)) > *, .oe_structure > *"
data-drop-in="[data-oe-field='body_html']:not(:has(.o_layout)), .oe_structure"/>
<t t-set="so_snippet_addition_selector" t-translation="off">.o_mail_snippet_general</t>
<div id="so_snippet_addition"
t-att-data-selector="so_snippet_addition_selector"
data-drop-in=":not(p).oe_structure:not(.oe_structure_solo), :not(.o_mega_menu):not(p)[data-oe-type=html], :not(p).oe_structure.oe_structure_solo:not(:has(> section, > div))"/>
<t t-set="so_content_addition_selector" t-translation="off">.s_mail_blockquote, .s_mail_alert, .s_rating, .s_hr, .s_mail_text_highlight</t>
<div id="so_content_addition"
t-att-data-selector="so_content_addition_selector"
t-attf-data-drop-near="p, h1, h2, h3, ul, ol, .row > div > img, #{so_content_addition_selector}"
data-drop-in=".content, nav"/>
<div data-js="sizing_y"
data-selector=".o_mail_snippet_general, .o_mail_snippet_general .row > div"
data-exclude=".o_mail_no_resize, .o_mail_no_options"/>
<div data-js="sizing_x"
data-selector=".row > div"
data-drop-near=".row:not(.s_col_no_resize) > div"
data-exclude=".o_mail_no_resize, .o_mail_no_options"/>
<div data-selector=".note-editable .oe_structure > div:not(:has(> .o_mail_snippet_general)),
.note-editable .oe_structure > div.o_mail_snippet_general,
.note-editable .oe_structure > div.o_mail_snippet_general .o_cc,
.note-editable .oe_structure > div.o_mail_snippet_general .btn:not(.btn-link)"
data-exclude=".o_mail_no_colorpicker, .o_mail_no_options, .s_mail_color_blocks_2, .s_mail_color_blocks_2 .row > div">
<we-colorpicker string="Background Color"
data-select-style="true"
data-no-transparency="true"
data-css-property="background-color"
data-color-prefix="bg-"/>
</div>
<div data-selector=".s_mail_color_blocks_2 .row > div">
<we-colorpicker string="Background Color"
data-select-style="true"
data-no-transparency="true"
data-css-property="background-color"
data-color-prefix="bg-"/>
</div>
<!-- Allow customised padding-x on snippets -->
<div data-selector="[class*='col-lg-'], .s_discount2, .s_text_block, .s_media_list, .s_picture, .s_rating">
<we-row string="Padding ⭤">
<we-input data-select-style="" data-unit="px" data-css-property="padding-left"/>
<we-input data-select-style="" data-unit="px" data-css-property="padding-right"/>
</we-row>
</div>
<!-- Allow changing background images in Masonry and Cover -->
<t t-call="mass_mailing.snippet_options_background_options">
<t t-set="selector" t-value="'.s_masonry_block .row > div, .s_cover .oe_img_bg'"/>
<t t-set="with_images" t-value="True"/>
<t t-set="with_videos" t-value="false"/>
<t t-set="with_shapes" t-value="false"/>
</t>
<!-- COLOR | .s_three_columns | .s_comparisons | .s_event -->
<div data-js="Box"
data-selector=".s_three_columns .row > div, .s_comparisons .row > div, .s_mail_block_event .row > div"
data-target=".card-body">
<we-colorpicker string="Background Color"
data-select-style="true"
data-no-transparency="true"
data-css-property="background-color"
data-color-prefix="bg-"/>
</div>
<!-- BORDER | .s_three_columns | .s_comparisons | .s_event -->
<div data-js="Box"
data-selector=".s_three_columns .row > div, .s_comparisons .row > div, .s_mail_block_event .row > div"
data-target=".card">
<t t-call="mass_mailing.snippet_options_border_widgets">
<t t-set="so_rounded_no_dependencies" t-value="True"/>
</t>
</div>
<!-- COLOR, BORDER | .o_mail_block_discount2 -->
<div data-js="Box"
data-selector=".o_mail_block_discount2"
data-target="table">
<t t-call="mass_mailing.snippet_options_border_widgets">
</t>
</div>
<!-- Vertical Alignment -->
<div data-option-name="vAlignment" id="row_valign_snippet_option" data-selector=".s_text_image, .s_image_text, .s_three_columns, s_mail_block_event" data-target=".row">
<we-button-group string="Vert. Alignment" title="Vertical Alignment">
<we-button title="Align Top"
data-select-class="align-items-start"
data-img="/mass_mailing/static/src/img/snippets_options/align_top.svg"/>
<we-button title="Align Middle"
data-select-class="align-items-center"
data-img="/mass_mailing/static/src/img/snippets_options/align_middle.svg"/>
<we-button title="Align Bottom"
data-select-class="align-items-end"
data-img="/mass_mailing/static/src/img/snippets_options/align_bottom.svg"/>
<we-button title="Stretch to Equal Height"
data-select-class="align-items-stretch"
data-img="/mass_mailing/static/src/img/snippets_options/align_stretch.svg"/>
</we-button-group>
</div>
<!-- DESIGN OPTIONS -->
<div data-js="DesignTab" data-selector="design-options" data-no-check="true">
<!-- BODY WIDTH -->
<we-button-group string="Body Width" data-apply-to=".o_mail_wrapper" data-no-preview="true">
<we-button data-select-class="o_mail_small"
data-img="/mass_mailing/static/src/img/snippets_options/content_width_small.svg"
title="Small"/>
<we-button data-select-class="o_mail_regular"
data-img="/mass_mailing/static/src/img/snippets_options/content_width_normal.svg"
title="Regular"/>
<we-button data-select-class=""
data-img="/mass_mailing/static/src/img/snippets_options/content_width_full.svg"
title="Full"/>
</we-button-group>
<we-colorpicker string="Background Color"
data-apply-to=".o_layout, > div:not(.o_layout)"
data-select-style="true"
data-no-transparency="true"
data-css-property="background-color"
data-color-prefix="bg-"/>
<!-- HEADING 1 -->
<we-row string="Heading 1" class="o_design_tab_title">
<we-input data-customize-css-property=""
data-css-property="font-size"
data-selector-text="h1"
data-unit="px"/>
<we-colorpicker data-customize-css-property=""
data-css-property="color"
data-selector-text="h1"
data-no-transparency="true"
data-color-prefix="text-"/>
</we-row>
<we-row string="" class="o_we_sublevel_1 o_short_title">
<we-fontfamilypicker data-selector-text="h1"/>
<span></span> <!-- Separate the select from the buttons (styling) -->
<we-button title="Bold" class="fa fa-fw fa-bold" data-no-preview="true" data-toggle="true"
data-customize-css-property="bolder"
data-selector-text="h1"
data-css-property="font-weight"/>
<we-button title="Italic" class="fa fa-fw fa-italic" data-no-preview="true" data-toggle="true"
data-customize-css-property="italic"
data-selector-text="h1"
data-css-property="font-style"/>
<we-button title="Underline" class="fa fa-fw fa-underline" data-no-preview="true" data-toggle="true"
data-customize-css-property="underline"
data-selector-text="h1"
data-css-property="text-decoration-line"/>
</we-row>
<!-- HEADING 2 -->
<we-row string="Heading 2" class="o_design_tab_title">
<we-input data-customize-css-property=""
data-css-property="font-size"
data-selector-text="h2"
data-unit="px"/>
<we-colorpicker data-customize-css-property=""
data-css-property="color"
data-selector-text="h2"
data-no-transparency="true"
data-color-prefix="text-"/>
</we-row>
<we-row string="" class="o_we_sublevel_1 o_short_title">
<we-fontfamilypicker data-selector-text="h2"/>
<span></span> <!-- Separate the select from the buttons (styling) -->
<we-button title="Bold" class="fa fa-fw fa-bold" data-no-preview="true" data-toggle="true"
data-customize-css-property="bolder"
data-selector-text="h2"
data-css-property="font-weight"/>
<we-button title="Italic" class="fa fa-fw fa-italic" data-no-preview="true" data-toggle="true"
data-customize-css-property="italic"
data-selector-text="h2"
data-css-property="font-style"/>
<we-button title="Underline" class="fa fa-fw fa-underline" data-no-preview="true" data-toggle="true"
data-customize-css-property="underline"
data-selector-text="h2"
data-css-property="text-decoration-line"/>
</we-row>
<!-- HEADING 3 -->
<we-row string="Heading 3" class="o_design_tab_title">
<we-input data-customize-css-property=""
data-css-property="font-size"
data-selector-text="h3"
data-unit="px"/>
<we-colorpicker data-customize-css-property=""
data-css-property="color"
data-selector-text="h3"
data-no-transparency="true"
data-color-prefix="text-"/>
</we-row>
<we-row string="" class="o_we_sublevel_1 o_short_title">
<we-fontfamilypicker data-selector-text="h3"/>
<span></span> <!-- Separate the select from the buttons (styling) -->
<we-button title="Bold" class="fa fa-fw fa-bold" data-no-preview="true" data-toggle="true"
data-customize-css-property="bolder"
data-selector-text="h3"
data-css-property="font-weight"/>
<we-button title="Italic" class="fa fa-fw fa-italic" data-no-preview="true" data-toggle="true"
data-customize-css-property="italic"
data-selector-text="h3"
data-css-property="font-style"/>
<we-button title="Underline" class="fa fa-fw fa-underline" data-no-preview="true" data-toggle="true"
data-customize-css-property="underline"
data-selector-text="h3"
data-css-property="text-decoration-line"/>
</we-row>
<!-- TEXT -->
<we-row string="Text" class="o_design_tab_title">
<we-input data-customize-css-property=""
data-css-property="font-size"
data-selector-text="p, p > *, li, li > *"
data-unit="px"/>
<we-colorpicker data-customize-css-property=""
data-css-property="color"
data-selector-text="p, p > *, li, li > *"
data-no-transparency="true"
data-color-prefix="text-"/>
</we-row>
<we-row string="" class="o_we_sublevel_1 o_short_title">
<we-fontfamilypicker data-selector-text="p, p > *, li, li > *"/>
<span></span> <!-- Separate the select from the buttons (styling) -->
<we-button title="Bold" class="fa fa-fw fa-bold" data-no-preview="true" data-toggle="true"
data-customize-css-property="bolder"
data-selector-text="p, p > *, li, li > *"
data-css-property="font-weight"/>
<we-button title="Italic" class="fa fa-fw fa-italic" data-no-preview="true" data-toggle="true"
data-customize-css-property="italic"
data-selector-text="p, p > *, li, li > *"
data-css-property="font-style"/>
<we-button title="Underline" class="fa fa-fw fa-underline" data-no-preview="true" data-toggle="true"
data-customize-css-property="underline"
data-selector-text="p, p > *, li, li > *"
data-css-property="text-decoration-line"/>
</we-row>
<!-- LINKS -->
<we-row string="Links" class="o_design_tab_title">
<we-colorpicker data-customize-css-property=""
data-css-property="color"
data-selector-text="a:not(.btn), a.btn.btn-link"
data-no-transparency="true"
data-color-prefix="text-"/>
<we-button title="Underline" class="fa fa-fw fa-underline" data-no-preview="true" data-toggle="true"
data-customize-css-property="underline"
data-selector-text="a:not(.btn), a.btn.btn-link"
data-css-property="text-decoration-line"/>
</we-row>
<!-- PRIMARY BUTTONS -->
<we-row string="Primary Buttons" class="o_design_tab_title">
<we-input data-customize-css-property=""
data-css-property="font-size"
data-selector-text="a.btn.btn-primary, a.btn.btn-outline-primary, a.btn.btn-fill-primary"
data-unit="px"/>
<we-colorpicker data-customize-css-property=""
data-css-property="color"
data-selector-text="a.btn.btn-primary, a.btn.btn-outline-primary, a.btn.btn-fill-primary"
data-no-transparency="true"
data-color-prefix="text-"/>
<we-colorpicker data-customize-css-property=""
data-css-property="background-color"
data-selector-text="a.btn.btn-primary, a.btn.btn-outline-primary, a.btn.btn-fill-primary"
data-no-transparency="true"
data-color-prefix="bg-"/>
</we-row>
<we-select string="Size" class="o_we_sublevel_1" data-selector-text="a.btn.btn-primary, a.btn.btn-outline-primary, a.btn.btn-fill-primary">
<we-button data-apply-button-size="btn-sm">Small</we-button>
<we-button data-apply-button-size="btn-md">Medium</we-button>
<we-button data-apply-button-size="btn-lg">Large</we-button>
</we-select>
<we-row string="Border" class="o_we_sublevel_1">
<we-input data-customize-css-property=""
data-css-property="border-width"
data-selector-text="a.btn.btn-primary, a.btn.btn-outline-primary, a.btn.btn-fill-primary"
data-unit="px"/>
<we-select data-selector-text="a.btn.btn-primary, a.btn.btn-outline-primary, a.btn.btn-fill-primary" data-css-property="border-style">
<we-button title="Solid" data-customize-css-property="solid">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: solid;"/>
</we-button>
<we-button title="Dashed" data-customize-css-property="dashed">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: dashed;"/>
</we-button>
<we-button title="Dotted" data-customize-css-property="dotted">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: dotted;"/>
</we-button>
<we-button title="Double" data-customize-css-property="double">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: double; border-left: none; border-right: none;"/>
</we-button>
</we-select>
<we-colorpicker data-customize-css-property=""
data-css-property="border-color"
data-selector-text="a.btn.btn-primary, a.btn.btn-outline-primary, a.btn.btn-fill-primary"
data-no-transparency="true"
data-color-prefix="border-"/>
</we-row>
<!-- SECONDARY BUTTONS -->
<we-row string="Secondary Buttons" class="o_design_tab_title">
<we-input data-customize-css-property=""
data-css-property="font-size"
data-selector-text="a.btn.btn-secondary, a.btn.btn-outline-secondary, a.btn.btn-fill-secondary"
data-unit="px"/>
<we-colorpicker data-customize-css-property=""
data-css-property="color"
data-selector-text="a.btn.btn-secondary, a.btn.btn-outline-secondary, a.btn.btn-fill-secondary"
data-no-transparency="true"
data-color-prefix="text-"/>
<we-colorpicker data-customize-css-property=""
data-css-property="background-color"
data-selector-text="a.btn.btn-secondary, a.btn.btn-outline-secondary, a.btn.btn-fill-secondary"
data-no-transparency="true"
data-color-prefix="bg-"/>
</we-row>
<we-select string="Size" class="o_we_sublevel_1" data-selector-text="a.btn.btn-secondary, a.btn.btn-outline-secondary, a.btn.btn-fill-secondary">
<we-button data-apply-button-size="btn-sm">Small</we-button>
<we-button data-apply-button-size="btn-md">Medium</we-button>
<we-button data-apply-button-size="btn-lg">Large</we-button>
</we-select>
<we-row string="Border" class="o_we_sublevel_1">
<we-input data-customize-css-property=""
data-css-property="border-width"
data-selector-text="a.btn.btn-secondary, a.btn.btn-outline-secondary, a.btn.btn-fill-secondary"
data-unit="px"/>
<we-select data-selector-text="a.btn.btn-secondary, a.btn.btn-outline-secondary, a.btn.btn-fill-secondary" data-css-property="border-style">
<we-button title="Solid" data-customize-css-property="solid">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: solid;"/>
</we-button>
<we-button title="Dashed" data-customize-css-property="dashed">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: dashed;"/>
</we-button>
<we-button title="Dotted" data-customize-css-property="dotted">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: dotted;"/>
</we-button>
<we-button title="Double" data-customize-css-property="double">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: double; border-left: none; border-right: none;"/>
</we-button>
</we-select>
<we-colorpicker data-customize-css-property=""
data-css-property="border-color"
data-selector-text="a.btn.btn-secondary, a.btn.btn-outline-secondary, a.btn.btn-fill-secondary"
data-no-transparency="true"
data-color-prefix="border-"/>
</we-row>
<!-- SEPARATORS -->
<we-row string="Separators" class="o_design_tab_title">
<we-input data-customize-css-property=""
data-css-property="border-top-width"
data-selector-text="hr"
data-unit="px"/>
<we-select data-selector-text="hr" data-css-property="border-top-style">
<we-button title="Solid" data-customize-css-property="solid">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: solid;"/>
</we-button>
<we-button title="Dashed" data-customize-css-property="dashed">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: dashed;"/>
</we-button>
<we-button title="Dotted" data-customize-css-property="dotted">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: dotted;"/>
</we-button>
<we-button title="Double" data-customize-css-property="double">
<div class="o_we_fake_img_item o_we_border_preview" style="border-style: double; border-left: none; border-right: none;"/>
</we-button>
</we-select>
<we-colorpicker data-customize-css-property=""
data-css-property="border-top-color"
data-selector-text="hr"
data-no-transparency="true"
data-color-prefix="border-"/>
</we-row>
<we-select string="Width" class="o_we_sublevel_1" data-selector-text="hr" data-css-property="width">
<we-button data-customize-css-property="25%">25%</we-button>
<we-button data-customize-css-property="50%">50%</we-button>
<we-button data-customize-css-property="75%">75%</we-button>
<we-button data-customize-css-property="100%">100%</we-button>
</we-select>
</div>
</xpath>
<section class="o_snippet_view_in_browser o_mail_snippet_general pt16 pb16" data-name="View Online" data-vxml="001">
<p style="text-align: center" class="mb-0">
<a href="/view">View Online</a>
</p>
</section>
</template>
</odoo>

View file

@ -18,35 +18,32 @@
<!-- Default Theme -->
<template id="theme_default_template">
<style id="design-element">
h2 {
font-weight: bolder;
}
p, p > *, li, li > * {
color: #6c757d;
}
hr {
border-top-color: #ced4da !important;
.o_layout .o_mail_wrapper .o_mail_wrapper_td {
--h2-font-weight: bolder;
--text-color: #6c757d;
--link-font-weight: bolder;
--separator-border-color: #ced4da !important;
}
</style>
<div class="s_header_logo o_mail_block_header_logo o_mail_snippet_general pt16 pb16">
<section class="s_header_logo o_mail_block_header_logo o_mail_snippet_general pt16 pb16" data-snippet="s_header_logo" data-name="Centered Logo" data-vxml="001">
<div class="container">
<div class="row">
<div class="col-lg-4"/>
<div class="col-lg-4" style="text-align: center;">
<div class="col-md-4"/>
<div class="col-md-4" style="text-align: center;">
<a t-att-href="(company_id.website) or '#'" style="text-decoration:none;" target="_blank">
<img border="0" src="/mass_mailing/static/src/img/theme_default/s_default_image_header_logo.png" style="height:auto; max-width:100%;" width="180" class="img-fluid"/>
<img border="0" src="/mass_mailing/static/src/img/theme_default/s_default_image_header_logo.png" data-original-src="/mass_mailing/static/src/img/theme_default/s_default_image_header_logo.png" style="height:auto; max-width:100%;" width="180" class="img-fluid"/>
</a>
</div>
<div class="col-lg-4" style="text-align: right;"/>
<div class="col-md-4" style="text-align: right;"/>
</div>
</div>
</div>
<div class="s_text_block o_mail_snippet_general pt40 pb16" style="padding-left: 15px; padding-right: 15px;">
</section>
<section class="s_text_block o_mail_snippet_general pt40 pb16" style="padding-left: 15px; padding-right: 15px;" data-snippet="s_text_block" data-name="Text" data-vxml="001">
<div class="container s_allow_columns">
<h2>Thank you for joining us!</h2>
<p><br/>We want to take this opportunity to welcome you to our ever-growing community!
<br/>Your platform is ready for work, it will help you reduce the costs of digital signatures, attract new customers and increase sales.</p>
<p><img src="/mass_mailing/static/src/img/theme_default/signature.png" style="width:125px; margin-top:8px;margin-bottom:-25px;" alt="Signature" class="img-fluid"/></p>
<p><img src="/mass_mailing/static/src/img/theme_default/signature.png" data-original-src="/mass_mailing/static/src/img/theme_default/signature.png" style="width:125px; margin-top:8px;margin-bottom:-25px;" alt="Signature" class="img-fluid"/></p>
<p>Michael Fletcher<br/>
<span style="font-size: 12px; font-weight: bolder;">Customer Service</span>
</p>
@ -54,8 +51,8 @@
<a role="button" href="#" class="btn btn-primary">LOGIN</a>
</p>
</div>
</div>
<div class="s_hr pt16 pb16" data-snippet="s_hr" data-name="Separator">
</section>
<div class="s_hr pt16 pb16" data-snippet="s_hr" data-name="Separator" data-vxml="001">
<hr class="s_hr_1px s_hr_solid"/>
</div>
<t t-call="mass_mailing.s_mail_block_footer_social_left"/>

View file

@ -8,30 +8,30 @@
<xpath expr="//header" position="inside">
<field name="is_mailing_campaign_activated" invisible="1"/>
<button name="%(action_create_mass_mailings_from_campaign)d"
type="action" class="oe_highlight" attrs="{'invisible': [('is_mailing_campaign_activated', '=', False)]}"
type="action" class="oe_highlight" invisible="not is_mailing_campaign_activated"
groups="mass_mailing.group_mass_mailing_user" string="Send Mailing"/>
</xpath>
<xpath expr="//div[hasclass('oe_button_box')]" position="inside">
<button name="%(action_view_mass_mailings_from_campaign)d"
type="action" class="oe_stat_button order-9" icon="fa-envelope-o"
attrs="{'invisible': ['|', ('mailing_mail_count', '=', 0), ('is_mailing_campaign_activated', '=', False)]}"
invisible="mailing_mail_count == 0 or not is_mailing_campaign_activated"
groups="mass_mailing.group_mass_mailing_user">
<field name="mailing_mail_count" widget="statinfo" string="Mailings"/>
</button>
</xpath>
<xpath expr="//notebook" position="inside">
<page string="Mailings" name="mailings"
attrs="{'invisible': ['|', ('mailing_mail_count', '=', 0), ('is_mailing_campaign_activated', '=', False)]}"
invisible="mailing_mail_count == 0 or not is_mailing_campaign_activated"
groups="mass_mailing.group_mass_mailing_user">
<field name="mailing_mail_ids" nolabel="1">
<tree>
<list>
<field name="calendar_date" string="Date"/>
<field name="subject" attrs="{'readonly': [('state', 'in', ('sending', 'done'))]}"/>
<field name="subject" readonly="state in ('sending', 'done')"/>
<field name="mailing_model_id" string="Recipients" optional="hide"/>
<field name="user_id" widget="many2one_avatar_user"/>
<field name="ab_testing_enabled" string="A/B Test"
groups="mass_mailing.group_mass_mailing_campaign"
attrs="{'column_invisible': [('parent.ab_testing_mailings_count', '=', 0)]}"/>
column_invisible="parent.ab_testing_mailings_count == 0"/>
<field name="campaign_id" string="Campaign" groups="mass_mailing.group_mass_mailing_campaign" optional="hide"/>
<field name="received_ratio" string="Delivered (%)" avg="Average of Delivered"/>
<field name="opened_ratio" string="Opened (%)" avg="Average of Opened"/>
@ -40,18 +40,19 @@
<field name="replied_ratio" string="Replied (%)" avg="Average of Replied"/>
<field name="state" decoration-info="state in ('draft', 'in_queue')" decoration-success="state in ('sending', 'done')" widget="badge"/>
<button name="action_duplicate" type="object" string="Duplicate"/>
</tree>
</list>
</field>
</page>
</xpath>
<xpath expr="//notebook" position="after">
<field name="ab_testing_mailings_count" invisible="1"/>
<group name="ab_test_group" groups="mass_mailing.group_mass_mailing_campaign" attrs="{'invisible': [('ab_testing_mailings_count', '=', 0)]}">
<group name="ab_test_group" groups="mass_mailing.group_mass_mailing_campaign" invisible="ab_testing_mailings_count == 0">
<group string="A/B Test">
<field name="ab_testing_completed" invisible="1"/>
<field name="ab_testing_winner_selection" attrs="{'readonly': [('ab_testing_completed', '=', True)]}"/>
<field name="ab_testing_winner_selection" readonly="ab_testing_completed"/>
<field name="ab_testing_schedule_datetime"
attrs="{'invisible': [('ab_testing_winner_selection', '=', 'manual')], 'readonly': [('ab_testing_completed', '=', True)]}"/>
invisible="ab_testing_winner_selection == 'manual'"
readonly="ab_testing_completed"/>
</group>
</group>
</xpath>
@ -63,13 +64,13 @@
<field name="model">utm.campaign</field>
<field name="inherit_id" ref="utm.utm_campaign_view_kanban"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='user_id']" position="after">
<xpath expr="//field[@name='active']" position="after">
<field name="mailing_mail_ids" groups="mass_mailing.group_mass_mailing_user"/>
<field name="is_mailing_campaign_activated"/>
</xpath>
<xpath expr="//ul[@id='o_utm_actions']">
<a name="%(action_view_mass_mailings_from_campaign)d" type="action"
t-attf-class="oe_mailings #{record.mailing_mail_ids.raw_value.length === 0 ? 'text-muted' : ''}"
t-attf-class="pe-2 oe_mailings #{record.mailing_mail_ids.raw_value.length === 0 ? 'text-muted' : ''}"
t-if="record.is_mailing_campaign_activated.raw_value"
groups="mass_mailing.group_mass_mailing_user">
<t t-out="record.mailing_mail_ids.raw_value.length"/> Mailings
@ -81,7 +82,7 @@
<record id="action_view_utm_campaigns" model="ir.actions.act_window">
<field name="name">Campaigns</field>
<field name="res_model">utm.campaign</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_mode">kanban,list,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a mailing campaign