-
+
@@ -25,30 +25,44 @@
context="{'template_id':active_id}"/>
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+ Dynamic placeholder generator
+
+
+
+
+
+ Body
+
+
-
+
@@ -56,9 +70,6 @@
-
-
-
diff --git a/addons/email_template/wizard/email_template_preview.py b/addons/email_template/wizard/email_template_preview.py
index 1cfcf048691..c6518122d02 100644
--- a/addons/email_template/wizard/email_template_preview.py
+++ b/addons/email_template/wizard/email_template_preview.py
@@ -69,15 +69,19 @@ class email_template_preview(osv.osv_memory):
}
def on_change_res_id(self, cr, uid, ids, res_id, context=None):
- if not res_id: return {}
- vals = {}
+ if context is None:
+ context = {'value': {}}
+ if not res_id or not context.get('template_id'):
+ return {'value': {}}
+
email_template = self.pool.get('email.template')
- template_id = context and context.get('template_id')
+ template_id = context.get('template_id')
template = email_template.browse(cr, uid, template_id, context=context)
- vals['name'] = template.name
+
+ # generate and get template values
mail_values = email_template.generate_email(cr, uid, template_id, res_id, context=context)
- for k in ('email_from','email_to','email_cc','reply_to','subject','body_html'):
- vals[k] = mail_values[k]
+ vals = dict((field, mail_values.get(field, False)) for field in ('email_from', 'email_to', 'email_cc', 'reply_to', 'subject', 'body_html', 'partner_to'))
+ vals['name'] = template.name
return {'value': vals}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/email_template/wizard/email_template_preview_view.xml b/addons/email_template/wizard/email_template_preview_view.xml
index 2d7abcb4eef..0a74f7d813e 100644
--- a/addons/email_template/wizard/email_template_preview_view.xml
+++ b/addons/email_template/wizard/email_template_preview_view.xml
@@ -7,22 +7,22 @@
email_template.preview
diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py
index 2215d0705f1..f3b03d16a2f 100644
--- a/addons/email_template/wizard/mail_compose_message.py
+++ b/addons/email_template/wizard/mail_compose_message.py
@@ -39,26 +39,8 @@ def _reopen(self, res_id, model):
class mail_compose_message(osv.TransientModel):
_inherit = 'mail.compose.message'
- def _get_templates(self, cr, uid, context=None):
- if context is None:
- context = {}
- model = False
- email_template_obj = self.pool.get('email.template')
- message_id = context.get('default_parent_id', context.get('message_id', context.get('active_id')))
-
- if context.get('default_composition_mode') == 'reply' and message_id:
- message_data = self.pool.get('mail.message').browse(cr, uid, message_id, context=context)
- if message_data:
- model = message_data.model
- else:
- model = context.get('default_model', context.get('active_model'))
-
- record_ids = email_template_obj.search(cr, uid, [('model', '=', model)], context=context)
- return email_template_obj.name_get(cr, uid, record_ids, context) + [(False, '')]
-
_columns = {
- # incredible hack of the day: size=-1 means we want an int db column instead of an str one
- 'template_id': fields.selection(_get_templates, 'Template', size=-1),
+ 'template_id': fields.many2one('email.template', 'Use template', select=True),
'partner_to': fields.char('To (Partner IDs)',
help="Comma-separated list of recipient partners ids (placeholders may be used here)"),
'email_to': fields.char('To (Emails)',
@@ -114,10 +96,13 @@ class mail_compose_message(osv.TransientModel):
'subject': record.subject or False,
'body_html': record.body or False,
'model_id': model_id or False,
- 'attachment_ids': [(6, 0, [att.id for att in record.attachment_ids])]
+ 'attachment_ids': [(6, 0, [att.id for att in record.attachment_ids])],
}
template_id = email_template.create(cr, uid, values, context=context)
- record.write(record.onchange_template_id(template_id, record.composition_mode, record.model, record.res_id)['value'])
+ # generate the saved template
+ template_values = record.onchange_template_id(template_id, record.composition_mode, record.model, record.res_id)['value']
+ template_values['template_id'] = template_id
+ record.write(template_values)
return _reopen(self, record.id, record.model)
#------------------------------------------------------
diff --git a/addons/email_template/wizard/mail_compose_message_view.xml b/addons/email_template/wizard/mail_compose_message_view.xml
index 1b2be68a4a2..46ed49e6627 100644
--- a/addons/email_template/wizard/mail_compose_message_view.xml
+++ b/addons/email_template/wizard/mail_compose_message_view.xml
@@ -24,10 +24,11 @@
-
+
Use template
-
+
+