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+)>(.+?)(?:\|(.+?))?\]\]")
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 """<a class="link-external" href="%s">%s</a>""" % (url, alias or url)
+
def _render_interwiki_link(self, m):
wiki = m.group(1)
if not wiki:
# 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),