[IMP] mail: change message_post_api (method py return id); class indented in DOM for expandable & compose

bzr revid: chm@openerp.com-20121025083631-ze0x0rmnj7catsmu
This commit is contained in:
Christophe Matthieu 2012-10-25 10:36:31 +02:00
parent 3e4d6ad440
commit a10c6c4dfd
3 changed files with 39 additions and 41 deletions

View File

@ -708,8 +708,7 @@ class mail_thread(osv.AbstractModel):
ir_attachment.write(cr, SUPERUSER_ID, attachment_ids, {'res_model': self._name, 'res_id': thread_id}, context=context) ir_attachment.write(cr, SUPERUSER_ID, attachment_ids, {'res_model': self._name, 'res_id': thread_id}, context=context)
mail_message.write(cr, SUPERUSER_ID, [new_message_id], {'attachment_ids': [(6, 0, [pid for pid in attachment_ids])]}, context=context) mail_message.write(cr, SUPERUSER_ID, [new_message_id], {'attachment_ids': [(6, 0, [pid for pid in attachment_ids])]}, context=context)
new_message = self.pool.get('mail.message').message_read(cr, uid, [new_message_id], context=context) return new_message_id
return new_message
#------------------------------------------------------ #------------------------------------------------------
# Followers API # Followers API

View File

@ -155,6 +155,7 @@ openerp.mail = function(session) {
this.is_private = datasets.is_private || false; this.is_private = datasets.is_private || false;
this.partner_ids = datasets.partner_ids || []; this.partner_ids = datasets.partner_ids || [];
this.avatar = mail.ChatterUtils.get_image(this.session, 'res.users', 'image_small', this.session.uid); this.avatar = mail.ChatterUtils.get_image(this.session, 'res.users', 'image_small', this.session.uid);
this.thread_level = datasets.thread_level;
this.parent_thread= parent.messages!= undefined ? parent : false; this.parent_thread= parent.messages!= undefined ? parent : false;
this.ds_attachment = new session.web.DataSetSearch(this, 'ir.attachment'); this.ds_attachment = new session.web.DataSetSearch(this, 'ir.attachment');
@ -372,10 +373,9 @@ openerp.mail = function(session) {
'mail.mt_comment', 'mail.mt_comment',
this.context.default_parent_id, this.context.default_parent_id,
attachments, attachments,
// (this.options.display_indented_thread - this.thread_level),
this.parent_thread.context this.parent_thread.context
]).then(function(records) { ]).then(function(message_id) {
self.parent_thread.switch_new_message(records); self.parent_thread.message_fetch([['id', '=', message_id]]);
self.on_cancel(); self.on_cancel();
//session.web.unblockUI(); //session.web.unblockUI();
}); });
@ -457,13 +457,14 @@ openerp.mail = function(session) {
mail.ThreadExpandable = session.web.Widget.extend({ mail.ThreadExpandable = session.web.Widget.extend({
template: 'mail.thread.expandable', template: 'mail.thread.expandable',
init: function(parent, datasets, options) { init: function(parent, datasets, context) {
this._super(parent); this._super(parent);
this.domain = options.domain || []; this.domain = datasets.domain || [];
this.options = datasets.options;
this.context = _.extend({ this.context = _.extend({
default_model: 'mail.thread', default_model: 'mail.thread',
default_res_id: 0, default_res_id: 0,
default_parent_id: false }, options.context || {}); default_parent_id: false }, context || {});
// data of this expandable message // data of this expandable message
this.id = datasets.id || -1, this.id = datasets.id || -1,
@ -474,7 +475,7 @@ openerp.mail = function(session) {
this.type = 'expandable', this.type = 'expandable',
this.max_limit = this.id < 0 || false, this.max_limit = this.id < 0 || false,
this.flag_used = false, this.flag_used = false,
this.parent_thread= parent.messages!= undefined ? parent : options.options._parents[0]; this.parent_thread= parent.messages!= undefined ? parent : this.options._parents[0];
}, },
@ -572,9 +573,19 @@ openerp.mail = function(session) {
*... @param {int} [show_reply_button] number thread level to display the reply button *... @param {int} [show_reply_button] number thread level to display the reply button
*... @param {int} [show_read_unread_button] number thread level to display the read/unread button *... @param {int} [show_read_unread_button] number thread level to display the read/unread button
*/ */
init: function(parent, datasets, options) { init: function(parent, datasets, context) {
this._super(parent); this._super(parent);
// record domain and context
this.domain = datasets.domain || [];
this.context = _.extend({
default_model: 'mail.thread',
default_res_id: 0,
default_parent_id: false }, context || {});
// record options
this.options = datasets.options;
// data of this message // data of this message
this.id = datasets.id || -1, this.id = datasets.id || -1,
this.model = datasets.model || false, this.model = datasets.model || false,
@ -596,21 +607,12 @@ openerp.mail = function(session) {
this.attachment_ids = datasets.attachment_ids || [], this.attachment_ids = datasets.attachment_ids || [],
this._date = datasets.date; this._date = datasets.date;
// record domain and context
this.domain = options.domain || [];
this.context = _.extend({
default_model: 'mail.thread',
default_res_id: 0,
default_parent_id: false }, options.context || {});
// record options
this.options = options.options;
this.show_reply_button = this.options.show_compose_message && this.options.show_reply_button > this.thread_level; this.show_reply_button = this.options.show_compose_message && this.options.show_reply_button > this.thread_level;
this.show_read_unread_button = this.options.show_read_unread_button > this.thread_level; this.show_read_unread_button = this.options.show_read_unread_button > this.thread_level;
// record options and data // record options and data
this.parent_thread= parent.messages!= undefined ? parent : options.options._parents[0]; this.parent_thread= parent.messages!= undefined ? parent : this.options._parents[0];
this.thread = false; this.thread = false;
if( this.id > 0 ) { if( this.id > 0 ) {
@ -1167,22 +1169,20 @@ openerp.mail = function(session) {
create_message_object: function (data) { create_message_object: function (data) {
var self = this; var self = this;
var data = _.extend(data, {'thread_level': data.thread_level ? data.thread_level : self.thread_level});
data.options = _.extend(self.options, data.options);
if(data.type=='expandable'){ if(data.type=='expandable'){
var message = new mail.ThreadExpandable(self, data, { var message = new mail.ThreadExpandable(self, data, {
'domain': data.domain, 'default_model': data.model || self.context.default_model,
'context': { 'default_res_id': data.res_id || self.context.default_res_id,
'default_model': data.model || self.context.default_model, 'default_parent_id': self.id,
'default_res_id': data.res_id || self.context.default_res_id,
'default_parent_id': self.id },
}); });
} else { } else {
var message = new mail.ThreadMessage(self, _.extend(data, {'thread_level': data.thread_level ? data.thread_level : self.thread_level}), { var message = new mail.ThreadMessage(self, data, {
'domain': data.domain, 'default_model': data.model,
'context': { 'default_res_id': data.res_id,
'default_model': data.model, 'default_parent_id': data.id,
'default_res_id': data.res_id,
'default_parent_id': data.id },
'options': _.extend(self.options, data.options)
}); });
} }
@ -1368,13 +1368,12 @@ openerp.mail = function(session) {
'ancestor_id': message.ancestor_id, 'ancestor_id': message.ancestor_id,
'nb_messages': 1, 'nb_messages': 1,
'thread_level': message.thread_level, 'thread_level': message.thread_level,
'ancestor_id': message.ancestor_id 'ancestor_id': message.ancestor_id,
}, {
'domain': message_dom, 'domain': message_dom,
'context': { }, {
'default_model': message.model || this.context.default_model, 'default_model': message.model || this.context.default_model,
'default_res_id': message.res_id || this.context.default_res_id, 'default_res_id': message.res_id || this.context.default_res_id,
'default_parent_id': this.id }, 'default_parent_id': this.id,
}); });
// add object on array and DOM // add object on array and DOM

View File

@ -15,7 +15,7 @@
for main thread composition form in document form view. for main thread composition form in document form view.
--> -->
<t t-name="mail.compose_message"> <t t-name="mail.compose_message">
<div class="oe_msg oe_msg_composer"> <div t-attf-class="oe_msg oe_msg_composer #{widget.thread_level and widget.options.display_indented_thread > -1 ? 'oe_msg_indented' : ''}">
<div class="oe_msg_left"> <div class="oe_msg_left">
<img class="oe_msg_icon" alt="User img" t-attf-src="#{widget.avatar}"/> <img class="oe_msg_icon" alt="User img" t-attf-src="#{widget.avatar}"/>
</div> </div>
@ -40,7 +40,7 @@
mail.compose_message when focus on textarea mail.compose_message when focus on textarea
--> -->
<t t-name="mail.compose_message.compact"> <t t-name="mail.compose_message.compact">
<div class="oe_msg oe_msg_composer_compact"> <div t-attf-class="oe_msg oe_msg_composer_compact #{widget.thread_level and widget.options.display_indented_thread > -1 ? 'oe_msg_indented' : ''}">
<textarea class="field_text oe_compact" placeholder="Write a reply..."/> <textarea class="field_text oe_compact" placeholder="Write a reply..."/>
</div> </div>
</t> </t>
@ -239,7 +239,7 @@
<!-- expandable message layout --> <!-- expandable message layout -->
<t t-name="mail.thread.expandable"> <t t-name="mail.thread.expandable">
<div t-attf-class="oe_msg oe_msg_#{widget.type} oe_msg_unread"> <div t-attf-class="oe_msg oe_msg_#{widget.type} #{widget.thread_level and widget.options.display_indented_thread > -1 ? 'oe_msg_indented' : ''} oe_msg_unread">
<div class="oe_msg_content oe_msg_more_message"> <div class="oe_msg_content oe_msg_more_message">
<a t-if="widget.nb_messages === 1" class="oe_msg_fetch_more">load one more message</a> <a t-if="widget.nb_messages === 1" class="oe_msg_fetch_more">load one more message</a>
<a t-if="widget.nb_messages !== 1" class="oe_msg_fetch_more">load <t t-raw="widget.nb_messages" /> more messages</a> <a t-if="widget.nb_messages !== 1" class="oe_msg_fetch_more">load <t t-raw="widget.nb_messages" /> more messages</a>