From 9f8eed31930c63d093a0c2af71f6a5a358e609f2 Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Fri, 14 Aug 2026 12:00:00 +0000 Subject: [PATCH] fix(wikijs): make sidebar nav targets absolute The default theme renders sidebar links with href=target verbatim, without targetType or leading-slash handling. Page targets stored without a leading slash resolved relatively (e.g. from /betrieb/x, 'Sicherheit' went to /betrieb/betrieb/sicherheit -> 404), and the home item's empty target was a dead link. Prefix page targets with '/' and point home at '/'. Co-Authored-By: Claude Opus 4.8 --- apps/production/wikijs-config.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/production/wikijs-config.py b/apps/production/wikijs-config.py index 0294668..fb80f19 100644 --- a/apps/production/wikijs-config.py +++ b/apps/production/wikijs-config.py @@ -268,8 +268,13 @@ def set_navigation(jwt: str): # Admins); die Seiten sind ohnehin per checkAccess für Anwender gesperrt. admin = [1, 3] def lnk(i, label, icon, path, g=None): + # Das Default-Theme rendert den Sidebar-Link wortwörtlich als href=target (ohne + # targetType-/Slash-Behandlung). Page-Targets MUESSEN daher absolut sein, sonst + # loesen sie relativ auf (von /betrieb/x aus -> /betrieb/ -> 404). Wiki.js' + # eigener Editor speichert //; hier / (namespacing=false), passend + # zu allen Inhalts-Links. return {"id": i, "kind": "link", "label": label, "icon": icon, - "targetType": "page", "target": path, + "targetType": "page", "target": "/" + path, "visibilityMode": "restricted" if g else "all", "visibilityGroups": g or []} def hdr(i, label, g=None): return {"id": i, "kind": "header", "label": label, "icon": "", @@ -277,7 +282,7 @@ def set_navigation(jwt: str): "visibilityMode": "restricted" if g else "all", "visibilityGroups": g or []} items = [ {"id": "home", "kind": "link", "label": "Startseite", "icon": "mdi-home", - "targetType": "home", "target": "", "visibilityMode": "all", "visibilityGroups": []}, + "targetType": "home", "target": "/", "visibilityMode": "all", "visibilityGroups": []}, hdr("hanw", "Anwenderdokumentation"), lnk("a1", "Registrierung", "mdi-account-plus", "anwender/registrierung"), lnk("a2", "Anmelden & Konto", "mdi-login", "anwender/anmelden-und-konto"),