[IMP] mass_mailing: onboarding
Lots of small usability improvements on the mass_mailing app.
This commit is contained in:
committed by
Alexandre Kühn
parent
126850e9bd
commit
0cd656b5af
@@ -131,6 +131,10 @@ class MassMailingList(models.Model):
|
||||
if archive:
|
||||
(src_lists - self).write({'active': False})
|
||||
|
||||
@api.multi
|
||||
def close_dialog(self):
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
|
||||
class MassMailingContact(models.Model):
|
||||
"""Model of a contact. This model is different from the partner model
|
||||
@@ -387,10 +391,10 @@ class MassMailing(models.Model):
|
||||
state = fields.Selection([('draft', 'Draft'), ('in_queue', 'In Queue'), ('sending', 'Sending'), ('done', 'Sent')],
|
||||
string='Status', required=True, copy=False, default='draft')
|
||||
color = fields.Integer(string='Color Index')
|
||||
user_id = fields.Many2one('res.users', string='Mailing Manager', default=lambda self: self.env.user)
|
||||
# mailing options
|
||||
reply_to_mode = fields.Selection(
|
||||
[('thread', 'Followers of leads/applicants'), ('email', 'Specified Email Address')],
|
||||
string='Reply-To Mode', required=True)
|
||||
[('thread', 'Recipient Followers'), ('email', 'Specified Email Address')], string='Reply-To Mode', required=True)
|
||||
reply_to = fields.Char(string='Reply To', help='Preferred Reply-To Address',
|
||||
default=lambda self: self.env['mail.message']._get_default_from())
|
||||
# recipients
|
||||
@@ -514,13 +518,20 @@ class MassMailing(models.Model):
|
||||
|
||||
@api.onchange('mailing_model_id', 'contact_list_ids')
|
||||
def _onchange_model_and_list(self):
|
||||
if self.mailing_model_name == 'mail.mass_mailing.list':
|
||||
if self.contact_list_ids:
|
||||
self.mailing_domain = "[('list_ids', 'in', [%s]), ('opt_out', '=', False)]" % (','.join(str(id) for id in self.contact_list_ids.ids),)
|
||||
else:
|
||||
self.mailing_domain = "[(0, '=', 1)]"
|
||||
elif self.mailing_model_name and 'opt_out' in self.env[self.mailing_model_name]._fields and not self.mailing_domain:
|
||||
self.mailing_domain = "[('opt_out', '=', False)]"
|
||||
str_tuples = ""
|
||||
if self.mailing_model_name:
|
||||
if self.mailing_model_name == 'mail.mass_mailing.list':
|
||||
if self.contact_list_ids:
|
||||
str_tuples += "('list_ids', 'in', {}),".format(','.join(str(id) for id in self.contact_list_ids.ids))
|
||||
else:
|
||||
str_tuples += "(0, '=', 1),"
|
||||
elif self.mailing_model_name == 'res.partner':
|
||||
str_tuples += "('customer', '=', True),"
|
||||
elif 'opt_out' in self.env[self.mailing_model_name]._fields and not self.mailing_domain:
|
||||
str_tuples += "('opt_out', '=', False),"
|
||||
else:
|
||||
str_tuples += "(0, '=', 1),"
|
||||
self.mailing_domain = "[{}]".format(str_tuples)
|
||||
self.body_html = "on_change_model_and_list"
|
||||
|
||||
#------------------------------------------------------
|
||||
|
||||
@@ -16,6 +16,9 @@ KanbanRecord.include({
|
||||
_openRecord: function () {
|
||||
if (this.modelName === 'mail.mass_mailing.campaign') {
|
||||
this.$('.oe_mailings').click();
|
||||
} else if (this.modelName === 'mail.mass_mailing.list' &&
|
||||
this.$('.o_mailing_list_kanban_boxes a')) {
|
||||
this.$('.o_mailing_list_kanban_boxes a').first().click();
|
||||
} else {
|
||||
this._super.apply(this, arguments);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,22 @@
|
||||
.o_form_view .o_form_sheet .o_notebook .tab-content .tab-pane .o_mail_body {
|
||||
// cancel padding of form_sheet
|
||||
margin-top: -@odoo-sheet-cancel-tpadding;
|
||||
margin-left: -@odoo-sheet-cancel-hpadding;
|
||||
margin-right: -@odoo-sheet-cancel-hpadding;
|
||||
margin-bottom: -@odoo-sheet-cancel-bpadding;
|
||||
}
|
||||
|
||||
.o_mail_theme_selector {
|
||||
> a {
|
||||
.o-position-absolute(0, 0, auto, 0);
|
||||
height: 34px;
|
||||
height: @odoo-navbar-height;
|
||||
line-height: 31px;
|
||||
border-radius: 0;
|
||||
background-color: @o-we-color-darker;
|
||||
color: @o-we-color-text-normal;
|
||||
.o-flex-display();
|
||||
.o-justify-content(center);
|
||||
.o-align-items(center);
|
||||
|
||||
&:hover, &:focus, &:active {
|
||||
color: @o-we-color-text-light;
|
||||
|
||||
@@ -9,7 +9,11 @@
|
||||
<field name="mail_mail_id_int"/>
|
||||
<field name="message_id"/>
|
||||
<field name="mass_mailing_id"/>
|
||||
<filter string="Sent" name="filter_sent" domain="[('sent', '!=', False)]"/>
|
||||
<filter string="Received" name="filter_received" domain="[('sent', '!=', False), ('bounced', '=', False)]"/>
|
||||
<filter string="Scheduled" name="filter_scheduled" domain="[('scheduled', '!=', False), ('sent', '=', False), ('exception', '=', False)]"/>
|
||||
<filter string="Failed" name="filter_failed" domain="[('scheduled', '!=', False), ('sent', '=', False), ('exception', '!=', False)]"/>
|
||||
<separator/>
|
||||
<filter string="Opened" name="filter_opened" domain="[('opened', '!=', False)]"/>
|
||||
<filter string="Clicked" name="filter_clicked" domain="[('clicked', '!=', False)]"/>
|
||||
<filter string="Replied" name="filter_replied" domain="[('replied', '!=', False)]"/>
|
||||
@@ -29,7 +33,7 @@
|
||||
<field name="name">mail.mail.statistics.tree</field>
|
||||
<field name="model">mail.mail.statistics</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Mail Statistics">
|
||||
<tree string="Mail Statistics" create="0">
|
||||
<field name="recipient"/>
|
||||
<field name="message_id"/>
|
||||
<field name="sent"/>
|
||||
@@ -46,27 +50,35 @@
|
||||
<field name="name">mail.mail.statistics.form</field>
|
||||
<field name="model">mail.mail.statistics</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Mail Statistics">
|
||||
<group>
|
||||
<form string="Mail Statistics" create="0">
|
||||
<div class="oe_form_box_info oe_text_center alert-info" attrs="{'invisible': [('exception', '=', False)]}">
|
||||
<p><strong>This email could not be sent.</strong></p>
|
||||
</div>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="recipient"/>
|
||||
<field name="mail_mail_id"/>
|
||||
<field name="mail_mail_id_int"/>
|
||||
<field name="message_id"/>
|
||||
<field name="exception"/>
|
||||
<field name="sent"/>
|
||||
<field name="opened"/>
|
||||
<field name="clicked"/>
|
||||
<field name="replied"/>
|
||||
<field name="bounced"/>
|
||||
<group>
|
||||
<field name="recipient"/>
|
||||
<field name="mass_mailing_id"/>
|
||||
<field name="mass_mailing_campaign_id" groups="mass_mailing.group_mass_mailing_campaign"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<field name="exception" attrs="{'invisible': [('exception', '=', False)]}"/>
|
||||
<field name="sent"/>
|
||||
<field name="opened"/>
|
||||
<field name="clicked"/>
|
||||
<field name="replied"/>
|
||||
<field name="bounced"/>
|
||||
</group>
|
||||
|
||||
<group groups="base.group_no_one">
|
||||
<field name="mail_mail_id_int"/>
|
||||
<field name="message_id"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="mass_mailing_id"/>
|
||||
<field name="mass_mailing_campaign_id"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -88,7 +100,7 @@
|
||||
</record>
|
||||
|
||||
<record id="action_view_mail_mail_statistics_mailing_list" model="ir.actions.act_window">
|
||||
<field name="name">EMails Sent</field>
|
||||
<field name="name">Emails Sent</field>
|
||||
<field name="res_model">mail.mail.statistics</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,graph,form,pivot</field>
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<!-- Marketing / Mass Mailing -->
|
||||
<!-- Marketing / Mailing -->
|
||||
<menuitem name="Email Marketing" id="mass_mailing_menu_root" sequence="60" web_icon="mass_mailing,static/description/icon.png"/>
|
||||
<menuitem name="Mailings" id="mass_mailing_menu"
|
||||
parent="mass_mailing_menu_root" sequence="1" groups="mass_mailing.group_mass_mailing_user"/>
|
||||
<menuitem name="Contacts" id="mass_mailing_contact_menu"
|
||||
<menuitem name="Mailing Lists" id="mass_mailing_mailing_list_menu"
|
||||
parent="mass_mailing_menu_root" sequence="2" groups="mass_mailing.group_mass_mailing_user"/>
|
||||
<!-- Marketing / Configuration -->
|
||||
<menuitem name="Configuration" id="mass_mailing_configuration"
|
||||
parent="mass_mailing_menu_root" sequence="100"/>
|
||||
|
||||
<!-- MASS MAILING CONTACT -->
|
||||
<!-- MAILING CONTACT -->
|
||||
|
||||
<!-- Custom reports (aka filters) -->
|
||||
<record id="filter_contact_subscription" model="ir.filters">
|
||||
@@ -32,7 +32,7 @@
|
||||
<field name="name">mail.mass_mailing.contact.search</field>
|
||||
<field name="model">mail.mass_mailing.contact</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Contacts">
|
||||
<search string="Mailing List Contacts">
|
||||
<field name="name" filter_domain="['|','|',('name','ilike',self),('company_name','ilike',self), ('email','ilike',self)]"
|
||||
string="Name / Email"/>
|
||||
<field name="tag_ids"/>
|
||||
@@ -54,7 +54,7 @@
|
||||
<field name="model">mail.mass_mailing.contact</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Contacts">
|
||||
<tree string="Mailing List Contacts">
|
||||
<field name="create_date"/>
|
||||
<field name="name"/>
|
||||
<field name="company_name"/>
|
||||
@@ -112,7 +112,7 @@
|
||||
<field name="model">mail.mass_mailing.contact</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Contacts">
|
||||
<form string="Mailing List Contacts">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
@@ -153,7 +153,7 @@
|
||||
<field name="model">mail.mass_mailing.contact</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Contacts" stacked="True">
|
||||
<pivot string="Mailing List Contacts" stacked="True">
|
||||
<field name="create_date" type="row"/>
|
||||
</pivot>
|
||||
</field>
|
||||
@@ -164,14 +164,14 @@
|
||||
<field name="model">mail.mass_mailing.contact</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Contacts" stacked="True">
|
||||
<graph string="Mailing List Contacts" stacked="True">
|
||||
<field name="create_date" type="row"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_view_mass_mailing_contacts">
|
||||
<field name="name">Contacts</field>
|
||||
<field name="name">Mailing List Contacts</field>
|
||||
<field name="res_model">mail.mass_mailing.contact</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,kanban,form,graph,pivot</field>
|
||||
@@ -199,11 +199,11 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Contacts" id="menu_email_mass_mailing_contacts"
|
||||
parent="mass_mailing_contact_menu" sequence="4"
|
||||
<menuitem name="Mailing List Contacts" id="menu_email_mass_mailing_contacts"
|
||||
parent="mass_mailing_mailing_list_menu" sequence="4"
|
||||
action="action_view_mass_mailing_contacts"/>
|
||||
|
||||
<!-- MASS MAILING LIST -->
|
||||
<!-- MAILING LIST -->
|
||||
<record model="ir.ui.view" id="view_mail_mass_mailing_list_search">
|
||||
<field name="name">mail.mass_mailing.list.search</field>
|
||||
<field name="model">mail.mass_mailing.list</field>
|
||||
@@ -233,32 +233,6 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_mail_mass_mailing_list_kanban" model="ir.ui.view">
|
||||
<field name="name">mail.mass_mailing.list.kanban</field>
|
||||
<field name="model">mail.mass_mailing.list</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_kanban_mobile">
|
||||
<field name="name"/>
|
||||
<field name="contact_nbr"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div class="o_kanban_record_top mb0">
|
||||
<div class="o_kanban_record_headings mt4">
|
||||
<strong class="o_kanban_record_title"><t t-esc="record.name.value"/></strong>
|
||||
</div>
|
||||
<span class="badge">
|
||||
<i class="fa fa-user"/>
|
||||
<t t-esc="record.contact_nbr.value"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_mail_mass_mailing_list_form">
|
||||
<field name="name">mail.mass_mailing.list.form</field>
|
||||
<field name="model">mail.mass_mailing.list</field>
|
||||
@@ -287,33 +261,119 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_mail_mass_mailing_list_form_simplified" model="ir.ui.view">
|
||||
<field name="name">mail.mass_mailing.list.form.simplified</field>
|
||||
<field name="model">mail.mass_mailing.list</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Contact List">
|
||||
<group>
|
||||
<group>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1>
|
||||
<field name="name" placeholder="e.g. Consumer Newsletter"/>
|
||||
</h1>
|
||||
</div>
|
||||
</group>
|
||||
</group>
|
||||
<footer>
|
||||
<button string="Create" name="close_dialog" type="object" class="btn-primary"/>
|
||||
<button string="Discard" class="btn-default" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="open_create_mass_mailing_list" model="ir.actions.act_window">
|
||||
<field name="name">Create a Mass Mailing List</field>
|
||||
<field name="res_model">mail.mass_mailing.list</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="view_mail_mass_mailing_list_form_simplified"/>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<record id="view_mail_mass_mailing_list_kanban" model="ir.ui.view">
|
||||
<field name="name">mail.mass_mailing.list.kanban</field>
|
||||
<field name="model">mail.mass_mailing.list</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_kanban_mobile" on_create="mass_mailing.open_create_mass_mailing_list">
|
||||
<field name="name"/>
|
||||
<field name="contact_nbr"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div class="o_mass_mailing_kanban_main">
|
||||
<div class="o_kanban_card_content">
|
||||
<div class="o_kanban_primary_left">
|
||||
<div class="o_primary">
|
||||
<span><t t-esc="record.name.value"/></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_card_manage_pane">
|
||||
<div class="o_kanban_card_manage_section o_dropdown_kanban dropdown">
|
||||
<a class="dropdown-toggle btn" data-toggle="dropdown" href="#" >
|
||||
<span class="fa fa-ellipsis-v"/>
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li t-if="widget.editable">
|
||||
<a type="edit">Edit</a>
|
||||
</li>
|
||||
<li t-if="widget.deletable">
|
||||
<a type="delete">Delete</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_mailing_list_kanban_boxes">
|
||||
<a class="o_project_kanban_box" name="%(action_view_mass_mailing_contacts_from_list)d" type="action">
|
||||
<div>
|
||||
<span class="badge">
|
||||
<i class="fa fa-user"/>
|
||||
<t t-esc="record.contact_nbr.value"/>
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_view_mass_mailing_lists">
|
||||
<field name="name">Mailing Lists</field>
|
||||
<field name="res_model">mail.mass_mailing.list</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,kanban,form</field>
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a new mailing list
|
||||
</p><p>
|
||||
Mailing lists allow you to manage customers and
|
||||
contacts easily and to send to mailings in a single click.
|
||||
No need of importing your mailing lists, you can easily
|
||||
send emails to any contact saved in other Odoo apps.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Mailing Lists" id="menu_email_mass_mailing_lists"
|
||||
parent="mass_mailing_contact_menu" sequence="3"
|
||||
parent="mass_mailing_mailing_list_menu" sequence="3"
|
||||
action="action_view_mass_mailing_lists"/>
|
||||
|
||||
<!-- MASS MAILING !-->
|
||||
<!-- MAILING !-->
|
||||
<record model="ir.ui.view" id="view_mail_mass_mailing_search">
|
||||
<field name="name">mail.mass_mailing.search</field>
|
||||
<field name="model">mail.mass_mailing</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Mass Mailings">
|
||||
<search string="Mailings">
|
||||
<field name="name" string="Mailings"/>
|
||||
<field name="mass_mailing_campaign_id"/>
|
||||
<filter string="My Mailings" name="assigned_to_me"
|
||||
domain="[('user_id', '=', uid)]"
|
||||
help="Mailings that are assigned to me"/>
|
||||
<filter name="inactive" string="Archived" domain="[('active','=',False)]"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="Status" name="group_state"
|
||||
@@ -333,7 +393,7 @@
|
||||
<field name="model">mail.mass_mailing</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Mass Mailings">
|
||||
<tree string="Mailings">
|
||||
<field name="name"/>
|
||||
<field name="sent"/>
|
||||
<field name="delivered"/>
|
||||
@@ -349,7 +409,7 @@
|
||||
<field name="name">mail.mass_mailing.form</field>
|
||||
<field name="model">mail.mass_mailing</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Mass Mailing">
|
||||
<form string="Mailing">
|
||||
<header style="min-height:31px;">
|
||||
<button name="action_test_mailing" type="object" class="oe_highlight" string="Test Mailing"/>
|
||||
<button name="put_in_queue" type="object" attrs="{'invisible': ['|', ('state', 'in', ('in_queue', 'done'))]}" class="oe_highlight" string="Send to All"
|
||||
@@ -360,26 +420,41 @@
|
||||
<field name="state" readonly="1" widget="statusbar"/>
|
||||
</header>
|
||||
<div class="oe_form_box_info oe_text_center" attrs="{'invisible': [('scheduled', '=', 0)]}">
|
||||
<p><strong>
|
||||
<field name="scheduled" class="oe_inline"/>
|
||||
emails are in queue and will be sent soon.
|
||||
</strong></p>
|
||||
<p>
|
||||
<button class="btn-link"
|
||||
name="%(action_view_mail_mail_statistics_mailing_list)d"
|
||||
type="action"
|
||||
context="{'search_default_filter_scheduled': True}">
|
||||
<strong>
|
||||
<field name="scheduled" class="oe_inline"/>
|
||||
email(s) are in queue and will be sent soon.
|
||||
</strong>
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_form_box_info oe_text_center" attrs="{'invisible': ['|', ('state', '!=', 'done'), ('failed', '=', 0)]}">
|
||||
<p><strong>
|
||||
<field name="failed" class="oe_inline"/>
|
||||
emails could not be sent.
|
||||
</strong></p>
|
||||
<div class="oe_form_box_info oe_text_center alert-info" attrs="{'invisible': ['|', ('state', '!=', 'done'), ('failed', '=', 0)]}">
|
||||
<p>
|
||||
<button class="btn-link"
|
||||
name="%(action_view_mail_mail_statistics_mailing_list)d"
|
||||
type="action"
|
||||
context="{'search_default_filter_failed': True}">
|
||||
<strong>
|
||||
<field name="failed" class="oe_inline"/>
|
||||
email(s) could not be sent.
|
||||
</strong>
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_form_box_info oe_text_center" attrs="{'invisible': [('state', '!=', 'in_queue')]}">
|
||||
<p><strong>
|
||||
This mass mailing is scheduled for
|
||||
<field name="next_departure" class="oe_inline"/>
|
||||
This mailing is scheduled for
|
||||
<field name="next_departure" class="oe_inline"/>.
|
||||
</strong></p>
|
||||
</div>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box" attrs="{'invisible': [('state', 'in', ('draft','test'))]}">
|
||||
<button name="%(action_view_mail_mail_statistics_mailing_list)d" type="action"
|
||||
context="{'search_default_filter_sent': True}"
|
||||
icon="fa-envelope-o" class="oe_stat_button"
|
||||
attrs="{'invisible': [('sent', '=', 0)]}" >
|
||||
<field name="sent" string="Emails Sent" widget="statinfo"/>
|
||||
@@ -389,12 +464,12 @@
|
||||
type="action" class="oe_stat_button">
|
||||
<field name="received_ratio" string="Received" widget="percentpie"/>
|
||||
</button>
|
||||
<button name="%(action_view_mail_mail_statistics_mailing)d"
|
||||
<button name="%(action_view_mail_mail_statistics_mailing_list)d"
|
||||
context="{'search_default_filter_opened': True}"
|
||||
type="action" class="oe_stat_button">
|
||||
<field name="opened_ratio" string="Opened" widget="percentpie"/>
|
||||
</button>
|
||||
<button name="%(action_view_mail_mail_statistics_mailing)d"
|
||||
<button name="%(action_view_mail_mail_statistics_mailing_list)d"
|
||||
context="{'search_default_filter_replied': True}"
|
||||
type="action" class="oe_stat_button">
|
||||
<field name="replied_ratio" string="Replied" widget="percentpie"/>
|
||||
@@ -416,7 +491,6 @@
|
||||
</div>
|
||||
|
||||
<group>
|
||||
<field name="email_from"/>
|
||||
<label for="name" string="Subject"/>
|
||||
<div>
|
||||
<field name="name" nolabel="1"/>
|
||||
@@ -429,7 +503,8 @@
|
||||
<field name="mailing_domain" widget="domain"
|
||||
attrs="{'invisible': [('mailing_model_name', '=', 'mail.mass_mailing.list')]}"
|
||||
options="{'model': 'mailing_model_real'}"
|
||||
context="{'search_default_not_opt_out':1}"/>
|
||||
context="{'search_default_not_opt_out':1}">
|
||||
</field>
|
||||
<div attrs="{'invisible': [('mailing_model_name', '!=', 'mail.mass_mailing.list')]}">
|
||||
<label for="contact_list_ids" string="Select mailing lists:" class="oe_edit_only"/>
|
||||
<field name="contact_list_ids" widget="many2many_tags"
|
||||
@@ -439,24 +514,25 @@
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Mail Body">
|
||||
<field name="body_html" widget="html_frame" options="{'editor_url': '/mass_mailing/field/email_template'}"/>
|
||||
<field name="body_html" class="o_mail_body" widget="html_frame" options="{'editor_url': '/mass_mailing/field/email_template'}"/>
|
||||
</page>
|
||||
<page string="Options">
|
||||
<group>
|
||||
<group string="Mailing">
|
||||
<field name="email_from"/>
|
||||
<label for="reply_to"/>
|
||||
<div>
|
||||
<field name="reply_to_mode" widget="radio"
|
||||
attrs="{'invisible': [('mailing_model_name', 'in', ['mail.mass_mailing.contact', 'res.partner', 'mail.mass_mailing.list'])]}"/>
|
||||
<field name="reply_to"
|
||||
attrs="{'required': [('reply_to_mode', '=', 'email')], 'invisible': [('reply_to_mode', '=', 'thread')]}"/>
|
||||
</div>
|
||||
<label for="attachment_ids"/>
|
||||
<div>
|
||||
<field name="attachment_ids" widget="many2many_binary" string="Attach a file" class="oe_inline"/>
|
||||
</div>
|
||||
<field name="keep_archives" groups="base.group_no_one"/>
|
||||
<label for="reply_to"/>
|
||||
<div>
|
||||
<field name="reply_to_mode" widget="radio"
|
||||
attrs="{'invisible': [('mailing_model_name', 'in', ['mail.mass_mailing.contact', 'res.partner'])]}"/>
|
||||
<field name="reply_to"
|
||||
attrs="{'required': [('reply_to_mode', '=', 'email')]}"/>
|
||||
</div>
|
||||
<field name="schedule_date" />
|
||||
<field name="keep_archives" groups="base.group_no_one"/>
|
||||
<field name="create_date" readonly="1" attrs="{'invisible': [('create_date', '=', False)]}"/>
|
||||
<field name="sent_date" readonly="1" attrs="{'invisible': [('sent_date', '=', False)]}"/>
|
||||
</group>
|
||||
@@ -557,98 +633,108 @@
|
||||
<field name="name">mail.mass_mailing.graph</field>
|
||||
<field name="model">mail.mass_mailing</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Mass Mailing" type="bar">
|
||||
<graph string="Mailing" type="bar">
|
||||
<field name="state" type="row"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_view_mass_mailings" model="ir.actions.act_window">
|
||||
<field name="name">Mass Mailings</field>
|
||||
<field name="name">Mailings</field>
|
||||
<field name="res_model">mail.mass_mailing</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">kanban,tree,form,graph</field>
|
||||
<field name="context">{
|
||||
'search_default_assigned_to_me': 1,
|
||||
'default_user_id': uid,
|
||||
}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a new mailing list
|
||||
Create a new mailing
|
||||
</p><p>
|
||||
Mailing lists allow you to manage customers and
|
||||
contacts easily and to send to mailings in a single click.
|
||||
No need of importing your mailing lists, you can easily
|
||||
send emails to any contact saved in other Odoo apps.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_view_mass_mailings_from_campaign" model="ir.actions.act_window">
|
||||
<field name="name">Mass Mailings</field>
|
||||
<field name="name">Mailings</field>
|
||||
<field name="res_model">mail.mass_mailing</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
<field name="context">{
|
||||
'search_default_assigned_to_me': 1,
|
||||
'search_default_mass_mailing_campaign_id': [active_id],
|
||||
'default_mass_mailing_campaign_id': active_id,
|
||||
'default_user_id': uid,
|
||||
}
|
||||
</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a new mailing list
|
||||
Create a new mailing
|
||||
</p><p>
|
||||
Mailing lists allow you to manage customers and
|
||||
contacts easily and to send to mailings in a single click.
|
||||
No need of importing your mailing lists, you can easily
|
||||
send emails to any contact saved in other Odoo apps.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_create_mass_mailings_from_campaign" model="ir.actions.act_window">
|
||||
<field name="name">Mass Mailings</field>
|
||||
<field name="name">Mailings</field>
|
||||
<field name="res_model">mail.mass_mailing</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form,kanban,tree</field>
|
||||
<field name="context">{
|
||||
'search_default_assigned_to_me': 1,
|
||||
'search_default_mass_mailing_campaign_id': [active_id],
|
||||
'default_mass_mailing_campaign_id': active_id,
|
||||
'default_user_id': uid,
|
||||
}
|
||||
</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a new mailing list
|
||||
Create a new mailing
|
||||
</p><p>
|
||||
Mailing lists allow you to manage customers and
|
||||
contacts easily and to send to mailings in a single click.
|
||||
No need of importing your mailing lists, you can easily
|
||||
send emails to any contact saved in other Odoo apps.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_create_ab_mass_mailings_from_campaign" model="ir.actions.act_window">
|
||||
<field name="name">Mass Mailings</field>
|
||||
<field name="name">Mailings</field>
|
||||
<field name="res_model">mail.mass_mailing</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form,kanban,tree</field>
|
||||
<field name="context">{
|
||||
'search_default_assigned_to_me': 1,
|
||||
'search_default_mass_mailing_campaign_id': [active_id],
|
||||
'default_mass_mailing_campaign_id': active_id,
|
||||
'default_contact_ab_pc': 10,
|
||||
'default_user_id': uid,
|
||||
}
|
||||
</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a new mailing list
|
||||
Create a new mailing
|
||||
</p><p>
|
||||
Mailing lists allow you to manage customers and
|
||||
contacts easily and to send to mailings in a single click.
|
||||
No need of importing your mailing lists, you can easily
|
||||
send emails to any contact saved in other Odoo apps.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Mass Mailings" id="menu_email_mass_mailings"
|
||||
<menuitem name="Mailings" id="menu_email_mass_mailings"
|
||||
parent="mass_mailing_menu" sequence="2"
|
||||
action="action_view_mass_mailings"/>
|
||||
|
||||
<!-- MASS MAILING CAMPAIGN STAGE !-->
|
||||
<!-- MAILING CAMPAIGN STAGE !-->
|
||||
<record model="ir.ui.view" id="view_mail_mass_mailing_stage_search">
|
||||
<field name="name">mail.mass_mailing.stage.search</field>
|
||||
<field name="model">mail.mass_mailing.stage</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Mass Mailings">
|
||||
<search string="Mailings">
|
||||
<field name="name"/>
|
||||
</search>
|
||||
</field>
|
||||
@@ -659,14 +745,14 @@
|
||||
<field name="model">mail.mass_mailing.stage</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Mass Mailings" editable="top">
|
||||
<tree string="Mailings" editable="top">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_view_mass_mailing_stages" model="ir.actions.act_window">
|
||||
<field name="name">Mass Mailing Stages</field>
|
||||
<field name="name">Mailing Stages</field>
|
||||
<field name="res_model">mail.mass_mailing.stage</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
@@ -685,7 +771,7 @@
|
||||
groups="base.group_no_one,mass_mailing.group_mass_mailing_campaign"
|
||||
action="action_view_mass_mailing_stages"/>
|
||||
|
||||
<!-- MASS MAILING CAMPAIGN TAGS !-->
|
||||
<!-- MAILING CAMPAIGN TAGS !-->
|
||||
<record id="mail_mass_mailing_tag_view_form" model="ir.ui.view">
|
||||
<field name="name">mail.mass_mailing.tag.form</field>
|
||||
<field name="model">mail.mass_mailing.tag</field>
|
||||
@@ -711,12 +797,12 @@
|
||||
<menuitem id="mass_mailing_tag_menu" parent="menu_mass_mailing_configuration" action="mass_mailing_tag_action" sequence="2" groups="base.group_no_one"/>
|
||||
|
||||
|
||||
<!-- MASS MAILING CAMPAIGNS !-->
|
||||
<!-- MAILING CAMPAIGNS !-->
|
||||
<record model="ir.ui.view" id="view_mail_mass_mailing_campaign_search">
|
||||
<field name="name">mail.mass_mailing.campaign.search</field>
|
||||
<field name="model">mail.mass_mailing.campaign</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Mass Mailing Campaigns">
|
||||
<search string="Mailing Campaigns">
|
||||
<field name="name" string="Campaigns"/>
|
||||
<field name="tag_ids"/>
|
||||
<field name="user_id"/>
|
||||
@@ -735,7 +821,7 @@
|
||||
<field name="model">mail.mass_mailing.campaign</field>
|
||||
<field name="priority">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Mass Mailing Campaigns">
|
||||
<tree string="Mailing Campaigns">
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
<field name="stage_id"/>
|
||||
@@ -748,10 +834,10 @@
|
||||
<field name="name">mail.mass_mailing.campaign.form</field>
|
||||
<field name="model">mail.mass_mailing.campaign</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Mass Mailing Campaign">
|
||||
<form string="Mailing Campaign">
|
||||
<header style="min-height:31px;">
|
||||
<button name="%(action_create_mass_mailings_from_campaign)d" type="action" class="oe_highlight" string="Send new Mass Mailing"/>
|
||||
<button name="%(action_create_ab_mass_mailings_from_campaign)d" type="action" class="oe_highlight" string="Send new A/B Testing Mass Mailing"/>
|
||||
<button name="%(action_create_mass_mailings_from_campaign)d" type="action" class="oe_highlight" string="Send new Mailing"/>
|
||||
<button name="%(action_create_ab_mass_mailings_from_campaign)d" type="action" class="oe_highlight" string="Send new A/B Testing Mailing"/>
|
||||
<span><field name="stage_id" widget="statusbar" clickable="True"/></span>
|
||||
</header>
|
||||
<sheet>
|
||||
@@ -883,15 +969,15 @@
|
||||
</record>
|
||||
|
||||
<record id="action_view_mass_mailing_campaigns" model="ir.actions.act_window">
|
||||
<field name="name">Mass Mailing Campaigns</field>
|
||||
<field name="name">Mailing Campaigns</field>
|
||||
<field name="res_model">mail.mass_mailing.campaign</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a campaign
|
||||
Create a new mailing campaign
|
||||
</p><p>
|
||||
Create a campaign to structure mass mailing and get analysis from email status.
|
||||
Create a campaign to structure mailing and get analysis from email status.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
<td width="70%" class="o_mail_logo_container o_mail_h_padding o_mail_v_padding">
|
||||
&nbsp;
|
||||
<a t-att-href="(company_id.website) or '#'" style="text-decoration:none;float:none;">
|
||||
<img border="0" src="/web/image/mass_mailing.s_default_image_logo" style="height:auto;max-width:400px;" alt="Your Logo" />
|
||||
<img border="0" src="/mass_mailing/static/src/img/theme_basic/s_default_image_logo.png" style="height:auto;max-width:400px;" alt="Your Logo" />
|
||||
</a>
|
||||
&nbsp;
|
||||
</td>
|
||||
@@ -124,7 +124,7 @@
|
||||
<td width="20%"/>
|
||||
<td valign="center" width="60%" class="text-center o_mail_v_padding">
|
||||
<a t-att-href="(company_id.website) or '#'" style="text-decoration:none;">
|
||||
<img border="0" src="/web/image/mass_mailing.s_default_image_logo" style="height:auto;max-width:400px;width:auto" alt="Your Logo" />
|
||||
<img border="0" src="/mass_mailing/static/src/img/theme_basic/s_default_image_logo.png" style="height:auto;max-width:400px;width:auto" alt="Your Logo" />
|
||||
</a>
|
||||
</td>
|
||||
<td width="20%" style="text-align:right"/>
|
||||
@@ -142,7 +142,7 @@
|
||||
<tr>
|
||||
<td width="100%" valign="top" class="o_mail_full_width_padding">
|
||||
<a href="#">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_banner" class="center-block" alt="Your Banner Image" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_banner.jpg" class="center-block" alt="Your Banner Image" />
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -355,7 +355,7 @@
|
||||
<tr>
|
||||
<td style="vertical-align:top;width:270px;" class="o_mail_col_mv">
|
||||
<div class="o_mail_col_container">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_two_cols_1" class="center-block" alt="Your Picture" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_two_cols_1.jpg" class="center-block" alt="Your Picture" />
|
||||
<h4 class="text-center">Column title</h4>
|
||||
<p class="text-center o_mail_no_margin">
|
||||
Write one paragraph describing your product,
|
||||
@@ -370,7 +370,7 @@
|
||||
|
||||
<td style="vertical-align:top;width:270px;" class="o_mail_col_mv">
|
||||
<div class="o_mail_col_container">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_two_cols_2" class="center-block" alt="Your Picture" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_two_cols_2.jpg" class="center-block" alt="Your Picture" />
|
||||
<h4 class="text-center">Column title</h4>
|
||||
<p class="text-center o_mail_no_margin">
|
||||
Write one paragraph describing your product,
|
||||
@@ -397,7 +397,7 @@
|
||||
<tr>
|
||||
<td style="vertical-align:top;width:180px;" class="o_mail_col_mv">
|
||||
<div class="o_mail_col_container">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_three_cols_1" class="center-block" alt="Your Picture" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_three_cols_1.jpg" class="center-block" alt="Your Picture" />
|
||||
<h4 class="text-center">Column Title</h4>
|
||||
<p class="text-center o_mail_no_margin">
|
||||
A short description
|
||||
@@ -410,7 +410,7 @@
|
||||
|
||||
<td style="vertical-align:top;width:180px;" class="o_mail_col_mv">
|
||||
<div class="o_mail_col_container">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_three_cols_2" class="center-block" alt="Your Picture" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_three_cols_2.jpg" class="center-block" alt="Your Picture" />
|
||||
<h4 class="text-center">Column Title</h4>
|
||||
<p class="text-center o_mail_no_margin">
|
||||
A short description
|
||||
@@ -423,7 +423,7 @@
|
||||
|
||||
<td style="vertical-align:top;width:180px;" class="o_mail_col_mv">
|
||||
<div class="o_mail_col_container">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_three_cols_3" class="center-block" alt="Your Picture" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_three_cols_3.jpg" class="center-block" alt="Your Picture" />
|
||||
<h4 class="text-center">Column Title</h4>
|
||||
<p class="text-center o_mail_no_margin">
|
||||
A short description
|
||||
@@ -447,7 +447,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="width:270px;text-align:center;vertical-align:middle" class="o_mail_col_mv o_mail_img_container o_mail_h_padding o_mail_v_padding">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_image_text" class="center-block" alt="Your Picture" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_image_text.jpg" class="center-block" alt="Your Picture" />
|
||||
</td>
|
||||
<td style="width:270px;vertical-align:middle;text-align:center;" class="o_mail_col_mv o_mail_h_padding o_mail_v_padding">
|
||||
<h3>Omnichannel sales</h3>
|
||||
@@ -477,7 +477,7 @@
|
||||
</div>
|
||||
</td>
|
||||
<td style="width:270px;text-align:center;vertical-align:middle" class="o_mail_img_container o_mail_h_padding o_mail_v_padding">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_text_image" class="center-block" alt="Your Picture" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_text_image.jpg" class="center-block" alt="Your Picture" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -493,7 +493,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="100%" align="center" style="text-align:center" class="">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_image" class="center-block" alt="Your Picture" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_image.jpg" class="center-block" alt="Your Picture" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -639,7 +639,7 @@
|
||||
<p class="o_mail_no_margin">ALL DAY</p>
|
||||
</td>
|
||||
<td style="width:25%;min-height: 150px;" class="text-center bg-delta o_mail_col_mv">
|
||||
<img src="/web/image/mass_mailing.s_default_image_block_event" class="center-block" alt="Your Picture" />
|
||||
<img src="/mass_mailing/static/src/img/theme_basic/s_default_image_block_event.jpg" class="center-block" alt="Your Picture" />
|
||||
</td>
|
||||
<td class="o_mail_h_padding o_mail_v_padding o_mail_col_mv" style="min-height: 150px;">
|
||||
<div style="min-height: 111px">
|
||||
|
||||
@@ -15,13 +15,13 @@ var _lt = core._lt;
|
||||
// are only used if user entered them manually or if got from demo data
|
||||
var operator_mapping = {
|
||||
"=": "=",
|
||||
"!=": _lt("not"),
|
||||
"!=": _lt("is not ="),
|
||||
">": ">",
|
||||
"<": "<",
|
||||
">=": ">=",
|
||||
"<=": "<=",
|
||||
"ilike": _lt("contains"),
|
||||
"not ilike": _lt("not contains"),
|
||||
"not ilike": _lt("does not contain"),
|
||||
"in": _lt("in"),
|
||||
"not in": _lt("not in"),
|
||||
|
||||
|
||||
@@ -273,6 +273,8 @@
|
||||
|
||||
> .o_pie {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-right: 10px;
|
||||
border-radius: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
height: @pie-dimension - 2 * @pie-ring-width;
|
||||
border: 1px solid white;
|
||||
background-color: white;
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,6 +72,12 @@
|
||||
|
||||
@odoo-sheet-vpadding: 24px;
|
||||
|
||||
// Needed for having no spacing between sheet and mail body in mass_mailing:
|
||||
// Different required cancel paddings between web and web_enterprise
|
||||
@odoo-sheet-cancel-tpadding: 0px;
|
||||
@odoo-sheet-cancel-hpadding: @odoo-horizontal-padding;
|
||||
@odoo-sheet-cancel-bpadding: @odoo-horizontal-padding;
|
||||
|
||||
@odoo-avatar-size: 90px;
|
||||
|
||||
@odoo-statusbar-height: 33px;
|
||||
|
||||
Reference in New Issue
Block a user