diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index cbc6ac718e3..ef741e31783 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -262,7 +262,6 @@ class mail_message(osv.Model): """ # sort for group items tree = sorted(tree, key=lambda k: k['id']) - tree_not = [] # expandable for not show message for msg in tree: @@ -367,7 +366,7 @@ class mail_message(osv.Model): ids = self.search(cr, uid, domain, context=context, limit=limit) for msg in self.browse(cr, uid, ids, context=context): # if not in tree and not in message_loded list - if msg.id not in message_ids and msg.id not in message_loaded_ids : + if msg.id not in message_ids and msg not in tree and msg.id not in message_loaded_ids : message_ids.append(msg.id) tree.append(msg) @@ -381,7 +380,7 @@ class mail_message(osv.Model): # get all parented message if the user have the access while parent and parent.id != parent_id: parent_id = msg.parent_id.id - if msg.parent_id not in tree and parent_id not in message_loaded_ids: + if parent not in tree and parent_id not in message_loaded_ids: tree.append(parent) # if not in tree and not in message_loded list if parent.id not in message_ids and parent.id not in message_loaded_ids : diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index bf24cd2219d..63c28dedee6 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -54,13 +54,13 @@ /* Specific display of threads in the wall */ /* ------------------------------------------------------------ */ -.openerp ul.oe_mail_wall_threads .oe_mail_msg_content textarea.oe_mail_compose_textarea { +.openerp ul.oe_mail_wall_threads .oe_msg_content textarea.oe_mail_compose_textarea { width: 434px; height: 30px; padding: 4px; } -.openerp li.oe_mail_wall_thread:first .oe_mail_msg_notification { +.openerp li.oe_mail_wall_thread:first .oe_msg_notification { border-top: 0; } @@ -69,7 +69,7 @@ height: 28px; } -.openerp div.oe_thread_placeholder div.oe_mail_msg_content { +.openerp div.oe_thread_placeholder div.oe_msg_content { width: 440px; } @@ -181,8 +181,8 @@ } /* default textarea (oe_mail_compose_textarea), and body textarea for compose form view */ -.openerp .oe_mail_msg_content textarea.oe_mail_compose_textarea:focus, -.openerp .oe_mail_msg_content div.oe_mail_compose_message_body textarea:focus { +.openerp .oe_msg_content textarea.oe_mail_compose_textarea:focus, +.openerp .oe_msg_content div.oe_mail_compose_message_body textarea:focus { outline: 0; border-color: rgba(82, 168, 236, 0.8); -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); @@ -191,7 +191,7 @@ } .openerp .oe_mail_vote_count, -.openerp .oe_mail_msg_vote{ +.openerp .oe_msg_vote{ vertical-align: bottom; } @@ -254,35 +254,35 @@ margin: 0 0 4px 0; } -.openerp .oe_mail_msg_notification, -.openerp .oe_mail_msg_expandable, -.openerp .oe_mail_msg_comment, -.openerp .oe_mail_msg_email { +.openerp .oe_msg_notification, +.openerp .oe_msg_expandable, +.openerp .oe_msg_comment, +.openerp .oe_msg_email { padding: 8px; background: white; position: relative; } -.openerp .oe_mail_msg_notification:after, -.openerp .oe_mail_msg_comment:after, -.openerp .oe_mail_msg_email:after { +.openerp .oe_msg_notification:after, +.openerp .oe_msg_comment:after, +.openerp .oe_msg_email:after { content: ""; display: block; clear: both; } -.openerp div.oe_mail_msg_content { +.openerp div.oe_msg_content { float: left; position: relative; width: 486px; } -.openerp div.oe_mail_msg_content > li { +.openerp div.oe_msg_content > li { float: left; margin-right: 3px; } -.openerp .oe_mail_msg_content:after { +.openerp .oe_msg_content:after { content: ""; display: block; clear: both; @@ -326,23 +326,23 @@ /* Messages layout /* ------------------------------------------------------------ */ -.openerp .oe_mail_msg .oe_mail_msg_title { +.openerp .oe_mail_msg .oe_msg_title { margin: 0; font-size: 1.3em; font-weight: bold; } -.openerp .oe_mail_msg .oe_mail_msg_title a:link, -.openerp .oe_mail_msg .oe_mail_msg_title a:visited { +.openerp .oe_mail_msg .oe_msg_title a:link, +.openerp .oe_mail_msg .oe_msg_title a:visited { color: #4C4C4C; text-decoration: none; } -.openerp .oe_mail_msg .oe_mail_msg_body { +.openerp .oe_mail_msg .oe_msg_body { margin-bottom: .5em; text-align: justify; } -.openerp .oe_mail_msg .oe_mail_msg_body pre { +.openerp .oe_mail_msg .oe_msg_body pre { font-family: "Lucida Grande", Helvetica, Verdana, Arial, sans-serif; margin: 0px; white-space: pre-wrap; @@ -380,31 +380,31 @@ } /* Message footer */ -.openerp .oe_mail_msg .oe_mail_msg_footer { +.openerp .oe_mail_msg .oe_msg_footer { color: #888; } -.openerp .oe_mail_msg .oe_mail_msg_footer li { +.openerp .oe_mail_msg .oe_msg_footer li { float: left; margin-right: 3px; } -.openerp .oe_mail_msg .oe_mail_msg_footer li:after { +.openerp .oe_mail_msg .oe_msg_footer li:after { content: " · "; } -.openerp .oe_mail_msg .oe_mail_msg_footer li:last-child:after { +.openerp .oe_mail_msg .oe_msg_footer li:last-child:after { content: ""; } /* Attachments list */ -.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments { +.openerp .oe_msg_content ul.oe_msg_attachments { width: 100%; margin: .5em 0 0 0; padding: .5em 0; list-style-position: inside; } -.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments.oe_hidden { +.openerp .oe_msg_content ul.oe_msg_attachments.oe_hidden { display: none; } -.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments li { +.openerp .oe_msg_content ul.oe_msg_attachments li { float: none; height: 20px; line-height: 20px; @@ -412,19 +412,19 @@ padding: 0; list-style-type: square; } -.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments .oe_upload_in_process { +.openerp .oe_msg_content ul.oe_msg_attachments .oe_upload_in_process { float: right; width: 200px; height: 16px; } -.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments .oe_upload_in_process div { +.openerp .oe_msg_content ul.oe_msg_attachments .oe_upload_in_process div { float: left; width: 38px; height: 16px; margin-right: 2px; background: #66FF66; } -.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments .oe_upload_in_process span { +.openerp .oe_msg_content ul.oe_msg_attachments .oe_upload_in_process span { color: #aaaaaa; position: absolute; } diff --git a/addons/mail/static/src/css/mail_compose_message.css b/addons/mail/static/src/css/mail_compose_message.css index e2f136eb755..c706c55bcde 100644 --- a/addons/mail/static/src/css/mail_compose_message.css +++ b/addons/mail/static/src/css/mail_compose_message.css @@ -2,11 +2,11 @@ /* Compose Message */ /* ------------------------------ */ -.openerp .oe_mail_msg_content .oe_mail_compose_message_footer { +.openerp .oe_msg_content .oe_mail_compose_message_footer { height: 24px; } -.openerp .oe_mail_msg_content .oe_mail_compose_message_footer button.oe_mail_compose_message_button_send { +.openerp .oe_msg_content .oe_mail_compose_message_footer button.oe_mail_compose_message_button_send { float: left; } @@ -98,7 +98,7 @@ font-size: 30px; } -.openerp .oe_mail .oe_mail_msg_attachments input { +.openerp .oe_mail .oe_msg_attachments input { visibility: hidden; } @@ -128,39 +128,39 @@ } /* form_view: delete white background */ -.openerp .oe_mail_msg_content div.oe_formview { +.openerp .oe_msg_content div.oe_formview { background-color: transparent; } -.openerp .oe_mail_msg_content div.oe_form_nosheet { +.openerp .oe_msg_content div.oe_form_nosheet { margin: 0px; } -.openerp .oe_mail_msg_content table.oe_form_group { +.openerp .oe_msg_content table.oe_form_group { margin: 0px; } -.openerp .oe_mail_msg_content table.oe_form_field, -.openerp .oe_mail_msg_content div.oe_form_field { +.openerp .oe_msg_content table.oe_form_field, +.openerp .oe_msg_content div.oe_form_field { padding: 0px; } -.openerp .oe_mail_msg_content td.oe_form_group_cell { +.openerp .oe_msg_content td.oe_form_group_cell { vertical-align: bottom; } /* subject: change width */ -.openerp .oe_mail_msg_content .oe_form .oe_form_field input[type='text'] { +.openerp .oe_msg_content .oe_form .oe_form_field input[type='text'] { width: 472px; } /* body_html: cleditor */ -.openerp .oe_mail_msg_content div.cleditorMain { +.openerp .oe_msg_content div.cleditorMain { border: 1px solid #cccccc; } /* destination_partner_ids */ -.openerp .oe_mail_msg_content div.text-core { +.openerp .oe_msg_content div.text-core { height: 22px !important; width: 472px; } \ No newline at end of file diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index be7ac0bb8bd..6211ca911ea 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -42,8 +42,6 @@ openerp.mail = function(session) { }; /* end hack */ - $('.openerp .oe_mail_wall_threads .oe_mail_thread button.oe_mail_wall_button_fetch').click(); - } return this._super(action, on_close); }, @@ -168,7 +166,7 @@ openerp.mail = function(session) { } else { this.list_attachment.replaceWith( render ); } - this.list_attachment = this.$("ul.oe_mail_msg_attachments"); + this.list_attachment = this.$("ul.oe_msg_attachments"); // event: delete an attachment this.$el.on('click', '.oe_mail_attachment_delete', self.on_attachment_delete); @@ -386,12 +384,13 @@ openerp.mail = function(session) { default_parent_id: false }, options.context || {}); this.datasets = { - 'id' : options.parameters.id || -1, - 'model' : options.parameters.model || false, - 'parent_id' : options.parameters.parent_id || false, - 'nb_messages' : options.parameters.nb_messages || 0, + 'id' : options.datasets.id || -1, + 'model' : options.datasets.model || false, + 'parent_id' : options.datasets.parent_id || false, + 'nb_messages' : options.datasets.nb_messages || 0, 'type' : 'expandable', - 'max_limit' : options.parameters.max_limit || false, + 'max_limit' : options.datasets.max_limit || false, + 'flag_used' : false, }; // record options and data @@ -412,17 +411,30 @@ openerp.mail = function(session) { this.$el.on('click', 'a.oe_mail_fetch_more', self.on_expandable); }, + animated_destroy: function(options) { + var self=this; + //graphic effects + if(options && options.fadeTime) { + self.$el.fadeOut(options.fadeTime, function(){ + self.destroy(); + }); + } else { + self.destroy(); + } + }, + /*The selected thread and all childs (messages/thread) became read * @param {object} mouse envent */ on_expandable: function (event) { if(event)event.stopPropagation(); - var self = this; + if(this.datasets.flag_used) { + return false + } + this.datasets.flag_used = true; + + this.animated_destroy({'fadeTime':300}); this.parent_thread.message_fetch(false, this.domain, this.context); - this.$el.fadeOut(300, function(){ - self.destroy(); - }); - this.$('*').unbind(); return false; }, }); @@ -473,11 +485,8 @@ openerp.mail = function(session) { init: function(parent, options) { this._super(parent); - // record parameters - var param = options.parameters; - for(var i in param){ - this[i] = param[i]; - } + // record datasets + var param = options.datasets; this.datasets = _.extend({ 'id' : -1, 'model' : false, @@ -533,7 +542,7 @@ openerp.mail = function(session) { this.parent_thread= parent.messages!= undefined ? parent : options.options.thread._parents[0]; this.thread = false; - if( param.id > 0 ) { + if( this.datasets.id > 0 ) { this.formating_data(); } @@ -573,20 +582,20 @@ openerp.mail = function(session) { var self = this; // event: click on 'Attachment(s)' in msg - this.$('a.oe_mail_msg_view_attachments:first').on('click', function (event) { - self.$('.oe_mail_msg_attachments:first').toggle(); + this.$('a.oe_msg_view_attachments:first').on('click', function (event) { + self.$('.oe_msg_attachments:first').toggle(); }); // event: click on icone 'Read' in header this.$el.on('click', 'a.oe_read', this.on_message_read_unread); // event: click on icone 'UnRead' in header this.$el.on('click', 'a.oe_unread', this.on_message_read_unread); // event: click on 'Delete' in msg side menu - this.$el.on('click', 'a.oe_mail_msg_delete', this.on_message_delete); + this.$el.on('click', 'a.oe_msg_delete', this.on_message_delete); // event: click on 'Reply' in msg this.$el.on('click', 'a.oe_reply', this.on_message_reply); // event: click on 'Vote' button - this.$el.on('click', 'button.oe_mail_msg_vote', this.on_vote); + this.$el.on('click', 'button.oe_msg_vote', this.on_vote); // event: click on 'Star' button this.$el.on('click', 'button.oe_mail_starbox', this.on_star); }, @@ -598,11 +607,11 @@ openerp.mail = function(session) { }, expender: function(){ - this.$('div.oe_mail_msg_body:first').expander({ + this.$('div.oe_msg_body:first').expander({ slicePoint: this.options.truncate_limit, expandText: 'read more', userCollapseText: '[^]', - detailClass: 'oe_mail_msg_tail', + detailClass: 'oe_msg_tail', moreClass: 'oe_mail_expand', lessClass: 'oe_mail_reduce', }); @@ -613,7 +622,7 @@ openerp.mail = function(session) { if(this.thread){ return false; } - var param = _.extend(self, {'parent_id': self.datasets.id}); + /*create thread*/ self.thread = new mail.Thread(self, { 'domain': self.domain, @@ -626,7 +635,7 @@ openerp.mail = function(session) { 'thread' : self.options.thread, 'message' : self.options.message }, - 'parameters': param + 'datasets': self.datasets } ); /*insert thread in parent message*/ @@ -836,7 +845,7 @@ openerp.mail = function(session) { // record options and data this.parent_message= parent.thread!= undefined ? parent : false ; - var param = options.parameters + var param = options.datasets // datasets and internal vars this.datasets = { 'id' : param.id || false, @@ -844,7 +853,7 @@ openerp.mail = function(session) { 'parent_id' : param.parent_id || false, 'is_private' : param.is_private || false, 'author_id' : param.author_id || false, - 'thread_level' : param.thread_level+1 || 0, + 'thread_level' : (param.thread_level+1) || 0, 'partner_ids' : [] }; @@ -855,6 +864,7 @@ openerp.mail = function(session) { } this.messages = []; + this.ComposeMessage = false; this.ds_thread = new session.web.DataSetSearch(this, this.context.default_model || 'mail.thread'); this.ds_message = new session.web.DataSetSearch(this, 'mail.message'); @@ -864,13 +874,11 @@ openerp.mail = function(session) { this._super.apply(this, arguments); this.list_ul = this.$('ul.oe_mail_thread_display:first'); - this.more_msg = this.$(">.oe_mail_msg_more_message:first"); + this.more_msg = this.$(">.oe_msg_more_message:first"); this.display_user_avatar(); var display_done = compose_done = false; - this.instantiate_ComposeMessage(); - this.bind_events(); if(this.options.thread._parents[0]==this){ @@ -904,17 +912,14 @@ openerp.mail = function(session) { $(session.web.qweb.render('mail.wall_no_message', {})).appendTo(this.$('ul.oe_mail_thread_display')); + this.instantiate_ComposeMessage(); + this.ComposeMessage.datasets.is_private=true; + if(this.options.thread.show_header_compose){ this.ComposeMessage.$el.show(); //this.ComposeMessage.set_free_attachments(); } - this.ComposeMessage.datasets.is_private=true; - var button_fetch = $('