Vtičnik: wvdsif
Verzija: 1.0.0
Imenski prostor: lib/plugins/wvdsif/
Avtor: Wolfgang van der Stille zeljko.petrusic@outlook.de
Licenca: GPL 2
Vtičnik wvdsif omogoča pogojno prikazovanje vsebine glede na uporabniške skupine ali jezik brskalnika. Zagotavlja dva tipa oznak: <ifgroup> za prikaz glede na skupino in <iflang> za prikaz glede na jezik.
<ifgroup imeskupine>Vsebina za to skupino</ifgroup> <ifgroup skupina1,skupina2>Vsebina za več skupin</ifgroup>
<iflang jezikovnakoda>Vsebina za ta jezik</iflang> <iflang koda1,koda2>Vsebina za več jezikov</iflang> <iflang *>Nadomestna vsebina (vedno prikazana)</iflang>
| 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 |
| Parameter | Tip | Opis |
|---|---|---|
de | ISO 639-1 | Nemščina |
en | ISO 639-1 | Angleščina |
sl | ISO 639-1 | Slovenščina |
fr | ISO 639-1 | Francoščina |
es | ISO 639-1 | Španščina |
it | ISO 639-1 | Italijanščina |
* | Nadomestni znak | Vsi jeziki (nadomestna možnost) |
Zahteva: Različen pozdrav za goste in prijavljene uporabnike.
<ifgroup guest> ===== Dobrodošli! ===== Prosimo [[?do=login|prijavite se]] za popoln dostop. </ifgroup> <ifgroup user> ===== Dobrodošli nazaj! ===== Imate dostop do vse dokumentacije. </ifgroup>
Rezultat:
Zahteva: Skrbniške povezave vidne samo administratorjem.
<ifgroup admin> ===== Administracija ===== * [[admin:dashboard|Nadzorna plošča]] * [[admin:users|Upravljanje uporabnikov]] * [[admin:plugins|Upravljanje vtičnikov]] * [[admin:config|Konfiguracija]] </ifgroup>
Rezultat:
Zahteva: Pozdrav v jeziku brskalnika obiskovalca.
<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 above. </iflang>
Rezultat:
Zahteva: Stran 404 v jeziku obiskovalca.
<iflang de> ===== Seite nicht gefunden ===== Die angeforderte Seite existiert nicht. [[start|Zurück zur Startseite]] </iflang> <iflang en> ===== Page Not Found ===== The requested page does not exist. [[start|Back to homepage]] </iflang> <iflang sl> ===== Stran ni najdena ===== Zahtevana stran ne obstaja. [[start|Nazaj na domačo stran]] </iflang> <iflang *> ===== Napaka 404 ===== Stran ni najdena. [[start|Domov]] </iflang>
Zahteva: Premium vsebina samo za VIP člane.
<ifgroup vip,premium> ===== Ekskluzivno območje ===== Tukaj najdete premium dokumentacijo in napredne vodiče. * [[premium:advanced|Napredne funkcije]] * [[premium:tutorials|Ekskluzivni vodiči]] </ifgroup> <ifgroup guest,user> ===== Premium območje ===== To območje je rezervirano za VIP člane. [[kontakt|Zahtevaj nadgradnjo]] </ifgroup>
Zahteva: Več skupin v stranski vrstici.
~~NOCACHE~~ ===== Navigacija ===== * [[start|Domov]] * [[docs:index|Dokumentacija]] <ifgroup user,admin> * [[interno:index|Interno območje]] </ifgroup> <ifgroup admin> * [[admin:index|Administracija]] </ifgroup> <ifgroup guest> * [[?do=login|Prijava]] </ifgroup>
1. Zaznava oznak └── Najde vse <ifgroup>...</ifgroup> in <iflang>...</iflang> oznake 2. Preverjanje pogojev ├── ifgroup: Preveri $_SERVER['REMOTE_USER'] in članstvo v skupini └── iflang: Preveri glavo Accept-Language 3. Filtriranje vsebine ├── Pogoj izpolnjen: Vsebina se prikaže └── Pogoj ni izpolnjen: Vsebina se odstrani 4. Obdelava nadomestnega znaka └── <iflang *> se preveri zadnji (samo če se noben drug jezik ne ujema)
Jezik se zazna iz HTTP glave Accept-Language:
Accept-Language: de-DE,de;q=0.9,en;q=0.8
^^
Primarni jezik: "de"
| Primer glave | Zaznan jezik |
|---|---|
de-DE,de;q=0.9 | de |
en-US,en;q=0.9 | en |
sl-SI,sl;q=0.9 | sl |
fr-FR,en;q=0.5 | fr |
Vtičnik ne zahteva posebne konfiguracije. Zaznava skupin uporablja standardne DokuWiki ACL skupine.
<ifgroup> ali <iflang> morajo uporabljati , da se vsebina ponovno izriše ob vsaki zahtevi.
| Scenarij | Vedenje |
|---|---|
| Neznana skupina | Blok se ne prikaže |
| Neveljavna jezikovna koda | Blok se ne prikaže |
| Brez glave Accept-Language | Prikaže se samo * nadomestni znak |
| Gnezdene oznake | Zunanja oznaka ima prednost |
<ifgroup admin>Skrbniška vsebina</ifgroup> <ifgroup user>Uporabniška vsebina</ifgroup>
<ifgroup admin> <ifgroup user>Gnezdena vsebina</ifgroup> </ifgroup>
| Verzija | Datum | Spremembe |
|---|---|---|
| 1.0.0 | 2025-01-06 | Začetna izdaja |
Datoteka: lib/plugins/wvdsif/syntax.php
| Metoda | Opis |
|---|---|
getType() | Vrne substition |
getSort() | Vrne 100 |
connectTo($mode) | Registrira ifgroup in iflang vzorce |
handle($match, …) | Razčleni oznako in izvleče pogoj |
render($mode, …) | Vrne vsebino ali prazno |
| Funkcija | Opis |
|---|---|
_checkGroup($groups) | Preveri članstvo v skupini |
_checkLang($langs) | Preveri ujemanje jezika |
_getBrowserLang() | Izvleče jezik iz Accept-Language |
| Spremenljivka | Vir | Opis |
|---|---|---|
$_SERVER['REMOTE_USER'] | PHP | Uporabniško ime prijavljenega |
$USERINFO['grps'] | DokuWiki | Polje uporabniških skupin |
$_SERVER['HTTP_ACCEPT_LANGUAGE'] | HTTP | Jezikovna nastavitev brskalnika |