[IMP] mail: add email_from like partner before opening wizard composer

bzr revid: chm@openerp.com-20121231142250-ykdxaqoqfvush1ah
This commit is contained in:
Christophe Matthieu 2012-12-31 15:22:50 +01:00
parent f1fcb4a994
commit 876e53dfcf
1 changed files with 43 additions and 41 deletions

View File

@ -370,6 +370,7 @@ openerp.mail = function (session) {
this.show_compact_message = false;
this.show_delete_attachment = true;
this.emails_from = [];
this.partners_from = [];
},
start: function () {
@ -494,43 +495,41 @@ openerp.mail = function (session) {
this.$(".oe_msg_attachment_list").on('click', '.oe_delete', this.on_attachment_delete);
this.$(".oe_emails_from").on('change', 'input', this.on_checked_email_from);
this.$(".oe_partners_from").on('change', 'input', this.on_checked_partner_from);
},
on_compose_fullmail: function (default_composition_mode) {
var self = this;
if(!this.do_check_attachment_upload()) {
return false;
}
if (default_composition_mode == 'reply') {
// create list of new partners
var extra_email = _.map(_.filter(this.emails_from, function (f) {return f[1]}), function (f) {return f[0]});
this.check_recipient_partners(extra_email).done(function () {
var context = {
'default_model': default_composition_mode == 'reply' ? undefined : self.context.default_model,
'default_res_id': default_composition_mode == 'reply' ? undefined : self.context.default_res_id,
'default_composition_mode': default_composition_mode,
'default_parent_id': this.id,
'default_body': mail.ChatterUtils.get_text2html(this.$el ? (this.$el.find('textarea:not(.oe_compact)').val() || '') : ''),
'default_attachment_ids': this.attachment_ids,
'default_parent_id': self.id,
'default_body': mail.ChatterUtils.get_text2html(self.$el ? (self.$el.find('textarea:not(.oe_compact)').val() || '') : ''),
'default_attachment_ids': self.attachment_ids,
'default_partner_ids': _.map(_.filter(self.partners_from, function (f) {return f[1]}), function (f) {return f[0]}),
};
} else {
var context = {
'default_model': this.context.default_model,
'default_res_id': this.context.default_res_id,
'default_composition_mode': default_composition_mode,
'default_parent_id': this.id,
'default_body': mail.ChatterUtils.get_text2html(this.$el ? (this.$el.find('textarea:not(.oe_compact)').val() || '') : ''),
'default_attachment_ids': this.attachment_ids,
var action = {
type: 'ir.actions.act_window',
res_model: 'mail.compose.message',
view_mode: 'form',
view_type: 'form',
views: [[false, 'form']],
target: 'new',
context: context,
};
}
var action = {
type: 'ir.actions.act_window',
res_model: 'mail.compose.message',
view_mode: 'form',
view_type: 'form',
views: [[false, 'form']],
target: 'new',
context: context,
};
this.do_action(action);
this.on_cancel();
self.do_action(action);
self.on_cancel();
});
},
reinit: function() {
@ -564,14 +563,13 @@ openerp.mail = function (session) {
check_recipient_partners: function (emails) {
var self = this;
self.partners_from = [];
var deferreds = [];
for (var i = 0; i < emails.length; i++) {
deferreds.push($.Deferred());
}
var ds_partner = new session.web.DataSetSearch(this, 'res.partner');
_.each(emails, function (email) {
ds_partner.call('search', [[['email', 'ilike', email]]]).then(function (partner_ids) {
var deferred = deferreds[_.indexOf(emails, email)];
var deferred = $.Deferred();
deferreds.push(deferred);
ds_partner.call('search', [[['email', 'like', email]]]).then(function (partner_ids) {
if (!partner_ids.length) {
var pop = new session.web.form.FormOpenPopup(this);
pop.show_element(
@ -586,17 +584,22 @@ openerp.mail = function (session) {
title: _t("Please complete partner's informations"),
}
);
pop.on('write_completed, closed', self, function () {
pop.on('closed', self, function () {
deferred.resolve();
});
pop.on('saved', self, function (id) {
self.partners_from.push([id, true]);
deferred.resolve();
});
}
else {
self.partners_from.push([partner_ids[0], true]);
deferred.resolve();
}
return deferred;
});
});
return $.when.apply( $, deferreds ).done();
return $.when.apply( $, deferreds );
},
on_message_post: function (event) {
@ -639,7 +642,7 @@ openerp.mail = function (session) {
/* convert the compact mode into the compose message
*/
on_compose_expandable: function (event) {
this.get_emails_from();
this.get_from();
if ((!this.stay_open || (event && event.type == 'click')) && (!this.show_composer || !this.$('textarea:not(.oe_compact)').val().match(/\S+/) && !this.attachment_ids.length)) {
this.show_composer = !this.show_composer || this.stay_open;
this.reinit();
@ -664,7 +667,7 @@ openerp.mail = function (session) {
}
},
get_emails_from: function () {
get_from: function () {
var self = this;
var messages = [];
@ -678,13 +681,12 @@ openerp.mail = function (session) {
_.each(this.options.root_thread.messages, function (msg) {messages.push(msg); messages.concat(msg.get_childs());});
}
var emails_from = _.map(_.filter(messages,
function (thread) {return thread.author_id && !thread.author_id[0];}),
function (thread) {return thread.author_id[1];});
_.each(messages, function (thread) {
if (thread.author_id && !thread.author_id[0] &&
!_.find(self.emails_from, function (from) {return from[0] == thread.author_id[1];})) {
self.emails_from.push([thread.author_id[1], true]);
return _.each(emails_from, function (email_from) {
if (!_.find(self.emails_from, function (from) {return from[0] == email_from;})) {
self.emails_from.push([email_from, true]);
}
});
},
@ -697,7 +699,7 @@ openerp.mail = function (session) {
email_from[1] = $input.is(":checked");
}
});
}
},
});
/**