summaryrefslogtreecommitdiff
path: root/addons/mail/static/src
diff options
context:
space:
mode:
authorDemaret Rivarola Johan <jde@odoo.com>2018-07-19 12:31:46 +0000
committerDavid Beguin <dbe@odoo.com>2019-01-21 13:00:10 +0000
commite2f20ffa938f98340f99a65b7c3e955cf2317951 (patch)
treec100d16cc665121f9359e1b61ad3e7e0d0721507 /addons/mail/static/src
parenta3daff6bc121a42bf293ca91b8f522c26bac7c8a (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.js1
-rw-r--r--addons/mail/static/src/js/composers/mention_manager.js16
-rw-r--r--addons/mail/static/src/js/models/threads/thread.js3
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+'[^ ]+(?= |&nbsp;)', 'g'));
+ var escapedVal = _.escape(this._composer.$input.val());
+ var inputMentions = escapedVal.match(new RegExp(delimiter+'[^ ]+(?= |&nbsp;)', '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,