diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 989b63afee5..153598e57e2 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -45,7 +45,7 @@ class mail_message(osv.Model): _inherit = ['ir.needaction_mixin'] _order = 'id desc' - _message_read_limit = 10 + _message_read_limit = 15 _message_read_fields = ['id', 'parent_id', 'model', 'res_id', 'body', 'subject', 'date', 'to_read', 'type', 'vote_user_ids', 'attachment_ids', 'author_id', 'partner_ids', 'record_name', 'favorite_user_ids'] _message_record_name_length = 18 @@ -346,7 +346,7 @@ class mail_message(osv.Model): if message_loaded_ids: domain += [('id', 'not in', message_loaded_ids)] limit = limit or self._message_read_limit - limit = 200 + read_messages = {} message_list = [] diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 69aeba6b9e0..bc59bd3c35b 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -457,6 +457,7 @@ openerp.mail = function(session) { 'model' : datasets.model || false, 'parent_id' : datasets.parent_id || false, 'nb_messages' : datasets.nb_messages || 0, + 'thread_level' : datasets.thread_level || 0, 'type' : 'expandable', 'max_limit' : datasets.max_limit || false, 'flag_used' : false, @@ -933,13 +934,13 @@ openerp.mail = function(session) { */ on_scroll: function(event){ if(event)event.stopPropagation(); - var message = this.messages[0]; + var message = this.messages[this.messages.length-1]; if(message && message.datasets.type=="expandable" && message.datasets.max_limit){ var pos = message.$el.position(); if(pos.top){ /* bottom of the screen */ var bottom = $(window).scrollTop()+$(window).height()+200; - if(bottom - pos.top > 0){ + if(bottom > pos.top){ message.on_expandable(); } } @@ -1131,23 +1132,23 @@ openerp.mail = function(session) { // check older and newer message for insert var parent_newer = false; var parent_older = false; - for(var i in thread_messages){ - if((thread_messages[i].datasets.id > message.datasets.id && message.datasets.id > 0) || - thread_messages[i].datasets.id < 0){ - if(!parent_newer || - thread_messages[i].datasets.id < 0 || - parent_newer.datasets.id >= thread_messages[i].datasets.id) { - parent_newer = thread_messages[i]; - } - } else if((thread_messages[i].datasets.id > 0 && thread_messages[i].datasets.id < message.datasets.id) || message.datasets.id < 0) { - if(!parent_older || - parent_older.datasets.id < thread_messages[i].datasets.id) { - parent_older = thread_messages[i]; + if(message.datasets.id > 0){ + for(var i in thread_messages){ + if(thread_messages[i].datasets.id > message.datasets.id){ + if(!parent_newer || + parent_newer.datasets.id > thread_messages[i].datasets.id) { + parent_newer = thread_messages[i]; + } + } else if(thread_messages[i].datasets.id > 0 && thread_messages[i].datasets.id < message.datasets.id) { + if(!parent_older || + parent_older.datasets.id < thread_messages[i].datasets.id) { + parent_older = thread_messages[i]; + } } } } - var sort = self.datasets.thread_level; + var sort = (!!message.datasets.thread_level || message.datasets.id<0); if(parent_older){ if(sort){ @@ -1162,7 +1163,7 @@ openerp.mail = function(session) { message.insertAfter(parent_newer.thread ? parent_newer.thread.$el : parent_newer.$el); } } else { - if(sort) { + if(sort && message.datasets.id>0) { message.prependTo(thread.$el); } else { message.appendTo(thread.$el);