From a53bd875857f60a80c262ed8a648d3c5295e2751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Wed, 9 Dec 2015 14:41:16 +0100 Subject: [PATCH] [FIX] mail: various UI improvements to chat interface - don't display user name in chat windows - scroll to the new messages separator if it exists (in client action) - increase sidebar width - add correct link href in threads - hide chat window in mobile mode - mail: ignore o_mail_redirect or o_channel_redirect, but redirect anyway --- addons/mail/static/src/js/chat_manager.js | 8 ++++--- addons/mail/static/src/js/client_action.js | 8 ++++++- addons/mail/static/src/js/thread.js | 22 +++++++++---------- addons/mail/static/src/less/chat_window.less | 4 ++++ .../mail/static/src/less/client_action.less | 2 +- addons/mail/static/src/xml/thread.xml | 8 +++---- 6 files changed, 31 insertions(+), 21 deletions(-) diff --git a/addons/mail/static/src/js/chat_manager.js b/addons/mail/static/src/js/chat_manager.js index 74b16f22486..b91113ea9c6 100644 --- a/addons/mail/static/src/js/chat_manager.js +++ b/addons/mail/static/src/js/chat_manager.js @@ -137,6 +137,7 @@ function make_message (data) { channel_ids: data.channel_ids, model: data.model, res_id: data.res_id, + url: session.url("/mail/view?message_id=" + data.id), }; _.each(_.keys(emoji_substitutions), function (key) { @@ -516,11 +517,12 @@ function on_chat_session_notification (chat_session) { } // partner specific change (open a detached window for example) if ((chat_session.state === "open") || (chat_session.state === "folded")) { - if (chat_session.is_minimized && chat_manager.get_channel(chat_session.id)) { - chat_manager.bus.trigger("open_chat", chat_session); + var channel = chat_session.is_minimized && chat_manager.get_channel(chat_session.id); + if (channel) { + chat_manager.bus.trigger("open_chat", channel); } } else if (chat_session.state === "closed") { - chat_manager.bus.trigger("close_chat", chat_session); + chat_manager.bus.trigger("close_chat", chat_manager.get_channel(chat_session.id)); } } diff --git a/addons/mail/static/src/js/client_action.js b/addons/mail/static/src/js/client_action.js index d4d2cb69d4f..14682f49a4e 100644 --- a/addons/mail/static/src/js/client_action.js +++ b/addons/mail/static/src/js/client_action.js @@ -375,7 +375,13 @@ var ChatAction = Widget.extend(ControlPanelMixin, { .removeClass('o_unread_message') .addClass('o_active'); - self.thread.scroll_to({offset: new_channel_scrolltop}); + var $new_messages_separator = self.$('.o_thread_new_messages_separator'); + if ($new_messages_separator.length) { + self.thread.$el.scrollTo($new_messages_separator); + } else { + self.thread.scroll_to({offset: new_channel_scrolltop}); + } + if (!config.device.touch) { self.composer.focus(); } diff --git a/addons/mail/static/src/js/thread.js b/addons/mail/static/src/js/thread.js index 5381c9f89c3..b35445e8d3f 100644 --- a/addons/mail/static/src/js/thread.js +++ b/addons/mail/static/src/js/thread.js @@ -16,8 +16,9 @@ var Thread = Widget.extend({ className: 'o_mail_thread', events: { - "click .o_mail_redirect": "on_click_redirect", - "click .o_channel_redirect": "on_channel_redirect", + "click a": "on_click_redirect", + "click img": "on_click_redirect", + "click strong": "on_click_redirect", "click .o_thread_show_more": "on_click_show_more", "click .o_thread_message_needaction": function (event) { event.stopPropagation(); @@ -85,16 +86,13 @@ var Thread = Widget.extend({ }, on_click_redirect: function (event) { - event.preventDefault(); - var res_id = $(event.target).data('oe-id'); - var res_model = $(event.target).data('oe-model'); - this._redirect({model:res_model, id: res_id}); - }, - - on_channel_redirect: function (event) { - event.preventDefault(); - var channel_id = $(event.target).data('oe-id'); - this._redirect({channel_id: channel_id}); + var id = $(event.target).data('oe-id'); + if (id) { + event.preventDefault(); + var model = $(event.target).data('oe-model'); + var options = model ? {model: model, id: id} : {channel_id: id}; + this._redirect(options); + } }, _redirect: _.debounce(function (options) { diff --git a/addons/mail/static/src/less/chat_window.less b/addons/mail/static/src/less/chat_window.less index ee6ea89b539..f37b66f85ff 100644 --- a/addons/mail/static/src/less/chat_window.less +++ b/addons/mail/static/src/less/chat_window.less @@ -11,6 +11,10 @@ border: 1px solid gray; border-radius: 3px; + @media (max-width: @screen-xs-max) { + display:none; + } + .o_chat_header { .o-flex-display(); .o-flex(0, 0, auto); diff --git a/addons/mail/static/src/less/client_action.less b/addons/mail/static/src/less/client_action.less index f6479b9a418..4fe782d047b 100644 --- a/addons/mail/static/src/less/client_action.less +++ b/addons/mail/static/src/less/client_action.less @@ -15,7 +15,7 @@ .o-flex-flow(row, nowrap); .o_mail_chat_sidebar { - .o-flex(0, 0, 220px); + .o-flex(0, 0, 250px); overflow: auto; padding: 8px 0; font-weight: 300; diff --git a/addons/mail/static/src/xml/thread.xml b/addons/mail/static/src/xml/thread.xml index 0e7777dda1a..0952fcf0e7f 100644 --- a/addons/mail/static/src/xml/thread.xml +++ b/addons/mail/static/src/xml/thread.xml @@ -52,7 +52,7 @@ @@ -79,7 +79,7 @@ @@ -91,10 +91,10 @@ - - on + on - (from #) + (from #)