diff --git a/lang.json b/lang.json index 1ecf58e04d9283eca3ea91c6f5e8f38002ecda98..6bd08b2ce427b9fe687d71b6c57af0c509677159 100644 --- a/lang.json +++ b/lang.json @@ -33,7 +33,9 @@ "slug_suffix": "", "edit_url_text": "[Seite bearbeiten]", "view_url_text": "[Quelltext]", - "history_url_text": "[Historie]" + "history_url_text": "[Historie]", + "redirect_prefix": "Diese Seite verlinkt auf eine andere Seite. Du wirst in kürze auf ", + "redirect_suffix": " weitergeleitet. Falls die automatische Weiterleitung nicht funktioniert, einfach den Link direkt klicken." }, "tag": { "edit_url_text": "[Text bearbeiten]", diff --git a/theme/templates/macros/common.html b/theme/templates/macros/common.html index 63d9c7e73dd8e55c6be0df9ebfbfc34cb53269d6..f06dfee625fc1f06432b7ebc71c2ed00b4420ece 100644 --- a/theme/templates/macros/common.html +++ b/theme/templates/macros/common.html @@ -133,12 +133,14 @@ {%- macro render_link(link, content, lang, attr = None, title = None) -%} - {%- call(objtype, obj) render_link_raw(link, content, lang, attr, title) -%} + {%- call(objtype, obj, url, relation) render_link_raw(link, content, lang, attr, title) -%} {%- if content is string or content is none -%} {%- if content is string and content|length -%} {{ encoded_span(content) }} - {%- else -%} + {%- elif obj -%} {{ encoded_span(obj.title) }} + {%- else -%} + {{ encoded_span(url) }} {%- endif -%} {%- else -%} <strong>ERROR: Cannot render link with formatted content here.</strong> @@ -163,7 +165,7 @@ {%- endcall -%} {%- set target = config.link_target[ns.relation] -%} <a {{ render_attr(attr, lang, extra_classes=[ns.relation], extra={"href": ns.url, "title": {"value":title, "escape": true}, "target": target}) }}> - {{- caller(ns.objtype, ns.obj) -}} + {{- caller(ns.objtype, ns.obj,ns.url,ns.relation) -}} </a> {%- endmacro -%} diff --git a/theme/templates/macros/content_renderer.html b/theme/templates/macros/content_renderer.html index 0caf523629af5faac035916b425d4593ef5fdcd8..9e22c91fca05074750a0c8a8ed4eac00f182588a 100644 --- a/theme/templates/macros/content_renderer.html +++ b/theme/templates/macros/content_renderer.html @@ -8,7 +8,7 @@ {%- endmacro -%} {%- macro render_link(link, content, lang, attr = None, title = None) -%} - {%- call(objtype, obj) common.render_link_raw(link, content, lang, attr, title) -%} + {%- call(objtype, obj, url, relation) common.render_link_raw(link, content, lang, attr, title) -%} {%- if content is string or content is none -%} {%- if content is string and content|length -%} {{ common.encoded_span(content) }} diff --git a/theme/templates/page.html b/theme/templates/page.html index adca84700330683f8318efbd94301adfd888f582..184046a9ea3595915b82276c535c9266e80c876c 100644 --- a/theme/templates/page.html +++ b/theme/templates/page.html @@ -3,6 +3,21 @@ {% block title %}{{ t[l].title_prefix }}{{ common.encoded_span(page.title)|striptags }}{{ t[l].title_seperator }}{{ common.encoded_span(page.category.title)|striptags }}{{ t[l].title_seperator }}{{ t[l].sitename }}{{ t[l].title_suffix }}{% endblock %} {% block extra_head %} + + {%- if page.link.alias -%} + {#- If page is a link and the user somehow got non-aliased link (e.g. from an old qr-code), redirect them to the linked url. -#} + {%- set ns = namespace(relation=None, url=None) -%} + {%- call(resolvedlink, objtype, obj) common.resolve_link(page.link) -%} + {%- set ns.url = resolvedlink.urlwithanchor -%} + {%- if not resolvedlink.is_external -%} + {%- set ns.relation = "internal" -%} + {%- if resolvedlink.url|length -%} + {%- set ns.url = [siteurl, ns.url]|join("/") -%} + {%- endif -%} + {%- endif -%} + {%- endcall -%} + <meta http-equiv="refresh" content="5; url={{ ns.url }}" > + {%- endif -%} {% endblock %} {% block breadcrumb %} @@ -15,7 +30,15 @@ {{ common.render_header(page.title, 1, None, lang) }} {% endblock %} {% block page_content %} - {{ render.section({"type": "page", "page": page, "title_mode": "prevent"}, l, 1) }} + {%- if page.link.alias -%} + <div class="info"> + <p> + {{ t[l].page.redirect_prefix }}{{ common.render_link(page.link.alias, None, l) }}{{ t[l].page.redirect_suffix }} + </p> + </div> + {%- else -%} + {{ render.section({"type": "page", "page": page, "title_mode": "prevent"}, l, 1) }} + {%- endif -%} {% endblock %} </article> {% endblock %}