diff options
| author | Alexandre Kühn <aku@odoo.com> | 2018-12-05 14:35:21 +0000 |
|---|---|---|
| committer | Alexandre Kühn <aku@odoo.com> | 2018-12-06 16:18:09 +0000 |
| commit | 50dfa865ea32c88d55e7eb0fce6a6ae978c9c3b4 (patch) | |
| tree | dd0e28f5c15e79d123c43168eb9cfe070dad8e2b /addons/mail/static/src | |
| parent | f372ac541f6a90a741253acdfd35cf5f2cc97696 (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.js | 38 | ||||
| -rw-r--r-- | addons/mail/static/src/js/discuss.js | 11 | ||||
| -rw-r--r-- | addons/mail/static/src/scss/composer.scss | 5 | ||||
| -rw-r--r-- | addons/mail/static/src/xml/composer.xml | 1 | ||||
| -rw-r--r-- | addons/mail/static/src/xml/thread.xml | 2 |
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()]" |
