changeset 840:73cc4658f431

browser (strings): add a parameter "new_target" to addURLToText + fix a wrong import
author souliane <souliane@mailoo.org>
date Wed, 13 Jan 2016 13:12:58 +0100
parents 09ace5cbcb9b
children 4a01be961fd2
files src/browser/sat_browser/main_panel.py src/browser/sat_browser/strings.py
diffstat 2 files changed, 17 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/browser/sat_browser/main_panel.py	Wed Jan 13 13:11:44 2016 +0100
+++ b/src/browser/sat_browser/main_panel.py	Wed Jan 13 13:12:58 2016 +0100
@@ -24,7 +24,7 @@
 log = getLogger(__name__)
 
 from sat.core.i18n import _
-from sat_frontends.tools.strings import addURLToText
+from sat_browser import strings
 
 from pyjamas.ui.DockPanel import DockPanel
 from pyjamas.ui.HorizontalPanel import HorizontalPanel
@@ -162,7 +162,7 @@
                 status = C.PRESENCE[presence]
             else:
                 status = self.EMPTY_STATUS
-        self.display.setHTML(addURLToText(status))
+        self.display.setHTML(strings.addURLToText(status))
 
 
 class PresenceStatusMenuBar(base_widget.WidgetMenuBar):
--- a/src/browser/sat_browser/strings.py	Wed Jan 13 13:11:44 2016 +0100
+++ b/src/browser/sat_browser/strings.py	Wed Jan 13 13:12:58 2016 +0100
@@ -44,21 +44,29 @@
     return dict_
 
 
-def addURLToText(text):
-    """Workaround for a pyjamas bug with regex
+def addURLToText(text, new_target=True):
+    """Check a text for what looks like an URL and make it clickable.
 
-    In some case, Pyjamas' re module get crazy and freeze browsers (tested with Iceweasel and Chromium).
-    we use javascript as a workaround
-    This method is inspired from https://stackoverflow.com/questions/1500260/detect-urls-in-text-with-javascript
+    @param string (unicode): text to process
+    @param new_target (bool): if True, make the link open in a new window
     """
+    # XXX: Workaround for a pyjamas bug with regex, base method in sat.frontends.tools.strings
+    # In some case, Pyjamas' re module get crazy and freeze browsers (tested with Iceweasel and Chromium).
+    # we use javascript as a workaround
+    # This method is inspired from https://stackoverflow.com/questions/1500260/detect-urls-in-text-with-javascript
+    target = ' target="_blank"' if new_target else ''
     JS("""var urlRegex = /(https?:\/\/[^\s]+)/g;
     return text.replace(urlRegex, function(url) {
-        return '<a href="' + url + '">' + url + '</a>';
+        return '<a href="' + url + '"' + target + ' class="url">' + url + '</a>';
     })""")
 
 
 def addURLToImage(string):
-    """Check a XHTML text for what looks like an imageURL and make it clickable"""
+    """Check a XHTML text for what looks like an imageURL and make it clickable.
+
+    @param string (unicode): text to process
+    """
+    # XXX: Workaround for a pyjamas bug with regex, base method in sat.frontends.tools.strings
     def repl(match):
         url = match.group(1)
         return '<a href="%s" target="_blank">%s</a>' % (url, match.group(0))