WvdS.DokuWiki.Cond Plugin

Vtičnik: wvdscond
Verzija: 1.0.0
Imenski prostor: lib/plugins/wvdscond/
Avtor: Wolfgang van der Stille zeljko.petrusic@outlook.de
Licenca: GPL 2


Migracija iz wvdsif: Ta vtičnik nadomešča stari vtičnik wvdsif in ga razširja s funkcionalnostjo preusmeritev. Obstoječa sintaksa <ifgroup>, <ifnotgroup> in <iflang> ostaja popolnoma združljiva.

Definicija

Vtičnik wvdscond združuje pogojno prikazovanje vsebine in strežniške preusmeritve v enem vtičniku. Ponuja:

  • Pogojne oznake - <ifgroup>, <ifnotgroup>, <iflang>
  • Preusmeritve - redirect_target s podporo spremenljivk
  • Negacija - <ifgroup !guest> ali <ifnotgroup guest>

Primeri uporabe

  • Vsebina na podlagi pravic - Različna vsebina za goste, uporabnike, administratorje
  • Večjezične začetne strani - Jezikovno specifična pozdravna sporočila in vsebina
  • Samodejna jezikovna preusmeritev - Preusmeritev na podlagi jezika brskalnika
  • Preusmeritve po prijavi - Preusmeritev po uspešni prijavi
  • Pogojne preusmeritve - Preusmeritve samo za določene skupine

Sintaksa

ifgroup - Po uporabniški skupini

<ifgroup imeskupine>Vsebina za to skupino</ifgroup>
<ifgroup skupina1,skupina2>Vsebina za več skupin</ifgroup>
<ifgroup !guest>Vsebina za NE-goste</ifgroup>

ifnotgroup - Negacija

<ifnotgroup guest>Vsebina za prijavljene uporabnike</ifnotgroup>
<ifnotgroup admin>Vsebina za ne-administratorje</ifnotgroup>

iflang - Po jeziku brskalnika

<iflang jezikovna_koda>Vsebina za ta jezik</iflang>
<iflang koda1,koda2>Vsebina za več jezikov</iflang>
<iflang *>Privzeta vsebina (vedno prikazana)</iflang>

wvds:redirect - Strežniška preusmeritev

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

Spremenljivke za preusmeritev

Spremenljivka Nadomeščena z Primer
{lang} Jezik brskalnika de, en, sl
{group} Prva uporabniška skupina user, admin, vip
{user} Uporabniško ime wvds
{ns} Trenutni imenski prostor de:docs

Parametri preusmeritve

Parameter Tip Opis
target Obvezno Ciljna stran (Page-ID ali s spremenljivkami)
ifgroup Opcijsko Preusmeritev samo za to skupino
ifnotgroup Opcijsko Preusmeritev samo če NI v skupini

Parametri skupin

Parameter Tip Opis
guest vnaprej določen Neprijavljeni obiskovalci
user vnaprej določen Vsi prijavljeni uporabniki
admin vnaprej določen Administratorji
[imeskupine] uporabniško določen Katerakoli skupina definirana v DokuWiki

Primeri

Primer 1: Jezikovna preusmeritev

Zahteva: Začetna stran samodejno preusmeri na jezik brskalnika.

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

Rezultat:

  • Brskalnik v nemščini: Preusmeritev na de:start
  • Brskalnik v angleščini: Preusmeritev na en:start
  • Brskalnik v slovenščini: Preusmeritev na sl:start

Primer 2: Preusmeritev po prijavi

Zahteva: Gostje so preusmerjeni na javno stran, prijavljeni uporabniki ostanejo.

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

Rezultat:

  • Gost: Preusmeritev na pub:start
  • Prijavljen: Brez preusmeritve

Primer 3: VIP območje

Zahteva: Ne-VIP uporabniki so preusmerjeni na informacijsko stran.

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

<ifgroup vip,premium>
===== VIP Območje =====
Dobrodošli v ekskluzivnem območju!
</ifgroup>

Primer 4: Večjezična začetna stran

Zahteva: Pozdravna sporočila v različnih jezikih.

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

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

<iflang sl>
===== Dobrodošli =====
To je naša baza znanja v slovenščini.
</iflang>

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

Primer 5: Admin navigacija

Zahteva: Admin povezave so vidne samo administratorjem.

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

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

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

Delovanje

Obdelava preusmeritve

1. Prepoznava vzorca
   └── Najde {{wvds:redirect ...}}

2. Preverjanje pogojev (če obstajajo)
   ├── ifgroup: Preveri članstvo v skupini
   └── ifnotgroup: Preveri NE-članstvo

3. Nadomeščanje spremenljivk
   ├── {lang} → Jezik brskalnika
   ├── {user} → Uporabniško ime
   ├── {group} → Prva skupina
   └── {ns} → Trenutni imenski prostor

4. Izvedba preusmeritve
   ├── HTTP 301/302 glava (prednostno)
   ├── Meta-Refresh (rezerva)
   └── JavaScript (rezerva)

Varnostni nasveti

  • Preusmeritve uporabljajo wl() za notranje URL-je (preprečevanje odprtih preusmeritev)
  • Zunanje URL-je niso dovoljene (zaščita CWE-601)
  • Vsi izpisi so escaped z hsc() (zaščita pred XSS)

Konfiguracija

Vtičnik ne potrebuje posebne konfiguracije. Prepoznavanje skupin uporablja standardne DokuWiki-ACL skupine.

Pomembna opomba

Strani s pogojnimi oznakami naj uporabljajo , da se vsebina pri vsakem obisku znova izriše.

Migracija iz wvdsif

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

Opombe o verzijah

Verzija Datum Spremembe
1.0.0 2026-01-29 Prva izdaja

Glej tudi


Tehnična referenca

Razred: syntax_plugin_wvdscond

Datoteka: lib/plugins/wvdscond/syntax.php

Metoda Opis
getType() Vrne substition
getSort() Vrne 100
connectTo($mode) Registrira ifgroup, ifnotgroup, iflang, redirect vzorce
handle($match, …) Razčleni oznako in izvleče pogoj
render($mode, …) Vrne vsebino, preusmeritev ali prazno

Razred: helper_plugin_wvdscond

Datoteka: lib/plugins/wvdscond/helper.php

Metoda Opis
getUserGroups() Vrne vse skupine uporabnika
checkGroup($groups) Preveri ali je uporabnik v skupini
checkNotGroup($groups) Preveri ali uporabnik NI v skupini
detectBrowserLang() Zazna jezik brskalnika
checkLang($langs) Preveri ujemanje jezika
replaceVariables($target) Nadomesti {lang}, {user}, itd.

wvdscond PluginAudit bestanden • 2026-03-30

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
 
Zuletzt geändert: dne 29.01.2026 ob 19:49