]> git.ipfire.org Git - ipfire.org.git/commitdiff
wiki: Handle email addresses
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 7 May 2019 21:08:15 +0000 (22:08 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 7 May 2019 21:08:15 +0000 (22:08 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/backend/blog.py
src/backend/wiki.py

index e79dd308f2cad6ae5352b8185ff8ff9e3ff25ce8..9aa399222986f91636de18e4f2388acb07d9d0f6 100644 (file)
@@ -17,9 +17,6 @@ link_patterns = (
        # Find bug reports
        (re.compile(r"(?:#(\d+))", re.I), r"https://bugzilla.ipfire.org/show_bug.cgi?id=\1"),
 
-       # Email Addresses
-       (re.compile(r"([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)"), r"mailto:\1"),
-
        # CVE Numbers
        (re.compile(r"(?:CVE)[\s\-](\d{4}\-\d+)"), r"https://cve.mitre.org/cgi-bin/cvename.cgi?name=\1"),
 )
index c445529d86f7880115fc1e063f583162e0dc2b27..eb889bad803d8c4591e1a5ec8fba57fc1a6d9bd4 100644 (file)
@@ -210,6 +210,9 @@ class Page(misc.Object):
        # Interwiki links e.g. [[wp>IPFire]]
        interwiki_link = re.compile(r"\[\[(\w+)>(.+?)(?:\|(.+?))?\]\]")
 
+       # Mail link
+       email_link = re.compile(r"\[\[([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)(?:\|(.+?))?\]\]")
+
        def init(self, id, data=None):
                self.id = id
                self.data = data
@@ -321,6 +324,12 @@ class Page(misc.Object):
 
                return " ".join(s)
 
+       def _render_email_link(self, m):
+               address, alias = m.groups()
+
+               return """<a class="link-external" href="mailto:%s">%s</a>""" \
+                       % (address, alias or address)
+
        def _render(self, text):
                logging.debug("Rendering %s" % self)
 
@@ -363,14 +372,13 @@ class Page(misc.Object):
                # Handle external links
                text = self.external_link.sub(self._render_external_link, text)
 
+               # Handle email links
+               text = self.email_link.sub(self._render_email_link, text)
+
                # Add wiki links
                patterns = (
                        (r"\[\[([\w\d\/\-\.]+)(?:\|(.+?))\]\]", r"\1", r"\2", None, True),
                        (r"\[\[([\w\d\/\-\.]+)\]\]", r"\1", r"\1", self.backend.wiki.get_page_title, True),
-
-                       # Mail
-                       (r"\[\[([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)\]\]",
-                               r"\1", r"\1", None, False),
                )
 
                for pattern, link, title, repl, internal in patterns: