From 0c03661b568ac1adffb81455088d4f7c4ee4b81d Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 3 Sep 2013 15:59:40 +0200 Subject: [PATCH] Added url detection bzr revid: nicolas.vanhoren@openerp.com-20130903135940-3miafvmwtiiuc769 --- addons/im/static/src/js/im_common.js | 22 ++++++++++++++++++++-- addons/im/static/src/xml/im_common.xml | 2 +- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/addons/im/static/src/js/im_common.js b/addons/im/static/src/js/im_common.js index 14de2d6363e..d196632607c 100644 --- a/addons/im/static/src/js/im_common.js +++ b/addons/im/static/src/js/im_common.js @@ -443,8 +443,8 @@ function declare($, _, openerp) { return new Array(size - str.length + 1).join('0') + str; }; date = "" + zpad(date.getHours(), 2) + ":" + zpad(date.getMinutes(), 2); - - this.last_bubble = $(openerp.qweb.render("im_common.conversation_bubble", {"items": items, "user": user, "time": date})); + var to_show = _.map(items, im_common.escape_keep_url); + this.last_bubble = $(openerp.qweb.render("im_common.conversation_bubble", {"items": to_show, "user": user, "time": date})); $(this.$(".oe_im_chatview_content").children()[0]).append(this.last_bubble); this._go_bottom(); }, @@ -484,6 +484,24 @@ function declare($, _, openerp) { }); }; + var url_regex = /(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/gi; + + im_common.escape_keep_url = function(str) { + var last = 0; + var txt = ""; + while (true) { + var result = url_regex.exec(str); + if (! result) + break; + txt += _.escape(str.slice(last, result.index)); + last = url_regex.lastIndex; + var url = _.escape(result[0]); + txt += '' + url + ''; + } + txt += str.slice(last, str.length); + return txt; + }; + return im_common; } diff --git a/addons/im/static/src/xml/im_common.xml b/addons/im/static/src/xml/im_common.xml index fac6a57b146..462e242befd 100644 --- a/addons/im/static/src/xml/im_common.xml +++ b/addons/im/static/src/xml/im_common.xml @@ -33,7 +33,7 @@
-
+