From 3ccd6783ac82b11b14c920afd0341df356e5b6c2 Mon Sep 17 00:00:00 2001 From: "j.vondoemming" <j.vondoemming@stud.uni-goettingen.de> Date: Sat, 15 Oct 2022 19:03:13 +0200 Subject: [PATCH] automatically redirect renderer link pages --- lang.json | 4 +++- theme/templates/macros/common.html | 8 ++++--- theme/templates/macros/content_renderer.html | 2 +- theme/templates/page.html | 25 +++++++++++++++++++- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/lang.json b/lang.json index 1ecf58e..6bd08b2 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 63d9c7e..f06dfee 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 0caf523..9e22c91 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 adca847..184046a 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 %} -- GitLab