Plugin: wvdscond
Version: 1.0.0
Namespace: lib/plugins/wvdscond/
Autor: Wolfgang van der Stille zeljko.petrusic@outlook.de
Lizenz: GPL 2
wvdsif Plugin und erweitert es um Redirect-Funktionalitaet.
Die bestehende Syntax <ifgroup>, <ifnotgroup> und <iflang> bleibt vollstaendig kompatibel.
Das wvdscond Plugin vereint bedingte Inhaltsanzeige und Server-seitige Redirects in einem Plugin. Es bietet:
<ifgroup>, <ifnotgroup>, <iflang>redirect_target mit Variablen-Unterstuetzung<ifgroup !guest> oder <ifnotgroup guest><ifgroup gruppenname>Inhalt fuer diese Gruppe</ifgroup> <ifgroup gruppe1,gruppe2>Inhalt fuer mehrere Gruppen</ifgroup> <ifgroup !guest>Inhalt fuer NICHT-Gaeste</ifgroup>
<ifnotgroup guest>Inhalt fuer angemeldete Benutzer</ifnotgroup> <ifnotgroup admin>Inhalt fuer Nicht-Admins</ifnotgroup>
<iflang sprachcode>Inhalt fuer diese Sprache</iflang> <iflang code1,code2>Inhalt fuer mehrere Sprachen</iflang> <iflang *>Fallback-Inhalt (immer angezeigt)</iflang>
{{wvds:redirect target="de:start"}}
{{wvds:redirect target="{lang}:start"}}
{{wvds:redirect target="int:home" ifgroup="user"}}
{{wvds:redirect target="{lang}:pub:start" ifnotgroup="user"}}
| Variable | Ersetzt durch | Beispiel |
|---|---|---|
{lang} | Browser-Sprache | de, en, sl |
{group} | Erste Benutzergruppe | user, admin, vip |
{user} | Benutzername | wvds |
{ns} | Aktueller Namespace | de:docs |
| Parameter | Typ | Beschreibung |
|---|---|---|
target | Pflicht | Ziel-Seite (Page-ID oder mit Variablen) |
ifgroup | Optional | Redirect nur fuer diese Gruppe(n) |
ifnotgroup | Optional | Redirect nur wenn NICHT in Gruppe(n) |
| Parameter | Typ | Beschreibung |
|---|---|---|
guest | vordefiniert | Nicht angemeldete Besucher |
user | vordefiniert | Alle angemeldeten Benutzer |
admin | vordefiniert | Administratoren |
[gruppenname] | benutzerdefiniert | Jede in DokuWiki definierte Gruppe |
Anforderung: Startseite leitet automatisch zur Browser-Sprache weiter.
{{wvds:redirect target="{lang}:start"}}
Ergebnis:
de:starten:startsl:startAnforderung: Gaeste werden zu einer oeffentlichen Seite geleitet, angemeldete Benutzer bleiben.
{{wvds:redirect target="pub:start" ifnotgroup="user"}}
Ergebnis:
pub:startAnforderung: Nicht-VIPs werden zur Info-Seite weitergeleitet.
{{wvds:redirect target="info:upgrade" ifnotgroup="vip,premium"}}
<ifgroup vip,premium>
===== VIP Bereich =====
Willkommen im exklusiven Bereich!
</ifgroup>
Anforderung: Begruessungen in verschiedenen Sprachen.
~~NOCACHE~~ <iflang de> ===== Willkommen ===== Dies ist unsere Wissensdatenbank auf Deutsch. </iflang> <iflang en> ===== Welcome ===== This is our knowledge base in English. </iflang> <iflang *> ===== Welcome ===== Please select your language. </iflang>
Anforderung: Admin-Links nur fuer Admins sichtbar.
~~NOCACHE~~ ===== Navigation ===== * [[.:start|Startseite]] * [[.:docs:index|Dokumentation]] <ifnotgroup guest> * [[.:intern:index|Interner Bereich]] </ifnotgroup> <ifgroup admin> * [[.:admin:index|Administration]] </ifgroup>
1. Pattern-Erkennung
└── Findet {{wvds:redirect ...}}
2. Bedingungspruefung (falls vorhanden)
├── ifgroup: Prueft Gruppenzugehoerigkeit
└── ifnotgroup: Prueft NICHT-Zugehoerigkeit
3. Variablen-Ersetzung
├── {lang} → Browser-Sprache
├── {user} → Benutzername
├── {group} → Erste Gruppe
└── {ns} → Aktueller Namespace
4. Redirect-Ausfuehrung
├── HTTP 301/302 Header (bevorzugt)
├── Meta-Refresh (Fallback)
└── JavaScript (Fallback)
Das Plugin benoetigt keine spezielle Konfiguration. Die Gruppenerkennung nutzt die Standard-DokuWiki-ACL-Gruppen.
verwenden, damit der Inhalt bei jedem Aufruf neu gerendert wird.
| Alt (wvdsif) | Neu (wvdscond) | Status |
|---|---|---|
<ifgroup user> | <ifgroup user> | Kompatibel |
<iflang de> | <iflang de> | Kompatibel |
| - | <ifnotgroup guest> | NEU |
| - | redirect | NEU |
| Version | Datum | Aenderungen |
|---|---|---|
| 1.0.0 | 2026-01-29 | Erstveroeffentlichung |
Datei: lib/plugins/wvdscond/syntax.php
| Methode | Beschreibung |
|---|---|
getType() | Gibt substitution zurück |
getSort() | Gibt 100 zurueck |
connectTo($mode) | Registriert ifgroup, ifnotgroup, iflang, redirect Pattern |
handle($match, …) | Parst Tag und extrahiert Bedingung |
render($mode, …) | Gibt Inhalt, Redirect oder leer zurueck |
Datei: lib/plugins/wvdscond/helper.php
| Methode | Beschreibung |
|---|---|
getUserGroups() | Gibt alle Gruppen des Benutzers zurueck |
checkGroup($groups) | Prueft ob Benutzer in Gruppe ist |
checkNotGroup($groups) | Prueft ob Benutzer NICHT in Gruppe ist |
detectBrowserLang() | Erkennt Browser-Sprache |
checkLang($langs) | Prueft Sprachuebereinstimmung |
replaceVariables($target) | Ersetzt {lang}, {user}, etc. |