diff --git a/addons/im_livechat/data/im_livechat_channel_data.xml b/addons/im_livechat/data/im_livechat_channel_data.xml index e0cfea7ddba..7d48a8f5f1d 100644 --- a/addons/im_livechat/data/im_livechat_channel_data.xml +++ b/addons/im_livechat/data/im_livechat_channel_data.xml @@ -3,29 +3,29 @@ - :rating_0 - <img src='/rating/static/src/img/rating_0.png'/> + :rating_0 + <img src='/rating/static/src/img/rating_0.png' alt=':rating_0'/> Rating Empty Smiley image - :rating_1 - <img src='/rating/static/src/img/rating_1.png'/> + :rating_1 + <img src='/rating/static/src/img/rating_1.png' alt=':rating_1'/> Rating Smiley Bad image - :rating_5 - <img src='/rating/static/src/img/rating_5.png'/> + :rating_5 + <img src='/rating/static/src/img/rating_5.png' alt=':rating_5'/> Rating Smiley Okay image - :rating_10 - <img src='/rating/static/src/img/rating_10.png'/> + :rating_10 + <img src='/rating/static/src/img/rating_10.png' alt=':rating_10'/> Rating Smiley Good image diff --git a/addons/mail/controllers/main.py b/addons/mail/controllers/main.py index ef1f09c8edc..f2568685da0 100644 --- a/addons/mail/controllers/main.py +++ b/addons/mail/controllers/main.py @@ -267,7 +267,7 @@ class MailController(http.Controller): 'channel_slots': request.env['mail.channel'].channel_fetch_slot(), 'commands': request.env['mail.channel'].get_mention_commands(), 'mention_partner_suggestions': request.env['res.partner'].get_static_mention_suggestions(), - 'shortcodes': request.env['mail.shortcode'].sudo().search_read([], ['shortcode_type', 'source', 'substitution', 'description']), + 'shortcodes': request.env['mail.shortcode'].sudo().search_read([], ['shortcode_type', 'source', 'unicode_source', 'substitution', 'description']), 'menu_id': request.env['ir.model.data'].xmlid_to_res_id('mail.mail_channel_menu_root_chat'), } return values diff --git a/addons/mail/data/mail_shortcode_data.xml b/addons/mail/data/mail_shortcode_data.xml index 2fa9d940466..64f1aa7129f 100644 --- a/addons/mail/data/mail_shortcode_data.xml +++ b/addons/mail/data/mail_shortcode_data.xml @@ -3,179 +3,228 @@ - + :) - <img src='/mail/static/src/img/smiley/smile.png'/> - Emoji Smile + 😊 + <img src='/mail/static/src/img/smiley/normal_smile.png' alt='😊'/> + Smile image - - - :( - <img src='/mail/static/src/img/smiley/sad.png'/> - Emoji Sad - image - - - + :D - <img src='/mail/static/src/img/smiley/laugh.png'/> - Emoji Laugh + 😄 + <img src='/mail/static/src/img/smiley/smile.png' alt='😄'/> + Smile with open mouth + image + + + xD + 😆 + <img src='/mail/static/src/img/smiley/laugh.png' alt='😆'/> + Laugh + image + + + :-) + 😂 + <img src='/mail/static/src/img/smiley/tears_of_joy.png' alt='😂'/> + Tears of joy image - ;) - <img src='/mail/static/src/img/smiley/wink.png'/> - Emoji Wink + 😉 + <img src='/mail/static/src/img/smiley/wink.png' alt='😉'/> + Wink + image + + + B) + 😎 + <img src='/mail/static/src/img/smiley/sunglass.png' alt='😎'/> + Face with sunglass image - - O_0 - <img src='/mail/static/src/img/smiley/stuck_out_tongue.png'/> - Emoji Stuck Out Tongue Winking Eye + ;p + 😜 + <img src='/mail/static/src/img/smiley/stuck_out_tongue.png' alt='😜'/> + Stuck Out Tongue Winking Eye image - - - :@ - <img src='/mail/static/src/img/smiley/scream.png'/> - Emoji Scream - image - - - - :| - <img src='/mail/static/src/img/smiley/neutral.png'/> - Emoji Speechless/Neutral face - image - - :p - <img src='/mail/static/src/img/smiley/yum.png'/> - Emoji Cheeky + 😋 + <img src='/mail/static/src/img/smiley/yum.png' alt='😋'/> + Cheeky + image + + + o_o + 😳 + <img src='/mail/static/src/img/smiley/flushed.png' alt='😳'/> + Flushed face + image + + + :| + 😐 + <img src='/mail/static/src/img/smiley/neutral.png' alt='😐'/> + Speechless/Neutral face image - :/ - <img src='/mail/static/src/img/smiley/confused.png'/> - Emoji Confused + 😕 + <img src='/mail/static/src/img/smiley/confused.png' alt='😕'/> + Confused + image + + + :( + 😞 + <img src='/mail/static/src/img/smiley/sad.png' alt='😞'/> + Sad + image + + + :@ + 😱 + <img src='/mail/static/src/img/smiley/scream.png' alt='😱'/> + Scream image - :O - <img src='/mail/static/src/img/smiley/open_mouth.png'/> - Emoji Open Mouth + 😮 + <img src='/mail/static/src/img/smiley/open_mouth.png' alt='😮'/> + Open Mouth image - - - <3 - <img src='/mail/static/src/img/smiley/heart.png'/> - Emoji Heart + + 3:( + 😈 + <img src='/mail/static/src/img/smiley/angry.png' alt='😈'/> + Angry image - - - - :+1 - <img src='/mail/static/src/img/smiley/thumbsup.png'/> - Emoji Thumbs Up + + 3:) + 😈 + <img src='/mail/static/src/img/smiley/evil.png' alt='😈'/> + Face with evil image - - - :-1 - <img src='/mail/static/src/img/smiley/thumbsdown.png'/> - Emoji Thumbs Down + + :no_see + 🙈 + <img src='/mail/static/src/img/smiley/monkey_eye.png' alt='🙈'/> + No see + image + + + :no_hear + 🙉 + <img src='/mail/static/src/img/smiley/monkey_hear.png' alt='🙉'/> + No hear + image + + + :no_speak + 🙊 + <img src='/mail/static/src/img/smiley/monkey_speak.png' alt='🙊'/> + No speak + image + + + :bug + 🐞 + <img src='/mail/static/src/img/smiley/bug.png' alt='🐞'/> + Bug image - :kitten - <img src='/mail/static/src/img/smiley/cat.png'/> - Emoji Kitten + 😸 + <img src='/mail/static/src/img/smiley/cat.png' alt='😸'/> + Kitten image - - - :pinky - <img src='/mail/static/src/img/smiley/pinky.png'/> - Emoji Pinky + + <3 + ❤ + <img src='/mail/static/src/img/smiley/heart.png' alt='❤'/> + Heart image - - - :musti - <img src='/mail/static/src/img/smiley/musti.png'/> - Emoji Musti + + :+1 + 👍 + <img src='/mail/static/src/img/smiley/thumbsup.png' alt='👍'/> + Thumbs Up image - - - :turban - <img src='/mail/static/src/img/smiley/man_with_turban.png'/> - Emoji Man With Turban + + :-1 + 👎 + <img src='/mail/static/src/img/smiley/thumbsdown.png' alt='👎'/> + Thumbs Down image - - - :troll - <img src='/mail/static/src/img/smiley/trollface.png'/> - Emoji Troll Face - image - - - - :boar - <img src='/mail/static/src/img/smiley/boar.png'/> - Emoji Boar - image - - :poop - <img src='/mail/static/src/img/smiley/poop.png'/> - Emoji Poop + 💩 + <img src='/mail/static/src/img/smiley/poop.png' alt='💩'/> + Poop image - - - :cookie - <img src='/mail/static/src/img/smiley/cookie.png'/> - Emoji Cookie - image - - - - :postal_horn - <img src='/mail/static/src/img/smiley/postal_horn.png'/> - Emoji Postal Horn - image - - :ghost - <img src='/mail/static/src/img/smiley/ghost.png'/> - Emoji Ghost + 👻 + <img src='/mail/static/src/img/smiley/ghost.png' alt='👻'/> + Ghost + image + + + :cookie + 🍪 + <img src='/mail/static/src/img/smiley/cookie.png' alt='🍪'/> + Cookie image - :beer - <img src='/mail/static/src/img/smiley/beer.png'/> - Emoji Beer + 🍺 + <img src='/mail/static/src/img/smiley/beer.png' alt='🍺'/> + Beer image - - - :man - <img src='/mail/static/src/img/smiley/man.png'/> - Emoji Man + + :coffee + ☕ + <img src='/mail/static/src/img/smiley/coffee.png' alt='☕'/> + Coffee + image + + + :cake + 🎂 + <img src='/mail/static/src/img/smiley/cake.png' alt='🎂'/> + Cake + image + + + :party + 🎉 + <img src='/mail/static/src/img/smiley/party.png' alt='🎉'/> + Party + image + + + :trophy + 🏆 + <img src='/mail/static/src/img/smiley/trophy.png' alt='🏆'/> + Trophy image diff --git a/addons/mail/models/mail_shortcode.py b/addons/mail/models/mail_shortcode.py index 780a5a746c8..119e9d88234 100644 --- a/addons/mail/models/mail_shortcode.py +++ b/addons/mail/models/mail_shortcode.py @@ -15,6 +15,7 @@ class MailShortcode(models.Model): _description = 'Canned Response / Shortcode' source = fields.Char('Shortcut', required=True, index=True, help="The shortcut which must be replaced in the Chat Messages") + unicode_source = fields.Char(string='Unicode Character', help="The source is replaced by this unicode character in the Chat Messages") substitution = fields.Text('Substitution', required=True, index=True, help="The escaped html code replacing the shortcut") description = fields.Char('Description') shortcode_type = fields.Selection([('image', 'Smiley'), ('text', 'Canned Response')], required=True, default='text', diff --git a/addons/mail/static/src/img/smiley/angry.png b/addons/mail/static/src/img/smiley/angry.png new file mode 100644 index 00000000000..c65ddff552a Binary files /dev/null and b/addons/mail/static/src/img/smiley/angry.png differ diff --git a/addons/mail/static/src/img/smiley/boar.png b/addons/mail/static/src/img/smiley/boar.png deleted file mode 100644 index 3ef50325016..00000000000 Binary files a/addons/mail/static/src/img/smiley/boar.png and /dev/null differ diff --git a/addons/mail/static/src/img/smiley/bug.png b/addons/mail/static/src/img/smiley/bug.png new file mode 100644 index 00000000000..222577ca7ea Binary files /dev/null and b/addons/mail/static/src/img/smiley/bug.png differ diff --git a/addons/mail/static/src/img/smiley/cake.png b/addons/mail/static/src/img/smiley/cake.png new file mode 100644 index 00000000000..36e8edcbec4 Binary files /dev/null and b/addons/mail/static/src/img/smiley/cake.png differ diff --git a/addons/mail/static/src/img/smiley/cat.png b/addons/mail/static/src/img/smiley/cat.png index dbf1b0276ab..09b9ef79a7d 100644 Binary files a/addons/mail/static/src/img/smiley/cat.png and b/addons/mail/static/src/img/smiley/cat.png differ diff --git a/addons/mail/static/src/img/smiley/coffee.png b/addons/mail/static/src/img/smiley/coffee.png new file mode 100644 index 00000000000..57e1adcb04a Binary files /dev/null and b/addons/mail/static/src/img/smiley/coffee.png differ diff --git a/addons/mail/static/src/img/smiley/evil.png b/addons/mail/static/src/img/smiley/evil.png new file mode 100644 index 00000000000..d904049309c Binary files /dev/null and b/addons/mail/static/src/img/smiley/evil.png differ diff --git a/addons/mail/static/src/img/smiley/flushed.png b/addons/mail/static/src/img/smiley/flushed.png new file mode 100644 index 00000000000..6e3a0a7d038 Binary files /dev/null and b/addons/mail/static/src/img/smiley/flushed.png differ diff --git a/addons/mail/static/src/img/smiley/man.png b/addons/mail/static/src/img/smiley/man.png deleted file mode 100644 index c4a4217f4d4..00000000000 Binary files a/addons/mail/static/src/img/smiley/man.png and /dev/null differ diff --git a/addons/mail/static/src/img/smiley/man_with_turban.png b/addons/mail/static/src/img/smiley/man_with_turban.png deleted file mode 100644 index 8a0bda1ca77..00000000000 Binary files a/addons/mail/static/src/img/smiley/man_with_turban.png and /dev/null differ diff --git a/addons/mail/static/src/img/smiley/monkey_eye.png b/addons/mail/static/src/img/smiley/monkey_eye.png new file mode 100644 index 00000000000..0890a622279 Binary files /dev/null and b/addons/mail/static/src/img/smiley/monkey_eye.png differ diff --git a/addons/mail/static/src/img/smiley/monkey_hear.png b/addons/mail/static/src/img/smiley/monkey_hear.png new file mode 100644 index 00000000000..f97a1f9a090 Binary files /dev/null and b/addons/mail/static/src/img/smiley/monkey_hear.png differ diff --git a/addons/mail/static/src/img/smiley/monkey_speak.png b/addons/mail/static/src/img/smiley/monkey_speak.png new file mode 100644 index 00000000000..87944c4de54 Binary files /dev/null and b/addons/mail/static/src/img/smiley/monkey_speak.png differ diff --git a/addons/mail/static/src/img/smiley/musti.png b/addons/mail/static/src/img/smiley/musti.png deleted file mode 100644 index f6843ddf95c..00000000000 Binary files a/addons/mail/static/src/img/smiley/musti.png and /dev/null differ diff --git a/addons/mail/static/src/img/smiley/normal_smile.png b/addons/mail/static/src/img/smiley/normal_smile.png new file mode 100644 index 00000000000..1e9021cb6fe Binary files /dev/null and b/addons/mail/static/src/img/smiley/normal_smile.png differ diff --git a/addons/mail/static/src/img/smiley/party.png b/addons/mail/static/src/img/smiley/party.png new file mode 100644 index 00000000000..7411b5266a0 Binary files /dev/null and b/addons/mail/static/src/img/smiley/party.png differ diff --git a/addons/mail/static/src/img/smiley/pinky.png b/addons/mail/static/src/img/smiley/pinky.png deleted file mode 100644 index 4466946601c..00000000000 Binary files a/addons/mail/static/src/img/smiley/pinky.png and /dev/null differ diff --git a/addons/mail/static/src/img/smiley/postal_horn.png b/addons/mail/static/src/img/smiley/postal_horn.png deleted file mode 100644 index 5b7ed85d4fc..00000000000 Binary files a/addons/mail/static/src/img/smiley/postal_horn.png and /dev/null differ diff --git a/addons/mail/static/src/img/smiley/sunglass.png b/addons/mail/static/src/img/smiley/sunglass.png new file mode 100644 index 00000000000..1c468a1c91e Binary files /dev/null and b/addons/mail/static/src/img/smiley/sunglass.png differ diff --git a/addons/mail/static/src/img/smiley/tears_of_joy.png b/addons/mail/static/src/img/smiley/tears_of_joy.png new file mode 100644 index 00000000000..47df693d424 Binary files /dev/null and b/addons/mail/static/src/img/smiley/tears_of_joy.png differ diff --git a/addons/mail/static/src/img/smiley/trophy.png b/addons/mail/static/src/img/smiley/trophy.png new file mode 100644 index 00000000000..95d3b63f524 Binary files /dev/null and b/addons/mail/static/src/img/smiley/trophy.png differ diff --git a/addons/mail/static/src/js/chat_manager.js b/addons/mail/static/src/js/chat_manager.js index d0c41ad67b3..807d5352180 100644 --- a/addons/mail/static/src/js/chat_manager.js +++ b/addons/mail/static/src/js/chat_manager.js @@ -29,6 +29,7 @@ var chat_unread_counter = 0; var unread_conversation_counter = 0; var emojis = []; var emoji_substitutions = {}; +var emoji_unicodes = {}; var needaction_counter = 0; var starred_counter = 0; var mention_partner_suggestions = []; @@ -670,8 +671,12 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { if (s.shortcode_type === 'text') { canned_responses.push(_.pick(s, ['id', 'source', 'substitution'])); } else { - emojis.push(_.pick(s, ['id', 'source', 'substitution', 'description'])); + emojis.push(_.pick(s, ['id', 'source', 'unicode_source', 'substitution', 'description'])); emoji_substitutions[_.escape(s.source)] = s.substitution; + if (s.unicode_source) { + emoji_substitutions[_.escape(s.unicode_source)] = s.substitution; + emoji_unicodes[_.escape(s.source)] = s.unicode_source; + } } }); bus.start_polling(); @@ -760,6 +765,14 @@ var ChatManager = Class.extend(Mixins.EventDispatcherMixin, ServicesMixin, { body: body, attachment_ids: data.attachment_ids, }; + + // Replace emojis by their unicode character + _.each(_.keys(emoji_unicodes), function (key) { + var escaped_key = String(key).replace(/([.*+?=^!:${}()|[\]\/\\])/g, '\\$1'); + var regexp = new RegExp("(\\s|^)(" + escaped_key + ")(?=\\s|$)", "g"); + msg.body = msg.body.replace(regexp, "$1" + emoji_unicodes[key]); + }); + if ('subject' in data) { msg.subject = data.subject; } diff --git a/addons/rating/models/rating.py b/addons/rating/models/rating.py index f4bd17b48f3..5825c284ca1 100644 --- a/addons/rating/models/rating.py +++ b/addons/rating/models/rating.py @@ -240,8 +240,8 @@ class RatingMixin(models.AbstractModel): if hasattr(self, 'message_post'): feedback = tools.plaintext2html(feedback or '') self.message_post( - body="%s" - % (rate, feedback), + body=":rating_%s%s" + % (rate, rate, feedback), subtype=subtype or "mail.mt_comment", author_id=rating.partner_id and rating.partner_id.id or None # None will set the default author in mail_thread.py )