112 lines
4.3 KiB
Markdown
112 lines
4.3 KiB
Markdown
# Offener Prozess – Interaktive Karte (Hugo)
|
||
|
||
Hugo-Neubau von [map.offener-prozess.de](https://map.offener-prozess.de/)
|
||
(Ablösung des alten WordPress/Listable-Setups). Interaktive Karte der
|
||
Schauplätze des NSU-Komplexes mit **Leaflet + OpenStreetMap** (statt der alten
|
||
Google-Maps-/Mapbox-Einbindung), im Layout ans Original angelehnt (Split-View:
|
||
Kartenliste links, Karte rechts), umgesetzt mit dem Theme
|
||
[`themes/op-dz/`](themes/op-dz/) (UIkit 3, Schrift *ABC Favorit*, alle Assets
|
||
lokal/DSGVO-konform).
|
||
|
||
## Starten
|
||
|
||
```bash
|
||
hugo server # Vorschau: http://localhost:1313
|
||
hugo --gc --minify # Produktions-Build nach ./public
|
||
```
|
||
|
||
Voraussetzung: **Hugo Extended ≥ 0.116**.
|
||
|
||
## Inhalt
|
||
|
||
**118 Schauplätze** wurden von der Altseite importiert (112 mit Koordinaten,
|
||
6 ohne – erscheinen als Cards, aber nicht als Marker), verteilt auf **18
|
||
Kategorien** (Mordanschläge, Raubüberfälle, Aufenthaltsorte, Wohnungen des Trios,
|
||
Fanzines, Unterstützende, Behörden …). Texte, Adressen, Koordinaten, Quellen und
|
||
Bilder stammen von map.offener-prozess.de.
|
||
|
||
## Struktur
|
||
|
||
```
|
||
hugo.toml Konfiguration: Taxonomie, Menüs, Kartenkacheln, Params
|
||
data/kategorien.yaml Kategorie → Markerfarbe (Reihenfolge = Filter-Reihenfolge)
|
||
content/
|
||
_index.md Startseite (= Karten-Explorer)
|
||
schauplaetze/<slug>/ je Schauplatz ein Page-Bundle (index.md + optional cover.*)
|
||
so-funktionierts.md, ueber.md
|
||
layouts/index.html Startseite → Explorer-Partial
|
||
themes/op-dz/
|
||
layouts/partials/
|
||
explorer.html Split-View (Liste + Suche + Filter + Karte)
|
||
karte.html Karten-Container + eingebettete Marker-Daten (JSON)
|
||
schauplatz-card.html gelbe Card (mit data-Attributen für JS-Filter)
|
||
layouts/schauplaetze/ list.html (Explorer) + single.html (Detail mit Sidebar)
|
||
layouts/_default/term.html Kategorie-Seite (gefilterter Explorer)
|
||
assets/js/map.js Leaflet: Cluster, Kategorie-Filter, Textsuche, Card↔Marker
|
||
static/vendor/ leaflet, markercluster, uikit (alle lokal)
|
||
```
|
||
|
||
## Einen Schauplatz anlegen
|
||
|
||
Neuer Ordner `content/schauplaetze/<slug>/index.md`:
|
||
|
||
```yaml
|
||
---
|
||
title: "Titel"
|
||
subtitle: "Namen / Kurzkontext"
|
||
date: 2004-02-25
|
||
kategorien: ["Mordanschläge"] # muss zu data/kategorien.yaml passen
|
||
lat: 54.1104949
|
||
lng: 12.1544098
|
||
address: "Straße Nr, PLZ Ort"
|
||
datum: "25.02.2004" # optionales Anzeige-Datum in der Sidebar
|
||
quelle: "Quellenangabe"
|
||
featured: true # optional → „Tipp!"-Markierung
|
||
---
|
||
|
||
Fließtext …
|
||
```
|
||
|
||
Der Punkt erscheint automatisch auf allen Karten (Start, Kategorie) und bekommt
|
||
eine Detailseite mit Mini-Karte + „Anfahrt per OpenStreetMap". Ein Bild
|
||
`cover.jpg` im selben Ordner wird als Card-/Kopfbild genutzt.
|
||
|
||
## Karte / Kacheln
|
||
|
||
Standard: OpenStreetMap. Eigener Tile-Server (OSM-Usage-Policy!) in `hugo.toml`
|
||
unter `[params.map]` (`tileURL`, `attribution`). 118 Marker werden per
|
||
Leaflet.markercluster gebündelt; Farbe = Kategorie (`data/kategorien.yaml`).
|
||
|
||
## Externe Quellen
|
||
|
||
Die `quelle`-Angabe eines Schauplatzes wird auf der Detailseite unter „Externe
|
||
Quellen" ausgegeben; enthaltene URLs werden automatisch zu anklickbaren Links
|
||
(öffnen in neuem Tab, `rel="noopener"`) — umgesetzt über das Partial
|
||
[`themes/op-dz/layouts/partials/linkify.html`](themes/op-dz/layouts/partials/linkify.html).
|
||
|
||
## Kiosk-Modus
|
||
|
||
Für den Ausstellungs-/Terminalbetrieb lässt sich die Seite über einen
|
||
URL-Parameter „verriegeln":
|
||
|
||
```
|
||
?kiosk=true Kiosk-Modus aktivieren (auch ?kiosk=1)
|
||
?kiosk=false Kiosk-Modus verlassen (auch ?kiosk=0)
|
||
```
|
||
|
||
Ist der Modus aktiv, werden **externe Links** (anderer Host) sowie
|
||
`mailto:`/`tel:`-Links **unklickbar** gemacht — der Linktext bleibt lesbar, wirkt
|
||
aber wie normaler Fließtext. Die **interne Navigation bleibt erhalten**, damit
|
||
Karte und Schauplätze weiter erkundet werden können.
|
||
|
||
Der Modus wird beim ersten Aufruf mit `?kiosk=true` gesetzt und bleibt für die
|
||
**gesamte Browser-Session** aktiv (auch beim Weiterklicken ohne den Parameter);
|
||
verlassen wird er mit `?kiosk=false`. Logik:
|
||
[`assets/js/kiosk.js`](assets/js/kiosk.js) (global auf allen Seiten geladen).
|
||
|
||
## Erneut importieren
|
||
|
||
Der Import-Script (WP-Job-Manager-AJAX `jm-ajax/get_listings/` + Detailseiten)
|
||
liegt unter `scratchpad/import.py`. Erneut ausführbar, überschreibt die Bundles
|
||
unter `content/schauplaetze/` (das `_index.md` bleibt).
|