From fd0b674f5c40ec9082ceafdaaf2fcb1663600ea0 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 31 Oct 2012 10:09:31 +0100 Subject: [PATCH] [IMP] mail: last_id (js/py) bzr revid: chm@openerp.com-20121031090931-gloqsggi3j276jpj --- addons/mail/mail_message.py | 12 ++++++++++++ addons/mail/static/src/js/mail.js | 13 +++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index bd0ade31b68..70edf0ee53b 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -240,6 +240,7 @@ class mail_message(osv.Model): return { 'id': message['id'], + 'last_id': message['id'], 'type': message['type'], 'attachment_ids': attachment_ids, 'body': message['body'], @@ -425,6 +426,17 @@ class mail_message(osv.Model): # get the child expandable messages for the tree message_list = sorted(message_list, key=lambda k: k['id']) + + + for message in message_list: + if message['parent_id']: + for msg in message_list: + if message['parent_id'] == msg['id']: + if message['last_id'] < message['parent_id']: + message['last_id'] = message['parent_id'] + break + + self._message_read_add_expandables(cr, uid, message_list, read_messages, thread_level=thread_level, message_loaded_ids=message_unload_ids, domain=domain, parent_id=parent_id, context=context, limit=limit) diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index ec8b5726986..f3b787e1e15 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -596,7 +596,7 @@ openerp.mail = function (session) { start: function () { this._super.apply(this, arguments); this.expender(); - this.$el.hide().fadeIn(750, function () {$(this).css('display', '');}); + //this.$el.hide().fadeIn(750, function () {$(this).css('display', '');}); this.resize_img(); this.bind_events(); if(this.thread_level < this.options.display_indented_thread) { @@ -895,6 +895,7 @@ openerp.mail = function (session) { // data of this thread this.id = datasets.id || false, + this.last_id = datasets.last_id || false, this.model = datasets.model || false, this.parent_id = datasets.parent_id || false, this.is_private = datasets.is_private || false, @@ -941,7 +942,7 @@ openerp.mail = function (session) { */ on_scroll: function () { var expandables = - _.each( _.filter(this.messages, function (val) {return val.id == -1 && !val.loading;}), function (val) { + _.each( _.filter(this.messages, function (val) {return val.id == -1;}), function (val) { var pos = val.$el.position(); if (pos.top) { /* bottom of the screen */ @@ -1180,12 +1181,12 @@ openerp.mail = function (session) { if (self.messages[i].no_sorted) { continue; } - if (self.messages[i].id > message.id) { - if (!message_newer || message_newer.id > self.messages[i].id) { + if (self.messages[i].last_id > (message.last_id || message.id)) { + if (!message_newer || message_newer.last_id > self.messages[i].last_id) { message_newer = self.messages[i]; } - } else if (self.messages[i].id > 0 && self.messages[i].id < message.id) { - if (!message_older || message_older.id < self.messages[i].id) { + } else if (self.messages[i].last_id > 0 && self.messages[i].last_id < (message.last_id || message.id)) { + if (!message_older || message_older.last_id < self.messages[i].last_id) { message_older = self.messages[i]; } }