diff options
| author | Demaret Rivarola Johan <jde@odoo.com> | 2018-07-19 12:31:46 +0000 |
|---|---|---|
| committer | David Beguin <dbe@odoo.com> | 2019-01-21 13:00:10 +0000 |
| commit | e2f20ffa938f98340f99a65b7c3e955cf2317951 (patch) | |
| tree | c100d16cc665121f9359e1b61ad3e7e0d0721507 /addons/mail/static/src | |
| parent | a3daff6bc121a42bf293ca91b8f522c26bac7c8a (diff) | |
[IMP] mail: chatter channel notification
Ability to notify the channel but do not add the channel as a follower.
Faster than mentioning every member of the channel.
Also, clean the rendering of the mention suggestions name to avoid
having escaped char in the UI.
Task id : 1859802
Closes #25887
Diffstat (limited to 'addons/mail/static/src')
| -rw-r--r-- | addons/mail/static/src/js/composers/basic_composer.js | 1 | ||||
| -rw-r--r-- | addons/mail/static/src/js/composers/mention_manager.js | 16 | ||||
| -rw-r--r-- | addons/mail/static/src/js/models/threads/thread.js | 3 |
3 files changed, 13 insertions, 7 deletions
diff --git a/addons/mail/static/src/js/composers/basic_composer.js b/addons/mail/static/src/js/composers/basic_composer.js index 03ffd1c7a30..b88d7f6b0d9 100644 --- a/addons/mail/static/src/js/composers/basic_composer.js +++ b/addons/mail/static/src/js/composers/basic_composer.js @@ -416,6 +416,7 @@ var BasicComposer = Widget.extend({ attachment_ids: _.pluck(this.get('attachment_ids'), 'id'), partner_ids: _.uniq(_.pluck(this._mentionManager.getListenerSelection('@'), 'id')), canned_response_ids: _.uniq(_.pluck(this._mentionManager.getListenerSelections()[':'], 'id')), + channel_ids: _.uniq(_.pluck(this._mentionManager.getListenerSelection('#'), 'id')), command: commands.length > 0 ? commands[0].name : undefined, }); }, diff --git a/addons/mail/static/src/js/composers/mention_manager.js b/addons/mail/static/src/js/composers/mention_manager.js index 44506046ec8..6cbaab5002a 100644 --- a/addons/mail/static/src/js/composers/mention_manager.js +++ b/addons/mail/static/src/js/composers/mention_manager.js @@ -52,10 +52,8 @@ var MentionManager = Widget.extend({ getListenerSelection: function (delimiter) { var listener = _.findWhere(this._listeners, { delimiter: delimiter }); if (listener) { - var inputMentions = this._composer - .$input - .val() - .match(new RegExp(delimiter+'[^ ]+(?= | )', 'g')); + var escapedVal = _.escape(this._composer.$input.val()); + var inputMentions = escapedVal.match(new RegExp(delimiter+'[^ ]+(?= | )', 'g')); return this._validateSelection(listener.selection, inputMentions); } return []; @@ -315,7 +313,10 @@ var MentionManager = Widget.extend({ } if (suggestions.length) { this.$el.html(QWeb.render(this._activeListener.suggestionTemplate, { - suggestions: suggestions, + suggestions: _.map(suggestions, function (suggestion) { + // mention manager stores escaped suggestion names + return _.extend({}, suggestion, { name: _.unescape(suggestion.name) }); + }) })); this.$el .addClass('show') @@ -384,8 +385,9 @@ var MentionManager = Widget.extend({ if (!substitution) { // no substitution string given, so use the mention name instead // replace white spaces with non-breaking spaces to facilitate - // mentions detection in text - selectedSuggestion.name = selectedSuggestion.name.replace(/ /g, NON_BREAKING_SPACE); + // mentions detection in text. + // mention manager stores escaped suggestion names + selectedSuggestion.name = _.unescape(selectedSuggestion.name.replace(/ /g, NON_BREAKING_SPACE)); substitution = this._activeListener.delimiter + selectedSuggestion.name; } var getMentionIndex = function (matches, cursorPosition) { diff --git a/addons/mail/static/src/js/models/threads/thread.js b/addons/mail/static/src/js/models/threads/thread.js index 068e69b9c32..8c622779bb3 100644 --- a/addons/mail/static/src/js/models/threads/thread.js +++ b/addons/mail/static/src/js/models/threads/thread.js @@ -344,6 +344,9 @@ var Thread = AbstractThread.extend(ServicesMixin, { body = this._generateEmojis(body); var messageData = { partner_ids: data.partner_ids, + channel_ids: _.map(data.channel_ids, function (channelID) { + return [4, channelID, false]; + }), body: body, attachment_ids: data.attachment_ids, canned_response_ids: data.canned_response_ids, |
