feat: Externe Quellen mit klickbaren Links (neuer Tab) + Kiosk-Modus

- Label "Externe Quelle (Links)" -> "Externe Quellen" (de/en)
- Quelle-URLs werden via linkify-Partial anklickbar, oeffnen in neuem Tab
- Neuer Kiosk-Modus: ?kiosk=true macht externe Links unklickbar
  (bleibt fuer die Session aktiv, verlassen mit ?kiosk=false)
This commit is contained in:
maik
2026-08-18 17:58:53 +02:00
parent 80c1264036
commit d351ba2b3a
7 changed files with 95 additions and 3 deletions
@@ -0,0 +1,10 @@
{{- /*
linkify.html wandelt nackte http(s)-URLs in einem Textblock in anklickbare
Links um (neuer Tab). Alles andere bleibt unveraendert.
Aufruf: {{ partial "linkify.html" .Params.quelle }}
Die erzeugten Links tragen die Klasse op-quelle-link; im Kiosk-Modus
(?kiosk=true) werden externe Links per kiosk.js ohnehin deaktiviert.
*/ -}}
{{- $s := . -}}
{{- $s = replaceRE `(https?://[^\s<>\]]+)` `<a class="op-quelle-link" href="${1}" target="_blank" rel="noopener noreferrer">${1}</a>` $s -}}
{{- $s | safeHTML -}}
@@ -1,3 +1,8 @@
{{/* Kiosk-Modus (?kiosk=true) global auf allen Seiten */}}
{{ $kiosk := resources.Get "js/kiosk.js" }}
{{ if hugo.IsProduction }}{{ $kiosk = $kiosk | minify | fingerprint }}{{ end }}
<script src="{{ $kiosk.RelPermalink }}"{{ with $kiosk.Data.Integrity }} integrity="{{ . }}"{{ end }}></script>
{{/* Karten-JS nur auf Karten-Seiten (Home + Schauplätze) laden */}}
{{ if or .IsHome (eq .Type "schauplaetze") (eq .Type "kategorien") (eq .Type "erinnerungsorte") }}
<script src="{{ "vendor/leaflet/leaflet.js" | relURL }}"></script>