Inhaltsverzeichnis

WvdS.DokuWiki.Cond Plugin

Plugin: wvdscond
Version: 1.0.0
Namespace: lib/plugins/wvdscond/
Autor: Wolfgang van der Stille zeljko.petrusic@outlook.de
Lizenz: GPL 2


Migration von wvdsif: Dieses Plugin ersetzt das alte wvdsif Plugin und erweitert es um Redirect-Funktionalitaet. Die bestehende Syntax <ifgroup>, <ifnotgroup> und <iflang> bleibt vollstaendig kompatibel.

Definition

Das wvdscond Plugin vereint bedingte Inhaltsanzeige und Server-seitige Redirects in einem Plugin. Es bietet:

Anwendungsfaelle


Syntax

ifgroup - Nach Benutzergruppe

<ifgroup gruppenname>Inhalt fuer diese Gruppe</ifgroup>
<ifgroup gruppe1,gruppe2>Inhalt fuer mehrere Gruppen</ifgroup>
<ifgroup !guest>Inhalt fuer NICHT-Gaeste</ifgroup>

ifnotgroup - Negation

<ifnotgroup guest>Inhalt fuer angemeldete Benutzer</ifnotgroup>
<ifnotgroup admin>Inhalt fuer Nicht-Admins</ifnotgroup>

iflang - Nach Browser-Sprache

<iflang sprachcode>Inhalt fuer diese Sprache</iflang>
<iflang code1,code2>Inhalt fuer mehrere Sprachen</iflang>
<iflang *>Fallback-Inhalt (immer angezeigt)</iflang>

wvds:redirect - Server-seitige Weiterleitung

{{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"}}

Redirect-Variablen

Variable Ersetzt durch Beispiel
{lang} Browser-Sprache de, en, sl
{group} Erste Benutzergruppe user, admin, vip
{user} Benutzername wvds
{ns} Aktueller Namespace de:docs

Redirect-Parameter

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)

Gruppen-Parameter

Parameter Typ Beschreibung
guest vordefiniert Nicht angemeldete Besucher
user vordefiniert Alle angemeldeten Benutzer
admin vordefiniert Administratoren
[gruppenname] benutzerdefiniert Jede in DokuWiki definierte Gruppe

Beispiele

Beispiel 1: Sprachbasierter Redirect

Anforderung: Startseite leitet automatisch zur Browser-Sprache weiter.

{{wvds:redirect target="{lang}:start"}}

Ergebnis:

Beispiel 2: Login-Redirect

Anforderung: Gaeste werden zu einer oeffentlichen Seite geleitet, angemeldete Benutzer bleiben.

{{wvds:redirect target="pub:start" ifnotgroup="user"}}

Ergebnis:

Beispiel 3: VIP-Bereich

Anforderung: 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>

Beispiel 4: Mehrsprachige Startseite

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>

Beispiel 5: Admin-Navigation

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>

Funktionsweise

Redirect-Verarbeitung

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)

Sicherheitshinweise


Konfiguration

Das Plugin benoetigt keine spezielle Konfiguration. Die Gruppenerkennung nutzt die Standard-DokuWiki-ACL-Gruppen.

Wichtiger Hinweis

Seiten mit bedingten Tags sollten verwenden, damit der Inhalt bei jedem Aufruf neu gerendert wird.

Migration von wvdsif

Alt (wvdsif) Neu (wvdscond) Status
<ifgroup user> <ifgroup user> Kompatibel
<iflang de> <iflang de> Kompatibel
- <ifnotgroup guest> NEU
- redirect NEU

Versionshinweise

Version Datum Aenderungen
1.0.0 2026-01-29 Erstveroeffentlichung

Siehe auch


Technische Referenz

Klasse: syntax_plugin_wvdscond

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

Klasse: helper_plugin_wvdscond

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.

wvdscond PluginAudit bestanden • 2026-03-30