From f908137d768771ddf58cca0346727d12185f21a8 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sun, 13 Apr 2014 18:20:28 +0200 Subject: [PATCH] [IMP] Template Editor bzr revid: fp@tinyerp.com-20140413162028-9tqqzis7qbggcrp4 --- addons/mass_mailing/__openerp__.py | 4 +- addons/mass_mailing/models/mass_mailing.py | 4 +- .../static/src/js/mass_mailing.js | 73 +++++++++++++++-- .../static/src/xml/mass_mailing.xml | 13 +++ addons/mass_mailing/views/mass_mailing.xml | 13 ++- .../controllers/email_designer.py | 26 +++--- .../static/src/css/website_mail.css | 17 +++- .../static/src/js/website_email_designer.js | 17 +++- .../views/website_email_designer.xml | 82 ++++++++++--------- 9 files changed, 179 insertions(+), 70 deletions(-) create mode 100644 addons/mass_mailing/static/src/xml/mass_mailing.xml diff --git a/addons/mass_mailing/__openerp__.py b/addons/mass_mailing/__openerp__.py index 2ab0b42e3a7..ca9ea76a7bd 100644 --- a/addons/mass_mailing/__openerp__.py +++ b/addons/mass_mailing/__openerp__.py @@ -54,7 +54,9 @@ professional emails and reuse templates in a few clicks. 'js': [ 'static/src/js/mass_mailing.js', ], - 'qweb': [], + 'qweb' : [ + 'static/src/xml/*.xml', + ], 'css': [ 'static/src/css/mass_mailing.css', 'static/src/css/email_template.css' diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py index b24568f972c..1cfa28cd208 100644 --- a/addons/mass_mailing/models/mass_mailing.py +++ b/addons/mass_mailing/models/mass_mailing.py @@ -319,7 +319,9 @@ class MassMailing(osv.Model): } def action_edit_html(self, cr, uid, ids, context=None): - url = '/website_mail/email_designer?model=mail.mass_mailing&res_id=%d' % ids[0] + assert len(ids)==1, "One and only one ID allowed for this action" + mail = self.browse(cr, uid, ids[0], context=context) + url = '/website_mail/email_designer?model=mail.mass_mailing&res_id=%d&field_body=body_html&field_from=email_form&field_subject=name&template_model=%s' % (ids[0], mail.mailing_model) return { 'name': _('Open with Visual Editor'), 'type': 'ir.actions.act_url', diff --git a/addons/mass_mailing/static/src/js/mass_mailing.js b/addons/mass_mailing/static/src/js/mass_mailing.js index c0dc621984f..7a52b785714 100644 --- a/addons/mass_mailing/static/src/js/mass_mailing.js +++ b/addons/mass_mailing/static/src/js/mass_mailing.js @@ -1,13 +1,70 @@ -openerp.mass_mailing = function(openerp) { +openerp.mass_mailing = function (instance) { + var _t = instance.web._t; + debugger; - openerp.web_kanban.KanbanRecord.include({ - on_card_clicked: function (event) { - if (this.view.dataset.model === 'mail.mass_mailing.campaign') { - this.$('.oe_mailings').click(); - } else { - this._super.apply(this, arguments); - } + openerp.mass_mailing = function(openerp) { + openerp.web_kanban.KanbanRecord.include({ + on_card_clicked: function (event) { + if (this.view.dataset.model === 'mail.mass_mailing.campaign') { + this.$('.oe_mailings').click(); + } else { + this._super.apply(this, arguments); + } + }, + }); + }; + + instance.web.form.CharDomainButton = instance.web.form.AbstractField.extend({ + template: 'CharDomainButton', + init: function(field_manager, node) { + this._super.apply(this, arguments); }, + start: function() { + var self=this; + this._super.apply(this, arguments); + $('button', this.$el).on('click', self.on_click); + this.set_button(); + }, + set_button: function() { + if (this.get('value')) { + // TODO: rpc to copute X + $('.oe_domain_count', this.$el).text('X records selected'); + $('button span', this.$el).text(' Change selection'); + } else { + $('.oe_domain_count', this.$el).text('0 record selected'); + $('button span', this.$el).text(' Select records'); + }; + }, + on_click: function(ev) { + var self = this; + var model = this.options.model || this.field_manager.get_field_value(this.options.model_field); + this.pop = new instance.web.form.SelectCreatePopup(this); + this.pop.select_element( + model, {title: 'Select records...'}, + [], this.build_context()); + this.pop.on("elements_selected", self, function() { + var self2 = this; + var search_data = this.pop.searchview.build_search_data() + instance.web.pyeval.eval_domains_and_contexts({ + domains: search_data.domains, + contexts: search_data.contexts, + group_by_seq: search_data.groupbys || [] + }).then(function (results) { + var domain = self2.pop.dataset.domain.concat(results.domain || []); + self.set_value(JSON.stringify(domain)) + }); + }); + event.preventDefault(); + }, + set_value: function(value_) { + var self = this; + this.set('value', value_ || false); + this.set_button(); + }, }); + instance.web.form.widgets = instance.web.form.widgets.extend( + {'char_domain': 'instance.web.form.CharDomainButton'} + ); + }; diff --git a/addons/mass_mailing/static/src/xml/mass_mailing.xml b/addons/mass_mailing/static/src/xml/mass_mailing.xml new file mode 100644 index 00000000000..2b20e450113 --- /dev/null +++ b/addons/mass_mailing/static/src/xml/mass_mailing.xml @@ -0,0 +1,13 @@ + + diff --git a/addons/mass_mailing/views/mass_mailing.xml b/addons/mass_mailing/views/mass_mailing.xml index 6e1f73a0965..7af3231b45e 100644 --- a/addons/mass_mailing/views/mass_mailing.xml +++ b/addons/mass_mailing/views/mass_mailing.xml @@ -218,15 +218,14 @@