====== WvdS.DokuWiki.If Vtičnik ====== **Vtičnik:** wvdsif\\ **Verzija:** 1.0.0\\ **Imenski prostor:** ''lib/plugins/wvdsif/''\\ **Avtor:** Wolfgang van der Stille \\ **Licenca:** GPL 2 ---- ===== Definicija ===== Vtičnik **wvdsif** omogoča pogojno prikazovanje vsebine glede na uporabniške skupine ali jezik brskalnika. Zagotavlja dva tipa oznak: '''' za prikaz glede na skupino in '''' za prikaz glede na jezik. ===== Primeri uporabe ===== * **Vsebina glede na dovoljenja** - Različna vsebina za goste, uporabnike, administratorje * **Večjezične vstopne strani** - Jezikovno specifični pozdravi in vsebina * **Skrbniški razdelki** - Skrite povezave vidne samo administratorjem * **Nadomestna vsebina** - Privzeta vsebina ko se noben jezik ne ujema * **VIP območja** - Ekskluzivna vsebina za določene skupine ---- ===== Sintaksa ===== ==== ifgroup - Po uporabniški skupini ==== Vsebina za to skupino Vsebina za več skupin ==== iflang - Po jeziku brskalnika ==== Vsebina za ta jezik Vsebina za več jezikov Nadomestna vsebina (vedno prikazana) ---- ===== Parametri ===== ==== ifgroup parametri ==== ^ 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 | ==== iflang parametri ==== ^ 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) | ---- ===== Primeri ===== ==== Primer 1: Gostje vs. Prijavljeni ==== **Zahteva:** Različen pozdrav za goste in prijavljene uporabnike. ===== Dobrodošli! ===== Prosimo [[?do=login|prijavite se]] za popoln dostop. ===== Dobrodošli nazaj! ===== Imate dostop do vse dokumentacije. **Rezultat:** * Neprijavljen: Prikaže poziv k prijavi * Prijavljen: Prikaže sporočilo dobrodošlice ==== Primer 2: Skrbniški razdelek ==== **Zahteva:** Skrbniške povezave vidne samo administratorjem. ===== Administracija ===== * [[admin:dashboard|Nadzorna plošča]] * [[admin:users|Upravljanje uporabnikov]] * [[admin:plugins|Upravljanje vtičnikov]] * [[admin:config|Konfiguracija]] **Rezultat:** * Administrator: Vidi vse skrbniške povezave * Drugi uporabniki: Blok je neviden ==== Primer 3: Večjezična vstopna stran ==== **Zahteva:** Pozdrav v jeziku brskalnika obiskovalca. ===== 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 above. **Rezultat:** * Brskalnik nastavljen na nemščino: Prikaže nemški blok * Brskalnik nastavljen na angleščino: Prikaže angleški blok * Brskalnik nastavljen na slovenščino: Prikaže slovenski blok * Drugi jeziki: Prikaže nadomestni blok ==== Primer 4: Večjezična stran napake ==== **Zahteva:** Stran 404 v jeziku obiskovalca. ===== Seite nicht gefunden ===== Die angeforderte Seite existiert nicht. [[start|Zurück zur Startseite]] ===== Page Not Found ===== The requested page does not exist. [[start|Back to homepage]] ===== Stran ni najdena ===== Zahtevana stran ne obstaja. [[start|Nazaj na domačo stran]] ===== Napaka 404 ===== Stran ni najdena. [[start|Domov]] ==== Primer 5: VIP vsebina ==== **Zahteva:** Premium vsebina samo za VIP člane. ===== Ekskluzivno območje ===== Tukaj najdete premium dokumentacijo in napredne vodiče. * [[premium:advanced|Napredne funkcije]] * [[premium:tutorials|Ekskluzivni vodiči]] ===== Premium območje ===== To območje je rezervirano za VIP člane. [[kontakt|Zahtevaj nadgradnjo]] ==== Primer 6: Kombinirani pogoji ==== **Zahteva:** Več skupin v stranski vrstici. ~~NOCACHE~~ ===== Navigacija ===== * [[start|Domov]] * [[docs:index|Dokumentacija]] * [[interno:index|Interno območje]] * [[admin:index|Administracija]] * [[?do=login|Prijava]] ---- ===== Kako deluje ===== ==== Procesni cevovod ==== 1. Zaznava oznak └── Najde vse ... in ... 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 └── se preveri zadnji (samo če se noben drug jezik ne ujema) ==== Zaznava jezika ==== 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 | ---- ===== Konfiguracija ===== Vtičnik ne zahteva posebne konfiguracije. Zaznava skupin uporablja standardne DokuWiki ACL skupine. ==== Pomembna opomba ==== Strani z oznakami '''' ali '''' morajo uporabljati ''~~NOCACHE~~'', da se vsebina ponovno izriše ob vsaki zahtevi. ---- ===== Obravnava napak ===== ^ 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 | ---- ===== Dobre prakse ===== * **~~NOCACHE~~** vedno uporabljajte ko uporabljate ifgroup/iflang * **Nadomestna možnost z *** zagotovite za iflang * **Jasno definirajte skupine** v DokuWiki ACL * **Ne gnezdite** - oznake ne smejo biti gnezdene ena v drugi ==== Pravilno ==== Skrbniška vsebina Uporabniška vsebina ==== Nepravilno ==== Gnezdena vsebina ---- ===== Zgodovina verzij ===== ^ Verzija ^ Datum ^ Spremembe ^ | 1.0.0 | 2025-01-06 | Začetna izdaja | ---- ===== Glej tudi ===== * [[wvdslang]] - Večjezični prevodi * [[wvdschunk]] - Večkrat uporabne HTML komponente * [[flat]] - Predloga s preklopnikom jezika ---- ===== Tehnična referenca ===== ==== Razred: syntax_plugin_wvdsif ==== **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 | ==== Pomožne funkcije ==== ^ Funkcija ^ Opis ^ | ''_checkGroup($groups)'' | Preveri članstvo v skupini | | ''_checkLang($langs)'' | Preveri ujemanje jezika | | ''_getBrowserLang()'' | Izvleče jezik iz Accept-Language | ==== Uporabljene spremenljivke ==== ^ 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 | ---- {{wvds:snippet>wvds_audit_badge}} ~~DISCUSSION~~