diff --git a/addons/mail/static/src/js/chat_manager.js b/addons/mail/static/src/js/chat_manager.js index 2f2542e7e3f..245f0af69c9 100644 --- a/addons/mail/static/src/js/chat_manager.js +++ b/addons/mail/static/src/js/chat_manager.js @@ -119,9 +119,9 @@ function add_channel_to_message (message, channel_id) { function post_channel_message (data) { return ChannelModel.call('message_post', [data.channel_id], { message_type: 'comment', - content_subtype: 'html', + content_subtype: 'plaintext', partner_ids: data.partner_ids, - body: data.content, + body: _.str.trim(data.content), subtype: 'mail.mt_comment', attachment_ids: data.attachment_ids, }); @@ -130,7 +130,7 @@ function post_channel_message (data) { function post_document_message (model_name, res_id, data) { var values = { attachment_ids: data.attachment_ids, - body: data.content, + body: _.str.trim(data.content), content_subtype: data.content_subtype, message_type: data.message_type, partner_ids: data.partner_ids, diff --git a/addons/mail/static/src/js/chatter.js b/addons/mail/static/src/js/chatter.js index 3415789917d..c0d7d8afba6 100644 --- a/addons/mail/static/src/js/chatter.js +++ b/addons/mail/static/src/js/chatter.js @@ -484,7 +484,7 @@ var ChatterComposer = ChatComposer.extend({ subtype_id: false, subtype: 'mail.mt_comment', message_type: 'comment', - content_subtype: 'html', + content_subtype: 'plaintext', }); // Subtype diff --git a/openerp/tools/mail.py b/openerp/tools/mail.py index 45b16dd811f..09010efe0e7 100644 --- a/openerp/tools/mail.py +++ b/openerp/tools/mail.py @@ -525,29 +525,12 @@ def html2plaintext(html, body_id=None, encoding='utf-8'): return html -def html_escape_keep_url(self, message): - """ Escape the message and transform the url into clickable link - :param string message: the message to escape url and transform them into clickable link - :returns the escaped message - :rtype : string - """ - safe_message = "" - first = 0 - last = 0 - for m in re.finditer('(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?', message): - last = m.start() - safe_message += cgi.escape(message[first:last]) - safe_message += '%s' % (cgi.escape(m.group(0)), m.group(0)) - first = m.end() - last = m.end() - safe_message += cgi.escape(message[last:]) - return safe_message - def plaintext2html(text, container_tag=False): """ Convert plaintext into html. Content of the text is escaped to manage html entities, using cgi.escape(). - all \n,\r are replaced by
- enclose content into

+ - convert url into clickable link - 2 or more consecutive
are considered as paragraph breaks :param string container_tag: container of the html; by default the @@ -559,7 +542,18 @@ def plaintext2html(text, container_tag=False): text = text.replace('\n', '
') text = text.replace('\r', '
') - # 2-3: form paragraphs + # 2. clickable links + idx = 0 + final = '' + link_tags = re.compile(r'(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?') + for item in re.finditer(link_tags, text): + final += text[idx:item.start()] + final += '%s' % (item.group(0), item.group(0)) + idx = item.end() + final += text[idx:] + text = final + + # 3-4: form paragraphs idx = 0 final = '

' br_tags = re.compile(r'(([<]\s*[bB][rR]\s*\/?[>]\s*){2,})') @@ -568,7 +562,7 @@ def plaintext2html(text, container_tag=False): idx = item.end() final += text[idx:] + '

' - # 4. container + # 5. container if container_tag: final = '<%s>%s' % (container_tag, final, container_tag) return ustr(final)