diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 025e5d43b9a..4cf17218a4c 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -342,7 +342,7 @@ openerp.mail = function(session) { 'default_model': this.context.default_model, 'default_res_id': this.context.default_res_id, 'default_content_subtype': 'html', - 'default_parent_id': this.id, + 'default_ancestor_id': this.id, 'default_body': mail.ChatterUtils.get_text2html(this.$render_expandable ? (this.$render_expandable.find('textarea').val() || '') : ''), 'default_attachment_ids': attachments, 'default_partner_ids': partner_ids @@ -390,13 +390,12 @@ openerp.mail = function(session) { false, 'comment', 'mail.mt_comment', - this.context.default_parent_id, + this.context.default_ancestor_id, attachments, this.parent_thread.context ]).then(function(records){ self.parent_thread.switch_new_message(records); self.on_cancel(); - self.do_show_compact(); //session.web.unblockUI(); }); return true; @@ -483,12 +482,12 @@ openerp.mail = function(session) { this.context = _.extend({ default_model: 'mail.thread', default_res_id: 0, - default_parent_id: false }, options.context || {}); + default_ancestor_id: false }, options.context || {}); // data of this expandable message this.id = datasets.id || -1, this.model = datasets.model || false, - this.parent_id = datasets.parent_id || false, + this.ancestor_id = datasets.ancestor_id || false, this.nb_messages = datasets.nb_messages || 0, this.thread_level = datasets.thread_level || 0, this.type = 'expandable', @@ -567,10 +566,10 @@ openerp.mail = function(session) { * - record.attachment_ids[].url: url of each attachmentThe * thread view : * - root thread - * - - sub message (parent_id = root message) + * - - sub message (ancestor_id = root message) * - - - sub thread * - - - - sub sub message (parent id = sub thread) - * - - sub message (parent_id = root message) + * - - sub message (ancestor_id = root message) * - - - sub thread */ mail.ThreadMessage = session.web.Widget.extend({ @@ -598,7 +597,7 @@ openerp.mail = function(session) { // data of this message this.id = datasets.id || -1, this.model = datasets.model || false, - this.parent_id = datasets.parent_id || false, + this.ancestor_id = datasets.ancestor_id || false, this.res_id = datasets.res_id || false, this.type = datasets.type || false, this.is_author = datasets.is_author || false, @@ -621,7 +620,7 @@ openerp.mail = function(session) { this.context = _.extend({ default_model: 'mail.thread', default_res_id: 0, - default_parent_id: false }, options.context || {}); + default_ancestor_id: false }, options.context || {}); // record options this.options = options.options; @@ -728,7 +727,7 @@ openerp.mail = function(session) { 'context':{ 'default_model': this.model, 'default_res_id': this.res_id, - 'default_parent_id': this.id + 'default_ancestor_id': this.id }, 'options': this.options } @@ -898,10 +897,10 @@ openerp.mail = function(session) { * This widget handles the display of a thread of messages. The * thread view: * - root thread - * - - sub message (parent_id = root message) + * - - sub message (ancestor_id = root message) * - - - sub thread * - - - - sub sub message (parent id = sub thread) - * - - sub message (parent_id = root message) + * - - sub message (ancestor_id = root message) * - - - sub thread */ mail.Thread = session.web.Widget.extend({ @@ -930,7 +929,7 @@ openerp.mail = function(session) { this.context = _.extend({ default_model: 'mail.thread', default_res_id: 0, - default_parent_id: false }, options.context || {}); + default_ancestor_id: false }, options.context || {}); this.options = options.options; this.options._parents = (options.options._parents != undefined ? options.options._parents : []).concat( [this] ); @@ -941,7 +940,7 @@ openerp.mail = function(session) { // data of this thread this.id = datasets.id || false, this.model = datasets.model || false, - this.parent_id = datasets.parent_id || false, + this.ancestor_id = datasets.ancestor_id || false, this.is_private = datasets.is_private || false, this.author_id = datasets.author_id || false, this.thread_level = (datasets.thread_level+1) || 0, @@ -1048,8 +1047,8 @@ openerp.mail = function(session) { if(arguments[1]) res.push(this); if(isNaN(nb_thread_level) || nb_thread_level>0){ _(this.messages).each(function (val, key) { - if(val.thread){ - res = res.concat( val.thread.get_childs((isNaN(nb_thread_level) ? null : nb_thread_level-1), true) ) + if(val.thread) { + res = res.concat( val.thread.get_childs((isNaN(nb_thread_level) ? undefined : nb_thread_level-1), true) ); } }); } @@ -1149,7 +1148,7 @@ openerp.mail = function(session) { // CHM note : option for sending in flat mode by server var nb_indented_thread = this.options.display_indented_thread > this.thread_level ? this.options.display_indented_thread - this.thread_level : 0; - return this.ds_message.call('message_read', [ids, fetch_domain, message_loaded_ids, /*nb_indented_thread,*/ fetch_context, this.context.default_parent_id || undefined] + return this.ds_message.call('message_read', [ids, fetch_domain, message_loaded_ids, /*nb_indented_thread,*/ fetch_context, this.context.default_ancestor_id || undefined] ).then(this.proxy('switch_new_message')); }, @@ -1168,16 +1167,16 @@ openerp.mail = function(session) { 'context': { 'default_model': data.model || self.context.default_model, 'default_res_id': data.res_id || self.context.default_res_id, - 'default_parent_id': self.id }, + 'default_ancestor_id': self.id }, }); } else { - var message = new mail.ThreadMessage(self, _.extend(data, {'thread_level': self.thread_level}), { + var message = new mail.ThreadMessage(self, _.extend(data, {'thread_level': data.thread_level ? data.thread_level : self.thread_level}), { 'domain': data.domain, 'context': { 'default_model': data.model, 'default_res_id': data.res_id, - 'default_parent_id': data.id }, - 'options': self.options + 'default_ancestor_id': data.id }, + 'options': _.extend(self.options, data.options) }); } @@ -1205,34 +1204,25 @@ openerp.mail = function(session) { insert_message: function (message) { var self=this; - if(this.show_compose_message && - this.options.display_indented_thread >= self.thread_level){ + if(this.show_compose_message /*&& + this.options.display_indented_thread >= self.thread_level*/){ this.ComposeMessage.do_show_compact(); } this.$('.oe_wall_no_message').remove(); - // insert on hierarchy display => insert in self child - var thread_messages = self.messages; - var thread = self; - if( self.options.display_indented_thread < self.thread_level ) { - var thread = self.options._parents[self.options.display_indented_thread] || self.options._parents[0]; - var thread_messages = []; - _(thread.get_childs()).each(function (val, key) { thread_messages.push(val.parent_message); }); - } - // check older and newer message for insertion var parent_newer = false; var parent_older = false; if(message.id > 0){ - for(var i in thread_messages){ - if(thread_messages[i].id > message.id){ - if(!parent_newer || parent_newer.id > thread_messages[i].id) { - parent_newer = thread_messages[i]; + for(var i in self.messages){ + if(self.messages[i].id > message.id){ + if(!parent_newer || parent_newer.id > self.messages[i].id) { + parent_newer = self.messages[i]; } - } else if(thread_messages[i].id > 0 && thread_messages[i].id < message.id) { - if(!parent_older || parent_older.id < thread_messages[i].id) { - parent_older = thread_messages[i]; + } else if(self.messages[i].id > 0 && self.messages[i].id < message.id) { + if(!parent_older || parent_older.id < self.messages[i].id) { + parent_older = self.messages[i]; } } } @@ -1253,11 +1243,11 @@ openerp.mail = function(session) { } else if(message.id < 0) { - message.appendTo(thread.$el); + message.appendTo(self.$el); } else { - message.prependTo(thread.$el); + message.prependTo(self.$el); } } else { if (parent_older) { @@ -1271,11 +1261,11 @@ openerp.mail = function(session) { } else if(message.id < 0) { - message.prependTo(thread.$el); + message.prependTo(self.$el); } else { - message.appendTo(thread.$el); + message.appendTo(self.$el); } } @@ -1285,16 +1275,31 @@ openerp.mail = function(session) { /** *get the parent thread of the messages. - * Each message is send to his parent object for creating the object message. + * Each message is send to his parent object (or parent thread flat mode) for creating the object message. * @param : {Array} datas from calling RPC to "message_read" */ switch_new_message: function(records) { var self=this; _(records).each(function(record){ - self.browse_thread({ - 'id': record.parent_id, + var thread = self.browse_thread({ + 'id': record.ancestor_id, 'default_return_top_thread':true - }).create_message_object( record ); + }); + + /* + record.thread_level = thread.thread_level; + record.options = {'_parents' : thread.options._parents }; + + // check for flat mode + var nb_level = thread.options.display_indented_thread - thread.thread_level; + + if(nb_level <= 0){ + var thread = thread.options._parents[ thread.options._parents.length - 1 + nb_level ]; + } + */ + + + thread.create_message_object( record ); }); }, @@ -1324,7 +1329,7 @@ openerp.mail = function(session) { var msg_up = messages[it-1]; var msg_down = messages[it+1]; - var message_dom = [ '&', ["id","in",[message.id]], ['parent_id', '=', message.parent_id] ]; + var message_dom = [ ["id", "=", message.id] ]; if ( msg_up && msg_up.type == "expandable" && msg_down && msg_down.type == "expandable") { // concat two expandable message and add this message to this dom @@ -1368,7 +1373,7 @@ openerp.mail = function(session) { var expandable = new mail.ThreadExpandable(this, { 'id': message.id, 'model': message.model, - 'parent_id': message.parent_id, + 'ancestor_id': message.ancestor_id, 'nb_messages': 1, 'thread_level': message.thread_level, }, { @@ -1376,7 +1381,7 @@ openerp.mail = function(session) { 'context': { 'default_model': message.model || this.context.default_model, 'default_res_id': message.res_id || this.context.default_res_id, - 'default_parent_id': this.id }, + 'default_ancestor_id': this.id }, }); // add object on array and DOM