[IMP] mass_mailing: still working / refactorign the form view of mailing

to ease the use (mmmh).

Mainly :
- added website as a dependance to have the rich editor (well ...)
- form view refactoring
- some fileds will be added / removed to ease the mailign definition

bzr revid: tde@openerp.com-20140404150350-x00wxgzp4c71zmzv
This commit is contained in:
Thibault Delavallée 2014-04-04 17:03:50 +02:00
parent 1f6302d9f4
commit 85283237ad
4 changed files with 67 additions and 72 deletions

View File

@ -37,6 +37,7 @@ professional emails and reuse templates in a few clicks.
'marketing',
'web_kanban_gauge',
'web_kanban_sparkline',
'website',
],
'data': [
'data/mail_data.xml',

View File

@ -448,6 +448,9 @@ class MassMailing(osv.Model):
res[mailing.id] = val
return res
def _get_edit_link(self, cr, uid, ids, name, args, context=None):
return dict((id, _('<a href="website_mail/email_designer?model=mail.mass_mailing&res_id=%s">Open with Visual Editor</a>') % id) for id in ids)
def _get_mailing_model(self, cr, uid, context=None):
return [
('res.partner', 'Customers'),
@ -471,10 +474,11 @@ class MassMailing(osv.Model):
'email.template', 'Email Template',
domain="[('use_in_mass_mailing', '=', True), ('model', '=', mailing_model)]",
),
'body_html': fields.related(
'template_id', 'body_html', type='html',
string='Body', readonly='True',
help='Technical field: used only to display a view of the template in the form view',
'body_html': fields.html('Body'),
'edit_link': fields.function(
_get_edit_link, type='text',
string='Visual Editor',
help='Link to the website',
),
'mass_mailing_campaign_id': fields.many2one(
'mail.mass_mailing.campaign', 'Mass Mailing Campaign',
@ -492,10 +496,10 @@ class MassMailing(osv.Model):
'email_from': fields.char('From'),
'reply_to': fields.char('Reply To'),
'mailing_model': fields.selection(_mailing_model, string='Type', required=True),
'contact_list_choice': fields.selection(
[('existing', 'Use existing lists'), ('new', 'Create a new list')],
string='Contact List Choice', required=True
),
# 'reply_to_mode': fields.selection(
# [('existing', 'Use existing lists'), ('new', 'Create a new list')],
# string='Contact List Choice', required=True
# ),
'contact_list_ids': fields.many2many(
'mail.mass_mailing.list', 'mail_mass_mailing_list_rel',
string='Mailing Lists',
@ -580,7 +584,6 @@ class MassMailing(osv.Model):
'date': fields.datetime.now,
'email_from': lambda self, cr, uid, ctx=None: self.pool['mail.message']._get_default_from(cr, uid, context=ctx),
'mailing_model': 'res.partner',
'contact_list_choice': 'existing',
'contact_ab_pc': 100,
}

View File

@ -1,8 +1,5 @@
.openerp .oe_kanban_view .oe_kanban_mass_mailing_campaign {
/* Customize to manage content */
width: 360px;
min-height: 254px !important;
/* End of customize */
}
.openerp .oe_kanban_view .oe_kanban_mass_mailing_campaign .oe_kanban_header_right {
@ -10,8 +7,5 @@
}
.openerp .oe_kanban_view .oe_kanban_mass_mailing {
/* Customize to manage content */
width: 280px;
min-height: 150px !important;
/* End of customize */
}

View File

@ -219,35 +219,13 @@
</div>
<group>
<group>
<field name="name"/>
<field name="date" readonly="True" groups="mass_mailing.group_mass_mailing_campaign"/>
<field name="mass_mailing_campaign_id" groups="mass_mailing.group_mass_mailing_campaign"/>
<field name="mailing_model" string="Perform Mailing on" class="oe_inline" widget="radio"
on_change='on_change_mailing_model(mailing_model, context)'/>
<label for="template_id"/>
<div style="max-height: 200px; overflow: hidden !important;">
<field name="template_id" string="Select Template" nolabel="1"
options="{'no_create': True, 'no_open': True}"
on_change="on_change_template_id(template_id, context)"/>
<button string='Create a New Template' class='oe_inline oe_link oe_edit_only'
type='action' name='%(action_mailing_email_template)d'
attrs="{'invisible': [('template_id', '!=', False)]}"
context="{'default_mass_mailing_id': active_id}"/>
<div style="max-width: 300px !important;">
<field name="body_html" class="form_html_preview" nolabel="1"
attrs="{'invisible': [('template_id', '=', False)]}"/>
<button string='Edit this Email' class='oe_inline oe_link oe_edit_only'
type='action' name='%(action_mailing_email_template)d'
attrs="{'invisible': [('template_id', '=', False)]}"
context="{'default_mass_mailing_id': active_id, 'default_template_id': template_id}"/>
</div>
</div>
<field name="email_from"/>
<field name="reply_to"/>
<field name="name"/>
</group>
<group>
<field name="total"/>
<div class="oe_right oe_button_box" name="buttons">
<field name="total" invisible="1"/>
<div class="oe_right oe_button_box" name="buttons"
attrs="{'invisible': [('total', '=', 0)]}">
<button name="%(action_mail_mass_mailing_report)d"
type="action" class="oe_stat_button oe_inline">
<field name="received_ratio" widget="percentpie"/>
@ -263,38 +241,59 @@
<field name="replied_ratio" widget="percentpie"/>
<span>Replied</span>
</button>
<button name="%(action_mail_mass_mailing_report)d"
string="cacaprout"
type="action" class="oe_stat_button oe_inline">
<field name="opened_dayly" widget="barchart"/>
<!-- <span>Opened Daily</span> -->
</button>
<!-- <p colspan="2">Here be some bar charts</p> -->
<!-- <field name="opened_dayly" attrs="{'invisible': [('total', '=', 0)]}"/>
<field name="replied_dayly" attrs="{'invisible': [('total', '=', 0)]}"/> -->
</div>
<!-- <p colspan="2">Here be some bar charts</p> -->
<!-- <field name="opened_dayly" attrs="{'invisible': [('total', '=', 0)]}"/>
<field name="replied_dayly" attrs="{'invisible': [('total', '=', 0)]}"/> -->
</group>
</group>
<group>
<label for="contact_list_ids" string="Recipients"/>
<field name="reply_to"/>
<label for="mailing_model" string="Recipients"/>
<div>
<group>
<label for="contact_list_choice" string="Mailing List"/>
<div>
<field name="contact_list_choice" widget="radio"/>
<field name="contact_list_ids" widget="many2many_tags" options="{'no_create': True}"
attrs="{'invisible': [('contact_list_choice', '=', 'new')]}"/>
<button string='Create a New List' class="oe_inline oe_link" type='object' name='action_new_list'
attrs="{'invisible': [('contact_list_choice', '=', 'existing')]}"/>
</div>
<label for="contact_nbr" string="Contacts"/>
<div>
<field name="contact_nbr" nolabel="1" class="oe_inline" readonly="True"/> contacts selected
<button name="action_see_recipients" type="object" string="See Recipients" class="oe_link" style='margin-left: 8px;'/>
</div>
<label for="contact_ab_pc" string="AB Testing"
groups="mass_mailing.group_mass_mailing_campaign"/>
<div groups="mass_mailing.group_mass_mailing_campaign">
<field name="ab_testing" invisible="1"/>
<field name="contact_ab_pc" class="oe_inline"/>%, <field name="contact_ab_nbr" class="oe_inline"/> contacts to mail<br />
<field name="mailing_model" widget="radio"
on_change='on_change_mailing_model(mailing_model, context)'/>
<label for="contact_list_ids" string="Mailing Lists"/>
<field name="contact_list_ids" widget="many2many_tags" options="{'no_create': True}"
class="oe_inline"
placeholder="Choose mailing lists"/><span style="margin-left: 8px; margin-right: 8px">or</span>
<button string='Create a New List' class="oe_link" type='object' name='action_new_list'/><br />
<label for="contact_nbr" string="Total"/><field name="contact_nbr" nolabel="1" class="oe_inline" readonly="True"/> recipients
<button name="action_see_recipients" type="object" string="See Recipients" class="oe_inline oe_link" style='margin-left: 8px;'/><br />
<div groups="mass_mailing.group_mass_mailing_campaign" style="display: inline;">
<field name="ab_testing" invisible="1"/>
<label for="contact_ab_pc" string="AB Testing"/>
<field name="contact_ab_pc" class="oe_inline"/>%, <field name="contact_ab_nbr" class="oe_inline"/> contacts to mail
<div attrs="{'invisible': [('ab_testing', '=', False)]}" style="display: inline;">
<span>(</span>
<field name="contact_ab_done" class="oe_inline"
attrs="{'invisible': [('ab_testing', '=', False)]}"/> already mailed
<span>)</span>
</div>
</group>
</div>
</div>
<field name="date" readonly="True" groups="mass_mailing.group_mass_mailing_campaign"/>
<field name="mass_mailing_campaign_id" groups="mass_mailing.group_mass_mailing_campaign"/>
<label for="template_id"/>
<div style="max-height: 200px; overflow: hidden !important;">
<field name="template_id" string="Select Template" nolabel="1"
class="oe_inline"
options="{'no_create': True, 'no_open': True}"
on_change="on_change_template_id(template_id, context)"/>
<field name="edit_link" widget='html' radonly='1'
style='margin: 0px; padding: 0px;'/>
<field name="body_html" readonly="1"/>
</div>
</group>
</sheet>
@ -327,16 +326,14 @@
<t t-if="record.mass_mailing_campaign_id.raw_value" groups="mass_mailing.group_mass_mailing_campaign"> - </t><field name="date"/>
</div>
<div>
<field name="total" widget="gauge" style="width:120px; height: 90px;"
options="{'max_field': 'total'}"/>
<div style="display: inline-block">
<field name="delivered" widget="gauge" style="width:120px; height: 90px;"
options="{'max_field': 'total'}"/>
</div>
<div>
<field name="opened" widget="gauge" style="width:120px; height: 90px;"
options="{'max_field': 'total'}"/>
<field name="replied" widget="gauge" style="width:120px; height: 90px;"
options="{'max_field': 'total'}"/>
<div style="display: inline-block; vertical-align: top;">
<strong>Opened</strong> <field name="opened_ratio"/> %<br />
<strong>Replied</strong> <field name="replied_ratio"/> %
</div>
</div>
</div>
<div class="oe_clear"></div>