WvdS.DokuWiki.Cond Dodatak

Dodatak: wvdscond
Verzija: 1.0.0
Imenski prostor: lib/plugins/wvdscond/
Autor: Wolfgang van der Stille zeljko.petrusic@outlook.de
Licenca: GPL 2


Migracija iz wvdsif: Ovaj dodatak zamjenjuje stari dodatak wvdsif i proširuje ga funkcijom preusmjeravanja. Postojeća sintaksa <ifgroup>, <ifnotgroup> i <iflang> ostaje potpuno kompatibilna.

Definicija

Dodatak wvdscond kombinira uvjetno prikazivanje sadržaja i serverska preusmjeravanja u jednom dodatku. Pruža:

  • Uvjetne oznake - <ifgroup>, <ifnotgroup>, <iflang>
  • Preusmjeravanja - redirect_target s podrškom varijabli
  • Negacija - <ifgroup !guest> ili <ifnotgroup guest>

Primjeri uporabe

  • Sadržaj temeljen na dozvolama - Različit sadržaj za goste, korisnike, administratore
  • Višejezične početne stranice - Jezično specifična pozdravljanja i sadržaj
  • Automatsko jezično preusmjeravanje - Preusmjeravanje na temelju jezika preglednika
  • Preusmjeravanja nakon prijave - Preusmjeravanje nakon uspješne prijave
  • Uvjetna preusmjeravanja - Preusmjeravanja samo za određene grupe

Sintaksa

ifgroup - Po korisničkoj grupi

<ifgroup imegrupe>Sadržaj za ovu grupu</ifgroup>
<ifgroup grupa1,grupa2>Sadržaj za više grupa</ifgroup>
<ifgroup !guest>Sadržaj za NE-goste</ifgroup>

ifnotgroup - Negacija

<ifnotgroup guest>Sadržaj za prijavljene korisnike</ifnotgroup>
<ifnotgroup admin>Sadržaj za ne-administratore</ifnotgroup>

iflang - Po jeziku preglednika

<iflang jezicni_kod>Sadržaj za ovaj jezik</iflang>
<iflang kod1,kod2>Sadržaj za više jezika</iflang>
<iflang *>Rezervni sadržaj (uvijek prikazan)</iflang>

wvds:redirect - Serversko preusmjeravanje

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

Varijable za preusmjeravanje

Varijabla Zamjenjuje se s Primjer
{lang} Jezik preglednika de, en, sl, hr
{group} Prva korisnička grupa user, admin, vip
{user} Korisničko ime wvds
{ns} Trenutni imenski prostor de:docs

Parametri preusmjeravanja

Parametar Tip Opis
target Obavezno Ciljna stranica (Page-ID ili s varijablama)
ifgroup Opcionalno Preusmjeravanje samo za ovu grupu
ifnotgroup Opcionalno Preusmjeravanje samo ako NIJE u grupi

Parametri grupa

Parametar Tip Opis
guest unaprijed definirano Neprijavljeni posjetitelji
user unaprijed definirano Svi prijavljeni korisnici
admin unaprijed definirano Administratori
[imegrupe] korisnički definirano Bilo koja grupa definirana u DokuWiki

Primjeri

Primjer 1: Jezično preusmjeravanje

Zahtjev: Početna stranica automatski preusmjerava na jezik preglednika.

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

Rezultat:

  • Preglednik na njemačkom: Preusmjeravanje na de:start
  • Preglednik na engleskom: Preusmjeravanje na en:start
  • Preglednik na hrvatskom: Preusmjeravanje na hr:start

Primjer 2: Preusmjeravanje nakon prijave

Zahtjev: Gosti se preusmjeravaju na javnu stranicu, prijavljeni korisnici ostaju.

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

Rezultat:

  • Gost: Preusmjeravanje na pub:start
  • Prijavljen: Bez preusmjeravanja

Primjer 3: VIP područje

Zahtjev: Ne-VIP korisnici se preusmjeravaju na info stranicu.

{{wvds:redirect target="info:upgrade" ifnotgroup="vip,premium"}}

<ifgroup vip,premium>
===== VIP Područje =====
Dobrodošli u ekskluzivno područje!
</ifgroup>

Primjer 4: Višejezična početna stranica

Zahtjev: Pozdravi na različitim jezicima.

~~NOCACHE~~
<iflang de>
===== Willkommen =====
Dies ist unsere Wissensdatenbank auf Deutsch.
</iflang>

<iflang en>
===== Welcome =====
This is our knowledge base in English.
</iflang>

<iflang hr>
===== Dobrodošli =====
Ovo je naša baza znanja na hrvatskom.
</iflang>

<iflang *>
===== Welcome =====
Please select your language.
</iflang>

Primjer 5: Admin navigacija

Zahtjev: Admin poveznice vidljive samo administratorima.

~~NOCACHE~~
===== Navigacija =====
  * [[.:start|Početna stranica]]
  * [[.:docs:index|Dokumentacija]]

<ifnotgroup guest>
  * [[.:intern:index|Interno područje]]
</ifnotgroup>

<ifgroup admin>
  * [[.:admin:index|Administracija]]
</ifgroup>

Način rada

Obrada preusmjeravanja

1. Prepoznavanje uzorka
   └── Pronalazi {{wvds:redirect ...}}

2. Provjera uvjeta (ako postoji)
   ├── ifgroup: Provjerava članstvo u grupi
   └── ifnotgroup: Provjerava NE-članstvo

3. Zamjena varijabli
   ├── {lang} → Jezik preglednika
   ├── {user} → Korisničko ime
   ├── {group} → Prva grupa
   └── {ns} → Trenutni imenski prostor

4. Izvršavanje preusmjeravanja
   ├── HTTP 301/302 zaglavlje (preferirano)
   ├── Meta-Refresh (rezerva)
   └── JavaScript (rezerva)

Sigurnosne napomene

  • Preusmjeravanja koriste wl() za interne URL-ove (sprječavanje otvorenih preusmjeravanja)
  • Vanjske URL adrese nisu dozvoljene (zaštita CWE-601)
  • Svi izlazi su escaped s hsc() (zaštita od XSS)

Konfiguracija

Dodatak ne zahtijeva posebnu konfiguraciju. Prepoznavanje grupa koristi standardne DokuWiki ACL grupe.

Važna napomena

Stranice s uvjetnim oznakama trebaju koristiti kako bi se sadržaj ponovno renderirao pri svakom zahtjevu.

Migracija iz wvdsif

Staro (wvdsif) Novo (wvdscond) Status
<ifgroup user> <ifgroup user> Kompatibilno
<iflang de> <iflang de> Kompatibilno
- <ifnotgroup guest> NOVO
- redirect NOVO

Napomene o verziji

Verzija Datum Promjene
1.0.0 2026-01-29 Prva izdanja

Vidi također


Tehnička referenca

Klasa: syntax_plugin_wvdscond

Datoteka: lib/plugins/wvdscond/syntax.php

Metoda Opis
getType() Vraća substition
getSort() Vraća 100
connectTo($mode) Registrira ifgroup, ifnotgroup, iflang, redirect uzorke
handle($match, …) Parsira oznaku i izvlači uvjet
render($mode, …) Vraća sadržaj, preusmjeravanje ili prazno

Klasa: helper_plugin_wvdscond

Datoteka: lib/plugins/wvdscond/helper.php

Metoda Opis
getUserGroups() Vraća sve grupe korisnika
checkGroup($groups) Provjerava je li korisnik u grupi
checkNotGroup($groups) Provjerava je li korisnik NIJE u grupi
detectBrowserLang() Detektira jezik preglednika
checkLang($langs) Provjerava podudaranje jezika
replaceVariables($target) Zamjenjuje {lang}, {user}, itd.

wvdscond DodatakAudit bestanden • 2026-03-30

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
 
Zuletzt geändert: 29.01.2026. u 19:55