summaryrefslogtreecommitdiff
path: root/addons/mail/static/src
diff options
context:
space:
mode:
authorAlexandre Kühn <aku@odoo.com>2018-12-05 14:35:21 +0000
committerAlexandre Kühn <aku@odoo.com>2018-12-06 16:18:09 +0000
commit50dfa865ea32c88d55e7eb0fce6a6ae978c9c3b4 (patch)
treedd0e28f5c15e79d123c43168eb9cfe070dad8e2b /addons/mail/static/src
parentf372ac541f6a90a741253acdfd35cf5f2cc97696 (diff)
[IMP] mail: discard replying to a message in discuss
This commit adds a button to discard replying to a message from the Discuss inbox. Task-ID 1881001
Diffstat (limited to 'addons/mail/static/src')
-rw-r--r--addons/mail/static/src/js/composers/extended_composer.js38
-rw-r--r--addons/mail/static/src/js/discuss.js11
-rw-r--r--addons/mail/static/src/scss/composer.scss5
-rw-r--r--addons/mail/static/src/xml/composer.xml1
-rw-r--r--addons/mail/static/src/xml/thread.xml2
5 files changed, 56 insertions, 1 deletions
diff --git a/addons/mail/static/src/js/composers/extended_composer.js b/addons/mail/static/src/js/composers/extended_composer.js
index f6e8560da8f..917b71fa880 100644
--- a/addons/mail/static/src/js/composers/extended_composer.js
+++ b/addons/mail/static/src/js/composers/extended_composer.js
@@ -3,7 +3,14 @@ odoo.define('mail.composer.Extended', function (require) {
var BasicComposer = require('mail.composer.Basic');
+var core = require('web.core');
+
+var QWeb = core.qweb;
+
var ExtendedComposer = BasicComposer.extend({
+ events: _.extend({}, BasicComposer.prototype.events, {
+ 'click .o_composer_button_discard': '_onClickDiscard',
+ }),
/**
* @override
*/
@@ -67,6 +74,26 @@ var ExtendedComposer = BasicComposer.extend({
setSubject: function (subject) {
this.$('.o_composer_subject input').val(subject);
},
+ /**
+ * Show the button 'discard' next to the send button. This is useful while
+ * replying to a message, when in the end we do not want to reply.
+ */
+ showDiscardButton: function () {
+ var $discard = this.$('.o_composer_button_discard');
+ $discard.removeClass('d-none');
+ $discard.addClass('d-md-inline-block');
+ },
+ /**
+ * Hide the button 'discard' next to the send button. This is useful when
+ * we were replying to a message from a certain thread, then we discard it
+ * with some other actions (i.e. switch thread). The discard button only
+ * makes sense during the selection of a message.
+ */
+ hideDiscardButton: function () {
+ var $discard = this.$('.o_composer_button_discard');
+ $discard.removeClass('d-md-inline-block');
+ $discard.addClass('d-none');
+ },
//--------------------------------------------------------------------------
// Private
@@ -93,6 +120,17 @@ var ExtendedComposer = BasicComposer.extend({
_shouldSend: function () {
return false;
},
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ */
+ _onClickDiscard: function () {
+ this.trigger_up('discard_extended_composer');
+ },
});
return ExtendedComposer;
diff --git a/addons/mail/static/src/js/discuss.js b/addons/mail/static/src/js/discuss.js
index 5a5bc9e106e..dc2a1933be7 100644
--- a/addons/mail/static/src/js/discuss.js
+++ b/addons/mail/static/src/js/discuss.js
@@ -243,6 +243,7 @@ var ModeratorRejectMessageDialog = Dialog.extend({
var Discuss = AbstractAction.extend(ControlPanelMixin, {
template: 'mail.discuss',
custom_events: {
+ discard_extended_composer: '_onDiscardExtendedComposer',
message_moderation: '_onMessageModeration',
search: '_onSearch',
update_moderation_buttons: '_onUpdateModerationButtons',
@@ -927,6 +928,7 @@ var Discuss = AbstractAction.extend(ControlPanelMixin, {
this._selectedMessage = message;
var subject = "Re: " + message.getDocumentName();
this._extendedComposer.setSubject(subject);
+ this._extendedComposer.showDiscardButton();
if (this._thread.getType() !== 'mailbox') {
this._basicComposer.do_hide();
@@ -1053,6 +1055,7 @@ var Discuss = AbstractAction.extend(ControlPanelMixin, {
_unselectMessage: function () {
this._basicComposer.do_toggle(this._thread.getType() !== 'mailbox' && !this._thread.isMassMailing());
this._extendedComposer.do_toggle(this._thread.isMassMailing());
+ this._extendedComposer.hideDiscardButton();
if (!config.device.isMobile) {
var composer = this._thread.getType() !== 'mailbox' && this._thread.isMassMailing() ?
@@ -1315,6 +1318,14 @@ var Discuss = AbstractAction.extend(ControlPanelMixin, {
composer.mentionSetPrefetchedPartners(partners);
},
/**
+ * @private
+ * @param {OdooEvent} ev
+ */
+ _onDiscardExtendedComposer: function (ev) {
+ ev.stopPropagation();
+ this._unselectMessage();
+ },
+ /**
* When clicking on an item in the sidebar
*
* @private
diff --git a/addons/mail/static/src/scss/composer.scss b/addons/mail/static/src/scss/composer.scss
index f12e195abe9..bd9307bdd2f 100644
--- a/addons/mail/static/src/scss/composer.scss
+++ b/addons/mail/static/src/scss/composer.scss
@@ -147,6 +147,11 @@
}
.o_composer_send {
margin-top: $o-mail-chatter-gap;
+
+ > .o_composer_button_discard:not(:hover) {
+ background: theme-color('light');
+ border-color: transparent;
+ }
}
}
diff --git a/addons/mail/static/src/xml/composer.xml b/addons/mail/static/src/xml/composer.xml
index 6147197cd17..ec95a6d5b61 100644
--- a/addons/mail/static/src/xml/composer.xml
+++ b/addons/mail/static/src/xml/composer.xml
@@ -28,6 +28,7 @@
</div>
<div class="o_composer_send">
<button tabindex="3" class="btn btn-primary o_composer_button_send d-none d-md-inline-block" type="button"><t t-esc="widget.options.sendText"/></button>
+ <button tabindex="3" class="btn btn-secondary o_composer_button_discard d-none" type="button">Discard</button>
</div>
<span class="d-none">
<t t-call="HiddenInputFile">
diff --git a/addons/mail/static/src/xml/thread.xml b/addons/mail/static/src/xml/thread.xml
index a1e2d52e2ad..748b9d4edc6 100644
--- a/addons/mail/static/src/xml/thread.xml
+++ b/addons/mail/static/src/xml/thread.xml
@@ -259,7 +259,7 @@
@param {integer} [options.selectedMessageID]
-->
<t t-name="mail.widget.Thread.Message">
- <div t-att-class="'o_thread_message' + (message.getID() === options.selectedMessageID ? 'o_thread_selected_message ' : ' ') + (message.isDiscussion() or message.isNotification() ? ' o_mail_discussion' : ' o_mail_not_discussion')" t-att-data-message-id="message.getID()">
+ <div t-att-class="'o_thread_message ' + (message.getID() === options.selectedMessageID ? 'o_thread_selected_message ' : ' ') + (message.isDiscussion() or message.isNotification() ? ' o_mail_discussion ' : ' o_mail_not_discussion ')" t-att-data-message-id="message.getID()">
<div t-if="options.displayAvatars" class="o_thread_message_sidebar">
<t t-if="message.hasAuthor()">
<img t-if="displayAuthorMessages[message.getID()]"