| Index: cms/converters.py |
| =================================================================== |
| --- a/cms/converters.py |
| +++ b/cms/converters.py |
| @@ -19,6 +19,7 @@ |
| import HTMLParser |
| import re |
| import urlparse |
| +from posixpath import relpath |
| import jinja2 |
| import markdown |
| @@ -298,6 +299,12 @@ |
| ) |
| def process_links(self, text): |
| + def make_relative(base_url, target): |
| + if not target.startswith('/'): |
| + # Links to an external resource |
| + return target |
| + return relpath(target, base_url.rsplit('/', 1)[0]) |
| + |
| def process_link(match): |
| pre, attr, url, post = match.groups() |
| url = jinja2.Markup(url).unescape() |
| @@ -312,6 +319,11 @@ |
| post += ' hreflang="{}"'\ |
| .format(jinja2.Markup.escape(locale)) |
| + if self._params['relative']: |
| + current_page = '/{}/{}'.format(self._params['locale'], |
| + self._params['page']) |
| + url = make_relative(current_page, url) |
| + |
| return ''.join((pre, jinja2.Markup.escape(url), post)) |
| text = re.sub(r'(<a\s[^<>]*\b(href)=\")([^<>\"]+)(\")', |