====== WvdS.DokuWiki.Cond Plugin ====== **Vtičnik:** wvdscond\\ **Verzija:** 1.0.0\\ **Imenski prostor:** ''lib/plugins/wvdscond/''\\ **Avtor:** Wolfgang van der Stille \\ **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 '''', '''' in '''' 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** - '''', '''', '''' * **Preusmeritve** - ''{{wvds:redirect target="..."}}'' s podporo spremenljivk * **Negacija** - '''' ali '''' ===== 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 ==== Vsebina za to skupino Vsebina za več skupin Vsebina za NE-goste ==== ifnotgroup - Negacija ==== Vsebina za prijavljene uporabnike Vsebina za ne-administratorje ==== iflang - Po jeziku brskalnika ==== Vsebina za ta jezik Vsebina za več jezikov Privzeta vsebina (vedno prikazana) ==== 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"}} ===== VIP Območje ===== Dobrodošli v ekskluzivnem območju! ==== Primer 4: Večjezična začetna stran ==== **Zahteva:** Pozdravna sporočila v različnih jezikih. ~~NOCACHE~~ ===== Willkommen ===== Dies ist unsere Wissensdatenbank auf Deutsch. ===== Welcome ===== This is our knowledge base in English. ===== Dobrodošli ===== To je naša baza znanja v slovenščini. ===== Welcome ===== Please select your language. ==== Primer 5: Admin navigacija ==== **Zahteva:** Admin povezave so vidne samo administratorjem. ~~NOCACHE~~ ===== Navigacija ===== * [[.:start|Začetna stran]] * [[.:docs:index|Dokumentacija]] * [[.:intern:index|Interno območje]] * [[.:admin:index|Administracija]] ---- ===== 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 ''~~NOCACHE~~'', da se vsebina pri vsakem obisku znova izriše. ---- ===== Migracija iz wvdsif ===== ^ Staro (wvdsif) ^ Novo (wvdscond) ^ Status ^ | '''' | '''' | Združljivo | | '''' | '''' | Združljivo | | - | '''' | NOVO | | - | ''{{wvds:redirect}}'' | NOVO | ---- ===== Opombe o verzijah ===== ^ Verzija ^ Datum ^ Spremembe ^ | 1.0.0 | 2026-01-29 | Prva izdaja | ---- ===== Glej tudi ===== * [[.:wvdsi18n]] - Vtičnik za prevode (naslednik wvdslang) * [[.:wvdssnippet]] - Ponovno uporabni HTML gradniki * [[.:flat]] - Predloga s preklopnikom jezika ---- ===== 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. | ---- [x][x][x][x] [x][x][x][x][x] [x][x][x][x][x] ~~DISCUSSION~~