summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorRohan Patel <rop@odoo.com>2017-06-30 12:41:09 +0530
committerAaron Bohy <aab@odoo.com>2017-09-11 12:20:49 +0200
commit8c1f6a7cc6aea43aa9ef99b7b7ae70f5abbe3d92 (patch)
tree1f96835762a6c57fadc6ba4f11409b5406856b5d /addons
parenta58fb415fc6465b1a150d7cc295c260b6ac0b9d5 (diff)
[IMP] mail,*: replace emojis by unicode in chat messages
*im_livechat,rating. Emojis are now encoded in unicode characters in messages. This allows to copy/paste messages including emojis, ensures that emojis are properly displayed in mail interfaces (at least those that support unicode, e.g. GMAIL, counter-example: outlook), and allows the user to directly use emojis of its smartphone in mobile. This commit also adds several new emojis. PR #11095
Diffstat (limited to 'addons')
-rw-r--r--addons/im_livechat/data/im_livechat_channel_data.xml16
-rw-r--r--addons/mail/controllers/main.py2
-rw-r--r--addons/mail/data/mail_shortcode_data.xml273
-rw-r--r--addons/mail/models/mail_shortcode.py1
-rw-r--r--addons/mail/static/src/img/smiley/angry.pngbin0 -> 5410 bytes
-rw-r--r--addons/mail/static/src/img/smiley/boar.pngbin4798 -> 0 bytes
-rw-r--r--addons/mail/static/src/img/smiley/bug.pngbin0 -> 5255 bytes
-rw-r--r--addons/mail/static/src/img/smiley/cake.pngbin0 -> 5404 bytes
-rw-r--r--addons/mail/static/src/img/smiley/cat.pngbin6083 -> 5987 bytes
-rw-r--r--addons/mail/static/src/img/smiley/coffee.pngbin0 -> 4306 bytes
-rw-r--r--addons/mail/static/src/img/smiley/evil.pngbin0 -> 7189 bytes
-rw-r--r--addons/mail/static/src/img/smiley/flushed.pngbin0 -> 8284 bytes
-rw-r--r--addons/mail/static/src/img/smiley/man.pngbin5985 -> 0 bytes
-rw-r--r--addons/mail/static/src/img/smiley/man_with_turban.pngbin6526 -> 0 bytes
-rw-r--r--addons/mail/static/src/img/smiley/monkey_eye.pngbin0 -> 6828 bytes
-rw-r--r--addons/mail/static/src/img/smiley/monkey_hear.pngbin0 -> 6550 bytes
-rw-r--r--addons/mail/static/src/img/smiley/monkey_speak.pngbin0 -> 5977 bytes
-rw-r--r--addons/mail/static/src/img/smiley/musti.pngbin1017 -> 0 bytes
-rw-r--r--addons/mail/static/src/img/smiley/normal_smile.pngbin0 -> 5284 bytes
-rw-r--r--addons/mail/static/src/img/smiley/party.pngbin0 -> 5945 bytes
-rw-r--r--addons/mail/static/src/img/smiley/pinky.pngbin2978 -> 0 bytes
-rw-r--r--addons/mail/static/src/img/smiley/postal_horn.pngbin4815 -> 0 bytes
-rw-r--r--addons/mail/static/src/img/smiley/sunglass.pngbin0 -> 5749 bytes
-rw-r--r--addons/mail/static/src/img/smiley/tears_of_joy.pngbin0 -> 6339 bytes
-rw-r--r--addons/mail/static/src/img/smiley/trophy.pngbin0 -> 5520 bytes
-rw-r--r--addons/mail/static/src/js/chat_manager.js15
-rw-r--r--addons/rating/models/rating.py4
27 files changed, 187 insertions, 124 deletions
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 @@
<data>
<!-- Smiley for rating to be displayed in the conversation -->
<record id="mail_shortcode_rating_0" model="mail.shortcode">
- <field name="source">:rating_0</field>
- <field name="substitution">&lt;img src='/rating/static/src/img/rating_0.png'/&gt;</field>
+ <field name="source">:rating_0</field> <!-- unicode of this image is not found -->
+ <field name="substitution">&lt;img src='/rating/static/src/img/rating_0.png' alt=':rating_0'/&gt;</field>
<field name="description">Rating Empty Smiley</field>
<field name="shortcode_type">image</field>
</record>
<record id="mail_shortcode_rating_1" model="mail.shortcode">
- <field name="source">:rating_1</field>
- <field name="substitution">&lt;img src='/rating/static/src/img/rating_1.png'/&gt;</field>
+ <field name="source">:rating_1</field> <!-- unicode of this image is not found -->
+ <field name="substitution">&lt;img src='/rating/static/src/img/rating_1.png' alt=':rating_1'/&gt;</field>
<field name="description">Rating Smiley Bad</field>
<field name="shortcode_type">image</field>
</record>
<record id="mail_shortcode_rating_5" model="mail.shortcode">
- <field name="source">:rating_5</field>
- <field name="substitution">&lt;img src='/rating/static/src/img/rating_5.png'/&gt;</field>
+ <field name="source">:rating_5</field> <!-- unicode of this image is not found -->
+ <field name="substitution">&lt;img src='/rating/static/src/img/rating_5.png' alt=':rating_5'/&gt;</field>
<field name="description">Rating Smiley Okay</field>
<field name="shortcode_type">image</field>
</record>
<record id="mail_shorcode_rating_10" model="mail.shortcode">
- <field name="source">:rating_10</field>
- <field name="substitution">&lt;img src='/rating/static/src/img/rating_10.png'/&gt;</field>
+ <field name="source">:rating_10</field> <!-- unicode of this image is not found -->
+ <field name="substitution">&lt;img src='/rating/static/src/img/rating_10.png' alt=':rating_10'/&gt;</field>
<field name="description">Rating Smiley Good</field>
<field name="shortcode_type">image</field>
</record>
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 @@
<data>
<!-- Smileys -->
- <record id="mail_smiley_smile" model="mail.shortcode">
+ <record id="mail_smiley_normal_smile" model="mail.shortcode">
<field name="source">:)</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/smile.png'/&gt;</field>
- <field name="description">Emoji Smile</field>
+ <field name="unicode_source">😊</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/normal_smile.png' alt='😊'/&gt;</field>
+ <field name="description">Smile</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_sad" model="mail.shortcode">
- <field name="source">:(</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/sad.png'/&gt;</field>
- <field name="description">Emoji Sad</field>
+ <record id="mail_smiley_smile" model="mail.shortcode">
+ <field name="source">:D</field>
+ <field name="unicode_source">😄</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/smile.png' alt='😄'/&gt;</field>
+ <field name="description">Smile with open mouth</field>
<field name="shortcode_type">image</field>
</record>
-
<record id="mail_smiley_laugh" model="mail.shortcode">
- <field name="source">:D</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/laugh.png'/&gt;</field>
- <field name="description">Emoji Laugh</field>
+ <field name="source">xD</field>
+ <field name="unicode_source">😆</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/laugh.png' alt='😆'/&gt;</field>
+ <field name="description">Laugh</field>
+ <field name="shortcode_type">image</field>
+ </record>
+ <record id="mail_smiley_tears_of_joy" model="mail.shortcode">
+ <field name="source">:-)</field>
+ <field name="unicode_source">😂</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/tears_of_joy.png' alt='😂'/&gt;</field>
+ <field name="description">Tears of joy</field>
<field name="shortcode_type">image</field>
</record>
-
<record id="mail_smiley_wink" model="mail.shortcode">
<field name="source">;)</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/wink.png'/&gt;</field>
- <field name="description">Emoji Wink</field>
+ <field name="unicode_source">😉</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/wink.png' alt='😉'/&gt;</field>
+ <field name="description">Wink</field>
+ <field name="shortcode_type">image</field>
+ </record>
+ <record id="mail_smiley_sunglass" model="mail.shortcode">
+ <field name="source">B)</field>
+ <field name="unicode_source">😎</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/sunglass.png' alt='😎'/&gt;</field>
+ <field name="description">Face with sunglass</field>
<field name="shortcode_type">image</field>
</record>
-
<record id="mail_smiley_stuck" model="mail.shortcode">
- <field name="source">O_0</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/stuck_out_tongue.png'/&gt;</field>
- <field name="description">Emoji Stuck Out Tongue Winking Eye</field>
+ <field name="source">;p</field>
+ <field name="unicode_source">😜</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/stuck_out_tongue.png' alt='😜'/&gt;</field>
+ <field name="description">Stuck Out Tongue Winking Eye</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_scream" model="mail.shortcode">
- <field name="source">:@</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/scream.png'/&gt;</field>
- <field name="description">Emoji Scream</field>
+ <record id="mail_smiley_cheeky" model="mail.shortcode">
+ <field name="source">:p</field>
+ <field name="unicode_source">😋</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/yum.png' alt='😋'/&gt;</field>
+ <field name="description">Cheeky</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_neutral" model="mail.shortcode">
- <field name="source">:|</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/neutral.png'/&gt;</field>
- <field name="description">Emoji Speechless/Neutral face</field>
+ <record id="mail_smiley_flushed" model="mail.shortcode">
+ <field name="source">o_o</field>
+ <field name="unicode_source">😳</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/flushed.png' alt='😳'/&gt;</field>
+ <field name="description">Flushed face</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_cheeky" model="mail.shortcode">
- <field name="source">:p</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/yum.png'/&gt;</field>
- <field name="description">Emoji Cheeky</field>
+ <record id="mail_smiley_neutral" model="mail.shortcode">
+ <field name="source">:|</field>
+ <field name="unicode_source">😐</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/neutral.png' alt='😐'/&gt;</field>
+ <field name="description">Speechless/Neutral face</field>
<field name="shortcode_type">image</field>
</record>
-
<record id="mail_smiley_confused" model="mail.shortcode">
<field name="source">:/</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/confused.png'/&gt;</field>
- <field name="description">Emoji Confused</field>
+ <field name="unicode_source">😕</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/confused.png' alt='😕'/&gt;</field>
+ <field name="description">Confused</field>
+ <field name="shortcode_type">image</field>
+ </record>
+ <record id="mail_smiley_sad" model="mail.shortcode">
+ <field name="source">:(</field>
+ <field name="unicode_source">😞</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/sad.png' alt='😞'/&gt;</field>
+ <field name="description">Sad</field>
+ <field name="shortcode_type">image</field>
+ </record>
+ <record id="mail_smiley_scream" model="mail.shortcode">
+ <field name="source">:@</field>
+ <field name="unicode_source">😱</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/scream.png' alt='😱'/&gt;</field>
+ <field name="description">Scream</field>
<field name="shortcode_type">image</field>
</record>
-
<record id="mail_smiley_open_mouth" model="mail.shortcode">
<field name="source">:O</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/open_mouth.png'/&gt;</field>
- <field name="description">Emoji Open Mouth</field>
+ <field name="unicode_source">😮</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/open_mouth.png' alt='😮'/&gt;</field>
+ <field name="description">Open Mouth</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_heart" model="mail.shortcode">
- <field name="source">&lt;3</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/heart.png'/&gt;</field>
- <field name="description">Emoji Heart</field>
+ <record id="mail_smiley_angry" model="mail.shortcode">
+ <field name="source">3:(</field>
+ <field name="unicode_source">😈</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/angry.png' alt='😈'/&gt;</field>
+ <field name="description">Angry</field>
<field name="shortcode_type">image</field>
</record>
-
- <!-- Other images -->
- <record id="mail_smiley_thumbsup" model="mail.shortcode">
- <field name="source">:+1</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/thumbsup.png'/&gt;</field>
- <field name="description">Emoji Thumbs Up</field>
+ <record id="mail_smiley_evil" model="mail.shortcode">
+ <field name="source">3:)</field>
+ <field name="unicode_source">😈</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/evil.png' alt='😈'/&gt;</field>
+ <field name="description">Face with evil</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_thumbsdown" model="mail.shortcode">
- <field name="source">:-1</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/thumbsdown.png'/&gt;</field>
- <field name="description">Emoji Thumbs Down</field>
+ <record id="mail_smiley_monkey_see" model="mail.shortcode">
+ <field name="source">:no_see</field>
+ <field name="unicode_source">🙈</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/monkey_eye.png' alt='🙈'/&gt;</field>
+ <field name="description">No see</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_kitten" model="mail.shortcode">
- <field name="source">:kitten</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/cat.png'/&gt;</field>
- <field name="description">Emoji Kitten</field>
+ <record id="mail_smiley_monkey_hear" model="mail.shortcode">
+ <field name="source">:no_hear</field>
+ <field name="unicode_source">🙉</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/monkey_hear.png' alt='🙉'/&gt;</field>
+ <field name="description">No hear</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_pinky" model="mail.shortcode">
- <field name="source">:pinky</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/pinky.png'/&gt;</field>
- <field name="description">Emoji Pinky</field>
+ <record id="mail_smiley_monkey_speak" model="mail.shortcode">
+ <field name="source">:no_speak</field>
+ <field name="unicode_source">🙊</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/monkey_speak.png' alt='🙊'/&gt;</field>
+ <field name="description">No speak</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_musti" model="mail.shortcode">
- <field name="source">:musti</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/musti.png'/&gt;</field>
- <field name="description">Emoji Musti</field>
+ <record id="mail_smiley_bug" model="mail.shortcode">
+ <field name="source">:bug</field>
+ <field name="unicode_source">🐞</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/bug.png' alt='🐞'/&gt;</field>
+ <field name="description">Bug</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_man_with_turban" model="mail.shortcode">
- <field name="source">:turban</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/man_with_turban.png'/&gt;</field>
- <field name="description">Emoji Man With Turban</field>
+ <record id="mail_smiley_kitten" model="mail.shortcode">
+ <field name="source">:kitten</field>
+ <field name="unicode_source">😸</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/cat.png' alt='😸'/&gt;</field>
+ <field name="description">Kitten</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_troll" model="mail.shortcode">
- <field name="source">:troll</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/trollface.png'/&gt;</field>
- <field name="description">Emoji Troll Face</field>
+ <record id="mail_smiley_heart" model="mail.shortcode">
+ <field name="source">&lt;3</field>
+ <field name="unicode_source">❤</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/heart.png' alt='❤'/&gt;</field>
+ <field name="description">Heart</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_boar" model="mail.shortcode">
- <field name="source">:boar</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/boar.png'/&gt;</field>
- <field name="description">Emoji Boar</field>
+ <record id="mail_smiley_thumbsup" model="mail.shortcode">
+ <field name="source">:+1</field>
+ <field name="unicode_source">👍</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/thumbsup.png' alt='👍'/&gt;</field>
+ <field name="description">Thumbs Up</field>
+ <field name="shortcode_type">image</field>
+ </record>
+ <record id="mail_smiley_thumbsdown" model="mail.shortcode">
+ <field name="source">:-1</field>
+ <field name="unicode_source">👎</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/thumbsdown.png' alt='👎'/&gt;</field>
+ <field name="description">Thumbs Down</field>
<field name="shortcode_type">image</field>
</record>
-
<record id="mail_smiley_poop" model="mail.shortcode">
<field name="source">:poop</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/poop.png'/&gt;</field>
- <field name="description">Emoji Poop</field>
+ <field name="unicode_source">💩</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/poop.png' alt='💩'/&gt;</field>
+ <field name="description">Poop</field>
+ <field name="shortcode_type">image</field>
+ </record>
+ <record id="mail_smiley_ghost" model="mail.shortcode">
+ <field name="source">:ghost</field>
+ <field name="unicode_source">👻</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/ghost.png' alt='👻'/&gt;</field>
+ <field name="description">Ghost</field>
<field name="shortcode_type">image</field>
</record>
-
<record id="mail_smiley_cookie" model="mail.shortcode">
<field name="source">:cookie</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/cookie.png'/&gt;</field>
- <field name="description">Emoji Cookie</field>
+ <field name="unicode_source">🍪</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/cookie.png' alt='🍪'/&gt;</field>
+ <field name="description">Cookie</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_postal_horn" model="mail.shortcode">
- <field name="source">:postal_horn</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/postal_horn.png'/&gt;</field>
- <field name="description">Emoji Postal Horn</field>
+ <record id="mail_smiley_beer" model="mail.shortcode">
+ <field name="source">:beer</field>
+ <field name="unicode_source">🍺</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/beer.png' alt='🍺'/&gt;</field>
+ <field name="description">Beer</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_ghost" model="mail.shortcode">
- <field name="source">:ghost</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/ghost.png'/&gt;</field>
- <field name="description">Emoji Ghost</field>
+ <record id="mail_smiley_coffee" model="mail.shortcode">
+ <field name="source">:coffee</field>
+ <field name="unicode_source">☕</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/coffee.png' alt='☕'/&gt;</field>
+ <field name="description">Coffee</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_beer" model="mail.shortcode">
- <field name="source">:beer</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/beer.png'/&gt;</field>
- <field name="description">Emoji Beer</field>
+ <record id="mail_smiley_cake" model="mail.shortcode">
+ <field name="source">:cake</field>
+ <field name="unicode_source">🎂</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/cake.png' alt='🎂'/&gt;</field>
+ <field name="description">Cake</field>
<field name="shortcode_type">image</field>
</record>
-
- <record id="mail_smiley_man" model="mail.shortcode">
- <field name="source">:man</field>
- <field name="substitution">&lt;img src='/mail/static/src/img/smiley/man.png'/&gt;</field>
- <field name="description">Emoji Man</field>
+ <record id="mail_smiley_party" model="mail.shortcode">
+ <field name="source">:party</field>
+ <field name="unicode_source">🎉</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/party.png' alt='🎉'/&gt;</field>
+ <field name="description">Party</field>
+ <field name="shortcode_type">image</field>
+ </record>
+ <record id="mail_smiley_trophy" model="mail.shortcode">
+ <field name="source">:trophy</field>
+ <field name="unicode_source">🏆</field>
+ <field name="substitution">&lt;img src='/mail/static/src/img/smiley/trophy.png' alt='🏆'/&gt;</field>
+ <field name="description">Trophy</field>
<field name="shortcode_type">image</field>
</record>
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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/angry.png
Binary files 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
--- a/addons/mail/static/src/img/smiley/boar.png
+++ /dev/null
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/bug.png
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/cake.png
Binary files 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
--- a/addons/mail/static/src/img/smiley/cat.png
+++ b/addons/mail/static/src/img/smiley/cat.png
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/coffee.png
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/evil.png
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/flushed.png
Binary files 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
--- a/addons/mail/static/src/img/smiley/man.png
+++ /dev/null
Binary files 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
--- a/addons/mail/static/src/img/smiley/man_with_turban.png
+++ /dev/null
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/monkey_eye.png
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/monkey_hear.png
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/monkey_speak.png
Binary files 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
--- a/addons/mail/static/src/img/smiley/musti.png
+++ /dev/null
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/normal_smile.png
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/party.png
Binary files 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
--- a/addons/mail/static/src/img/smiley/pinky.png
+++ /dev/null
Binary files 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
--- a/addons/mail/static/src/img/smiley/postal_horn.png
+++ /dev/null
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/sunglass.png
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/tears_of_joy.png
Binary files 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
--- /dev/null
+++ b/addons/mail/static/src/img/smiley/trophy.png
Binary files 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="<img src='/rating/static/src/img/rating_%s.png' style='width:20px;height:20px;float:left;margin-right: 5px;'/>%s"
- % (rate, feedback),
+ body="<img src='/rating/static/src/img/rating_%s.png' alt=':rating_%s' style='width:20px;height:20px;float:left;margin-right: 5px;'/>%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
)