[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
@@ -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"><img src='/rating/static/src/img/rating_0.png'/></field>
|
||||
<field name="source">:rating_0</field> <!-- unicode of this image is not found -->
|
||||
<field name="substitution"><img src='/rating/static/src/img/rating_0.png' alt=':rating_0'/></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"><img src='/rating/static/src/img/rating_1.png'/></field>
|
||||
<field name="source">:rating_1</field> <!-- unicode of this image is not found -->
|
||||
<field name="substitution"><img src='/rating/static/src/img/rating_1.png' alt=':rating_1'/></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"><img src='/rating/static/src/img/rating_5.png'/></field>
|
||||
<field name="source">:rating_5</field> <!-- unicode of this image is not found -->
|
||||
<field name="substitution"><img src='/rating/static/src/img/rating_5.png' alt=':rating_5'/></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"><img src='/rating/static/src/img/rating_10.png'/></field>
|
||||
<field name="source">:rating_10</field> <!-- unicode of this image is not found -->
|
||||
<field name="substitution"><img src='/rating/static/src/img/rating_10.png' alt=':rating_10'/></field>
|
||||
<field name="description">Rating Smiley Good</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"><img src='/mail/static/src/img/smiley/smile.png'/></field>
|
||||
<field name="description">Emoji Smile</field>
|
||||
<field name="unicode_source">😊</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/normal_smile.png' alt='😊'/></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"><img src='/mail/static/src/img/smiley/sad.png'/></field>
|
||||
<field name="description">Emoji Sad</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_laugh" model="mail.shortcode">
|
||||
<record id="mail_smiley_smile" model="mail.shortcode">
|
||||
<field name="source">:D</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/laugh.png'/></field>
|
||||
<field name="description">Emoji Laugh</field>
|
||||
<field name="unicode_source">😄</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/smile.png' alt='😄'/></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">xD</field>
|
||||
<field name="unicode_source">😆</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/laugh.png' alt='😆'/></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"><img src='/mail/static/src/img/smiley/tears_of_joy.png' alt='😂'/></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"><img src='/mail/static/src/img/smiley/wink.png'/></field>
|
||||
<field name="description">Emoji Wink</field>
|
||||
<field name="unicode_source">😉</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/wink.png' alt='😉'/></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"><img src='/mail/static/src/img/smiley/sunglass.png' alt='😎'/></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"><img src='/mail/static/src/img/smiley/stuck_out_tongue.png'/></field>
|
||||
<field name="description">Emoji Stuck Out Tongue Winking Eye</field>
|
||||
<field name="source">;p</field>
|
||||
<field name="unicode_source">😜</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/stuck_out_tongue.png' alt='😜'/></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"><img src='/mail/static/src/img/smiley/scream.png'/></field>
|
||||
<field name="description">Emoji Scream</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_neutral" model="mail.shortcode">
|
||||
<field name="source">:|</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/neutral.png'/></field>
|
||||
<field name="description">Emoji Speechless/Neutral 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"><img src='/mail/static/src/img/smiley/yum.png'/></field>
|
||||
<field name="description">Emoji Cheeky</field>
|
||||
<field name="unicode_source">😋</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/yum.png' alt='😋'/></field>
|
||||
<field name="description">Cheeky</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
<record id="mail_smiley_flushed" model="mail.shortcode">
|
||||
<field name="source">o_o</field>
|
||||
<field name="unicode_source">😳</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/flushed.png' alt='😳'/></field>
|
||||
<field name="description">Flushed face</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
<record id="mail_smiley_neutral" model="mail.shortcode">
|
||||
<field name="source">:|</field>
|
||||
<field name="unicode_source">😐</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/neutral.png' alt='😐'/></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"><img src='/mail/static/src/img/smiley/confused.png'/></field>
|
||||
<field name="description">Emoji Confused</field>
|
||||
<field name="unicode_source">😕</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/confused.png' alt='😕'/></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"><img src='/mail/static/src/img/smiley/sad.png' alt='😞'/></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"><img src='/mail/static/src/img/smiley/scream.png' alt='😱'/></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"><img src='/mail/static/src/img/smiley/open_mouth.png'/></field>
|
||||
<field name="description">Emoji Open Mouth</field>
|
||||
<field name="unicode_source">😮</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/open_mouth.png' alt='😮'/></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"><3</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/heart.png'/></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"><img src='/mail/static/src/img/smiley/angry.png' alt='😈'/></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"><img src='/mail/static/src/img/smiley/thumbsup.png'/></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"><img src='/mail/static/src/img/smiley/evil.png' alt='😈'/></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"><img src='/mail/static/src/img/smiley/thumbsdown.png'/></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"><img src='/mail/static/src/img/smiley/monkey_eye.png' alt='🙈'/></field>
|
||||
<field name="description">No see</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
<record id="mail_smiley_monkey_hear" model="mail.shortcode">
|
||||
<field name="source">:no_hear</field>
|
||||
<field name="unicode_source">🙉</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/monkey_hear.png' alt='🙉'/></field>
|
||||
<field name="description">No hear</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
<record id="mail_smiley_monkey_speak" model="mail.shortcode">
|
||||
<field name="source">:no_speak</field>
|
||||
<field name="unicode_source">🙊</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/monkey_speak.png' alt='🙊'/></field>
|
||||
<field name="description">No speak</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
<record id="mail_smiley_bug" model="mail.shortcode">
|
||||
<field name="source">:bug</field>
|
||||
<field name="unicode_source">🐞</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/bug.png' alt='🐞'/></field>
|
||||
<field name="description">Bug</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_kitten" model="mail.shortcode">
|
||||
<field name="source">:kitten</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/cat.png'/></field>
|
||||
<field name="description">Emoji Kitten</field>
|
||||
<field name="unicode_source">😸</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/cat.png' alt='😸'/></field>
|
||||
<field name="description">Kitten</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_pinky" model="mail.shortcode">
|
||||
<field name="source">:pinky</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/pinky.png'/></field>
|
||||
<field name="description">Emoji Pinky</field>
|
||||
<record id="mail_smiley_heart" model="mail.shortcode">
|
||||
<field name="source"><3</field>
|
||||
<field name="unicode_source">❤</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/heart.png' alt='❤'/></field>
|
||||
<field name="description">Heart</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_musti" model="mail.shortcode">
|
||||
<field name="source">:musti</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/musti.png'/></field>
|
||||
<field name="description">Emoji Musti</field>
|
||||
<record id="mail_smiley_thumbsup" model="mail.shortcode">
|
||||
<field name="source">:+1</field>
|
||||
<field name="unicode_source">👍</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/thumbsup.png' alt='👍'/></field>
|
||||
<field name="description">Thumbs Up</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"><img src='/mail/static/src/img/smiley/man_with_turban.png'/></field>
|
||||
<field name="description">Emoji Man With Turban</field>
|
||||
<record id="mail_smiley_thumbsdown" model="mail.shortcode">
|
||||
<field name="source">:-1</field>
|
||||
<field name="unicode_source">👎</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/thumbsdown.png' alt='👎'/></field>
|
||||
<field name="description">Thumbs Down</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_troll" model="mail.shortcode">
|
||||
<field name="source">:troll</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/trollface.png'/></field>
|
||||
<field name="description">Emoji Troll Face</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_boar" model="mail.shortcode">
|
||||
<field name="source">:boar</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/boar.png'/></field>
|
||||
<field name="description">Emoji Boar</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_poop" model="mail.shortcode">
|
||||
<field name="source">:poop</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/poop.png'/></field>
|
||||
<field name="description">Emoji Poop</field>
|
||||
<field name="unicode_source">💩</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/poop.png' alt='💩'/></field>
|
||||
<field name="description">Poop</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_cookie" model="mail.shortcode">
|
||||
<field name="source">:cookie</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/cookie.png'/></field>
|
||||
<field name="description">Emoji 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"><img src='/mail/static/src/img/smiley/postal_horn.png'/></field>
|
||||
<field name="description">Emoji Postal Horn</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_ghost" model="mail.shortcode">
|
||||
<field name="source">:ghost</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/ghost.png'/></field>
|
||||
<field name="description">Emoji Ghost</field>
|
||||
<field name="unicode_source">👻</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/ghost.png' alt='👻'/></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="unicode_source">🍪</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/cookie.png' alt='🍪'/></field>
|
||||
<field name="description">Cookie</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_beer" model="mail.shortcode">
|
||||
<field name="source">:beer</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/beer.png'/></field>
|
||||
<field name="description">Emoji Beer</field>
|
||||
<field name="unicode_source">🍺</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/beer.png' alt='🍺'/></field>
|
||||
<field name="description">Beer</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
<record id="mail_smiley_man" model="mail.shortcode">
|
||||
<field name="source">:man</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/man.png'/></field>
|
||||
<field name="description">Emoji Man</field>
|
||||
<record id="mail_smiley_coffee" model="mail.shortcode">
|
||||
<field name="source">:coffee</field>
|
||||
<field name="unicode_source">☕</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/coffee.png' alt='☕'/></field>
|
||||
<field name="description">Coffee</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
<record id="mail_smiley_cake" model="mail.shortcode">
|
||||
<field name="source">:cake</field>
|
||||
<field name="unicode_source">🎂</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/cake.png' alt='🎂'/></field>
|
||||
<field name="description">Cake</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
<record id="mail_smiley_party" model="mail.shortcode">
|
||||
<field name="source">:party</field>
|
||||
<field name="unicode_source">🎉</field>
|
||||
<field name="substitution"><img src='/mail/static/src/img/smiley/party.png' alt='🎉'/></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"><img src='/mail/static/src/img/smiley/trophy.png' alt='🏆'/></field>
|
||||
<field name="description">Trophy</field>
|
||||
<field name="shortcode_type">image</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 1017 B |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||