Barvna shema: Riviera
Trenutno dejavna stran: start » sl » Dokumentacija » Razširitve DokuWikija (WvdS) » AcMenu Vtičnik » Referenca skladnje in API

Referenca skladnje in API

Referenca vseh javnih elementov vtičnika wkacmenu: skladnja wikija, stran vrstnega reda, nastavitve, končni točki AJAX, PHP API, razredi CSS, piškotek. Uvod in koncepti: Pregled.

Skladnja menija

Podpis:

{{wk:acmenu>}}
{{wk:acmenu>parameter=vrednost|parameter=vrednost|...}}

Povzetek: Izriše meni v obliki harmonike na mestu, kjer je zapisan (običajno na strani stranske vrstice). Oznake ~~NOCACHE~~ ne potrebujete: oznaka menija sama izklopi predpomnjenje strani.

Parametri (ločeni z navpičnico; > za wk:acmenu je obvezen, sicer DokuWiki zapis razume kot skladnjo za medije in izriše pokvarjeno povezavo):

Parameter Vrednosti Brez navedbe Opis
ns ID imenskega prostora ali auto zaznava stranske vrstice Fiksni osnovni imenski prostor; auto = osredotočeni pogled na trenutni imenski prostor in sosednje imenske prostore z berljivo vsebino na jezikovni ravni
startns current izklopljeno Osredotočeni pogled: samo trenutni imenski prostor in povezava »navzgor«, ki upošteva ACL
dynamic število ≥ 0 nastavitev default_depth Globina prednalaganja: N > 0 vnaprej naloži N ravni, globlje se naložijo prek AJAX ob razširitvi; 0 = neomejeno prednalaganje (brez lenega nalaganja)
icons fa, none none fa izriše ikone FontAwesome (mapa, stran, zbirka, zunanja povezava, navzgor)

Opombe:

  • Brez ns/startns vtičnik navzgor poišče stran sidebar* in meni začne pri njenem imenskem prostoru.
  • V osredotočenih načinih (ns=auto, startns=current) zbirka nikoli ne postane osnova menija; osnova se premakne v nadrejeni imenski prostor najbolj zunanje zbirke.
  • Rodovnik imenskih prostorov trenutne strani je vedno vnaprej naložen na strežniku – odprto vozlišče na trenutni poti prikaže svoje podrejene vnose tudi onkraj globine dynamic.
  • Brez dynamic odloča nastavitev default_depth (privzeto 1): eno raven pripravi strežnik, globlji imenski prostori se naložijo ob kliku. Neomejeno pomeni, da se ob vsakem odprtju strani pregleda celoten nabor strani – meni namenoma ni predpomnjen, ker je odvisen od trenutne strani, pravic bralca in njegovih odprtih vej.
  • Pri sneaky_index se zaščiteni vmesni imenski prostori, pod katerimi je berljiva vsebina, prikažejo kot delni: napis brez povezave, ki ga je mogoče razširiti.

Primer:

{{wk:acmenu>ns=auto|icons=fa|dynamic=1}}

Označevalec naslova

Podpis:

{{wk:title>Besedilo naslova}}
{{wk:title>de:Text|en:Text}}

Povzetek: V metapodatke strani shrani nevidni naslov za meni.

Vrednost: poljubno besedilo; po izbiri z vgnezdenim izrazom ... (vtičnik wki18n).

Opombe: Prednost naslovov v meniju: označevalec naslova pred prvim naslovom strani (useheading) pred ID-jem strani. Učinkuje po naslednjem izrisu strani.

Primer: glej Kako: nastaviti naslov v meniju brez vidnega naslova strani.

Označevalec COLLECTION

Podpis:

~~COLLECTION~~

Povzetek: Na strani start imenskega prostora ta imenski prostor označi kot zbirko strani.

Vrednost: brez; presledki pred zaključnim ~~ so dovoljeni.

Opombe: Učinek (ikona, obnašanje ob kliku, premik osnove menija, brez podrejenega lista start): Kako: urediti imenski prostor kot zbirko strani. Označevalec je shranjen samo v trenutnih metapodatkih – ko ga odstranite in stran znova izrišete, ga ni več. Na straneh Markdown ni prepoznan.

Primer: glej Kako: urediti imenski prostor kot zbirko strani.

Stran vrstnega reda

Podpis: stran <ns>:<orderpagename> (privzeto: <ns>:order), golo besedilo:

# komentar
ime-vnosa
drugo-ime-vnosa

Povzetek: Določi vrstni red vnosov menija na eni ravni imenskega prostora.

Vrednosti: eno ime vnosa na vrstico – ime strani ali ime podrejenega imenskega prostora, relativno glede na imenski prostor, brez polnih ID-jev; prazne vrstice in komentarji # se prezrejo; dvojniki štejejo enkrat.

Opombe: Navedeni vnosi so na vrhu v vrstnem redu datoteke, nenavedeni sledijo v privzeti razvrstitvi (imenski prostori pred stranmi, po abecedi, start prva). Stran se bere brez preverjanja ACL (je nastavitev razvrščanja), nikoli se ne prikaže kot vnos menija in naj bo skrita prek hidepages. Urejate jo lahko ročno ali s povleci in spusti.

Primer: glej Kako: določiti vrstni red menija.

Nastavitve

Možnost Tip Privzeto Opis
orderpagename besedilo order Ime strani vrstnega reda v vsakem imenskem prostoru
default_depth število ≥ 0 1 Globina prednalaganja za vsak meni brez lastnega parametra dynamic; 0 = vnaprej naloži vse

Končni točki AJAX

Od različice 1.6.0 (poenotenje oblikovalskega sistema) izris v celoti poteka prek skupne komponente tree() vtičnika wkfluentui (Referenca API) – obe spodnji končni točki to odražata v obliki svojega odgovora.

plugin_wkacmenu_load

Podpis: GET lib/exe/ajax.php?call=plugin_wkacmenu_load&ns=<ns>&icons=<0|1>

Povzetek: Vrne eno raven imenskega prostora kot HTML (leno nalaganje). Imenski prostori v njej so spet vozlišča za naknadno nalaganje; scripts/treeview.js jih v vstavljenem odseku znova poveže.

Odgovor: surov odlomek HTML (Content-Type: text/html), en sam <ul class=„wk-tree“>…</ul> – ne več JSON. scripts/treeview.js (vtičnik wkfluentui) naslov naloži neposredno s fetch() in z odgovorom zamenja prazno nadomestno vozlišče; vtičnik sam za to nima več nobene kode JavaScript. Napake vrnejo prazno telo s statusom, ki ni 2xx (400 manjka parameter ns, 403 ACL, 503 wkfluentui ni na voljo), namesto objekta JSON z napako.

Opombe: Zahteva pravico branja na strani start imenskega prostora; vrnjeni vnosi so filtrirani po ACL.

plugin_wkacmenu_order

Podpis: POST lib/exe/ajax.php?call=plugin_wkacmenu_order s polji wk-tree-move (ID premaknjene strani ali začetne strani imenskega prostora), wk-tree-ref (ciljni ID), wk-tree-pos (before/after), sectok (JSINFO.plugins.wkfluentui.sectok, ne več lasten žeton vtičnika).

Povzetek: Zapiše stran vrstnega reda imenskega prostora na podlagi ene same operacije premika, ki jo sproži vgrajeno nativno vlečenje HTML5 komponente tree()s (scripts/treeview.js). Strežnik prizadeto raven imenskega prostora izpelje sam iz obeh polnih, enoličnih ID-jev (syntax_plugin_wkacmenu::orderOwnerNs()) in zavrne premike med ravnmi – za razliko od stanja pred 1.6.0 od odjemalca ne sprejme več niza z imenskim prostorom.

Odgovor: ne več JSON – pravi POST obrazca (nativna oddaja <form> iz treeview.js, ne fetch() v ozadju), odgovor je preusmeritev HTTP na stran, s katere je prišla zahteva. Ob uspehu brez dodatnega obvestila (potrditev je novo mesto vnosa po ponovnem nalaganju – zlate utripajoče animacije ni več); ob napaki z rdečim sporočilom o napaki na ciljni strani (razlog napake potuje kot preverjen parameter poizvedbe wkacmenu_order_msg, ker DokuWikijev msg() preusmeritve ne preživi).

Opombe: Samo skrbnik (superuser); samo POST; žeton CSRF se preveri; vsako izpeljano ime vnosa se na strežniku znova preveri (cleanID, en segment); preveri se zaklep strani vrstnega reda; vsak klic ustvari novo revizijo strani. Vrstni red na odjemalcu je predstavitev, nikoli pooblastilo. Cilj preusmeritve se preveri glede na lastni gostitelj (ni odprte preusmeritve prek ponarejene glave Referer).

PHP API

Javne metode razreda syntax_plugin_wkacmenu za druge vtičnike in predloge:

Metoda Povzetek
buildSubTree($ns) Zgradi po ACL filtrirano, razvrščeno drevo menija imenskega prostora (neomejena globina) – zgolj podatkovna struktura, brez HTML
subTreeNodes($ns, $useIcons) Kot buildSubTree(), dodatno preslikano v shemo vozlišč tree()s (pot lenega nalaganja AJAX od 1.6.0; nadomešča odstranjeni renderSubTree())
renderNavFlyout($ns, $useIcons) Izriše celotno drevo za izvlečne menije CSS ob lebdenju – vsa vozlišča so strukturno odprta, brez vrstičnega display:none; od 1.6.0 nespremenjeno, lastna pot izrisa (brez <details>, ker tree() ne zna izvlečnega menija samo ob lebdenju)
orderOwnerNs($id) Ugotovi raven imenskega prostora, h kateri strani vrstnega reda spada ID strani ali začetne strani imenskega prostora (končna točka za vrstni red, od 1.6.0)
orderNameForId($id) Relativno ime vnosa v strani vrstnega reda za poln ID (končna točka za vrstni red, od 1.6.0)
currentOrderNames($ns) Trenutni vrstni red ravni imenskega prostora, vključno s stranjo vrstnega reda (končna točka za vrstni red, od 1.6.0)

Razredi CSS

Od 1.6.0 osnovni videz (drevesna struktura, povezave, aktivno stanje, obarvanje vsebnika) prihaja iz razredov .wk-tree* v wkfluentui/style.css (pogodba za stransko vrstico in auxbar, različica »dokument«, pogodba slogov v16). wkacmenu/style.css prispeva le še izpopolnitve, lastne vtičniku:

Razred Pomen
.acmenu / .acmenu-icons vsebnik menija (zgolj kljuka za obseg CSS/JS, brez lastne postavitve)
.wk-tree koren drevesa oziroma poddrevo (wkfluentui)
.wk-tree__link / –active povezava vnosa, aktivna pot (krepko in poudarjeno ozadje)
.wk-tree__icon mesto za ikono; v .acmenu.acmenu-icons pridušeno, aktivni vnos zlat
[data-wk-key] enolični ID vnosa (stanje v piškotku, povleci in spusti) – nadomešča data-oname/data-ons
li.wk-tree__status–partial zaščiten vmesni imenski prostor, ležeče in pridušeno, napis brez povezave (nadomešča .partial/.ns-label)
li.wk-tree__status–divert imenski prostor z lastno stransko vrstico brez berljive vsebine, zunanji sklic (nadomešča .divert)
li.wk-tree__status–collection zbirka strani, zlata ikona (nadomešča .collection)
[data-wk-tree-lazy-src] poddrevo, ki še ni naloženo (nadomešča .lazy/.loading)

Odpadlo (nadomestilo ni potrebno, delo prevzame nativna semantika <details>): .acmenu-up (vnos »navzgor« je običajno vozlišče), .open/ .closed (stanje atributa open elementa <details>), .curid (nadomešča ga .wk-tree__link–active), .acmenu-drag/ .acmenu-sort-placeholder/.acmenu-saved (nativno vlečenje HTML5, brez ročaja in brez utripajoče animacije ob shranjevanju).

Piškotek

Odprta vozlišča so shranjena v piškotku plugin_wkacmenu_open_items (polje JSON z ID-ji strani). Vtičnik ga ob izrisu prebere na strežniku in vnaprej naloži vozlišča, ki so v njem navedena – stanje menija tako preživi menjavo strani brez utripanja. Od 1.6.0 script.js piškotek zapisuje ob nativnem dogodku toggle elementa <details> namesto ob kliku; to je edina naloga JavaScripta, ki je ostala temu vtičniku – izris drevesa, leno nalaganje ter povleci in spusti v celoti tečejo prek wkfluentui/scripts/treeview.js.

Pot izrisa

Pot menija od sprožilca do končnega drevesa. Koraki od 2 do 5 pripadajo vtičniku, koraki od 6 do 8 kompletu gradnikov – to je meja, ki velja od različice 1.6.0: pridobivanje podatkov tu, izris tam (glejte Zgodovino različic).

Korak Kje Kaj se zgodi
1 stranska vrstica z oznako acmenu ali začetna stran z ~~COLLECTION~~ sprožilec
2 syntax.php zgradi drevo
3 syntax.php filter ACL za vsak vnos
4 syntax.php razvrsti: imenski prostori pred stranmi, stran order ima prednost
5 syntax.php preslikava na shemo vozlišč
6 komponenta tree() iz wkfluentui HTML iz <details> / <summary>
7 script.js piškotek prek nativnega dogodka toggle
8 treeview.js iz wkfluentui leno nalaganje ter povleci in spusti
9 action.php, plugin_wkacmenu_load ob lenem nalaganju: surov odlomek HTML
10 action.php, plugin_wkacmenu_order ob spustu: zapiše stran order in preusmeri
sl/wiki/dwe/wkacmenu/reference.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille