From: Michael Tremer Date: Tue, 7 May 2019 21:01:41 +0000 (+0100) Subject: wiki: Handle external links X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0c9bada3f7628fc492659ba793720b854485745a;p=ipfire.org.git wiki: Handle external links Signed-off-by: Michael Tremer --- diff --git a/src/backend/wiki.py b/src/backend/wiki.py index fc46927f..c445529d 100644 --- a/src/backend/wiki.py +++ b/src/backend/wiki.py @@ -204,6 +204,9 @@ class Wiki(misc.Object): class Page(misc.Object): + # External links + external_link = re.compile(r"\[\[((?:ftp|git|https?|rsync|sftp|ssh|webcal)\:\/\/.+?)(?:\|(.+?))\]\]") + # Interwiki links e.g. [[wp>IPFire]] interwiki_link = re.compile(r"\[\[(\w+)>(.+?)(?:\|(.+?))?\]\]") @@ -276,6 +279,11 @@ class Page(misc.Object): if self.data.author_uid: return self.backend.accounts.get_by_uid(self.data.author_uid) + def _render_external_link(self, m): + url, alias = m.groups() + + return """%s""" % (url, alias or url) + def _render_interwiki_link(self, m): wiki = m.group(1) if not wiki: @@ -352,15 +360,14 @@ class Page(misc.Object): # Handle interwiki links text = self.interwiki_link.sub(self._render_interwiki_link, text) + # Handle external links + text = self.external_link.sub(self._render_external_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), - # External links - (r"\[\[((?:ftp|git|https?|rsync|sftp|ssh|webcal)\:\/\/.+?)(?:\|(.+?))\]\]", - r"\1", r"\2", None, False), - # Mail (r"\[\[([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)\]\]", r"\1", r"\1", None, False),