Navodila: dodajanje posameznih gradnikov
Nazaj: FluentUI (knjižnica oblikovalskega sistema)
Za koga: za razvijalce, ki že imajo obstoječ skrbniški zaslon (lasten
vtičnik ali wksqliteds kot vzor) in želijo dodati natanko en
gradnik, ne da bi ponavljali celotno pot
vodnika od začetka. Vsak recept je
kratek in ciljno usmerjen; pogodbe metod so izključno v
FluentUI: javni API pomočnika — ta recept jih ne ponavlja,
temveč nanje povezuje.
Recept: dodajanje orodne vrstice
Cilj: razpršene gumbe nad seznamom/mrežo nadomestiti s tipkovnično dostopno ukazno vrstico.
- Naložite pomočnika (če tega še niste storili):
$widgets = plugin_load('helper', 'wkfluentui_widgets');. - Vsak gumb zgradite kot dokončan fragment HTML (lastna barvna semantika, glej Styles Contract (--wk-*)).
- Fragmente predajte v
$widgets→toolbar($items, $opts); gumbi z isto vrednostjogroupse združijo drug ob drugem z ločilno črto (npr.group' => 'danger' za dejanja brisanja skrajno desno). - Rezultat izpišite neposredno nad seznamom/mrežo — lasten razred CSS ni potreben,
toolbar()že zagotavljarole=„toolbar“+ tipkovninsko navigacijo (scripts/toolbar.js).
Popolna pogodba parametrov:
Toolbar → osnove, metoda „toolbar()". Živ vzor: orodna vrstica Table
Designerja v wksqliteds/dbadmin/DbAdmin.php.
Recept: dodajanje podokna lastnosti
Cilj: desna pomožna vrstica, ki prikazuje lastnosti trenutne izbire v drevesu/mreži (vzorec ADS „properties panel„).
- Rezervirajte območje
<div class=„wk-shell-auxbar“>v mreži.wkq-shell(glej FluentUI: osnovna postavitev podrobno za sestavo mreže). - Izbiro prenesite prek lastnega parametra poizvedbe (prvi poskus: povezava za klik, brez JS-a v živo — preverjena konvencija, ni je treba znova izumljati). Pazite na trk imen: ne izberite imena parametra, ki ga že uporablja lastno usmerjanje DokuWiki (
do/pagesta rezervirana zado=admin&page=<vtičnik>; prav na ta trk je naletelwksqliteds, glej spodaj). - Izbiro razrešite na strani strežnika (naložite zapis) in jo izrišite z
$widgets→propertyGrid($rows); zagotovite nadomestno besedilo, kadar ni nič izbrano ali referencirani zapis ne obstaja več.
Popolna pogodba vrstice:
Property Grid → osnove, metoda „propertyGrid()". Živ vzor (dve popolni
izvedbi): wksqliteds/dbadmin/DbAdmin.php::renderStructureAuxbar()/
renderBrowseAuxbar().
Recept: dodajanje zavihkov
Cilj: ponuditi več podpogledov istega zapisa/območja kot vrstico zavihkov (npr. stolpci/indeksi/tuji ključi/sprožilci zaslona Table Designer, ali rezultati/sporočila rezultata poizvedbe).
- Vsak zavihek modelirajte kot
['key' => string, 'label' => string, 'href' => string]—hrefnosi popolno ciljno povezavo, vključno z vsemi potrebnimi parametri poizvedbe. - Povezav, ki so že HTML-kodirane prek
url()/wl()(&namesto&), ne pošiljajte znova skozihsc()— to povzroči dvojno ubežanje in pokvarjene povezave (vwksqlitedsse je zgodilo dvakrat; oba primera je bil simptom: klik pristane na splošni začetni strani namesto na pričakovanem zavihku). Uveljavljena konvencija: zasebna metoda ovojnicaxyzUrl($raw = false), kot jeDbAdmin::rtabUrl()/dselUrl(), ki po potrebi posreduje$raw = truevurl(). - Pokličite
$widgets→tabs($tabs, $active);$activese primerja zkeypo enakosti niza.
Popolna pogodba parametrov:
Tab Control → osnove, metoda „tabs()". Živ vzor: zavihki rezultatov/sporočil v
SQL Workbenchu, wksqliteds/dbadmin/DbAdmin.php::renderResultsMessagesTabs().
Omejitve in odpravljanje težav
- Trk imena parametra poizvedbe z usmerjanjem: lastno usmerjanje
do=adminzasedapage(ime vtičnika). Lasten parameter seznama/mreže z enakim imenom prevzamearray_merge()funkcijeurl()in tiho povozi vrednost usmerjanja — vsaka generirana povezava na zaslonu tedaj vodi nazaj na splošni skrbniški pregled namesto na pričakovano stanje. Najdeno in odpravljeno pri straneh v pregledovalniku (Browse)wksqliteds(parameter preimenovan izpagevbpage) — vsak nov parameter poizvedbe vnaprej preverite glede na rezervirana imena DokuWiki (do,page,id,rev,sectok). - Pasti prevajalnika CSS (usodne za celotno spletno mesto):
min()/calc()z mešanimi enotami ter zaporedje znakov*/v besedilu komentarja prekineta prevajanje CSS za celotno spletno mesto — glej omejitve_in_odpravljanje_tezav. - Polja z besedilom CodeMirror v testih Playwright:
page.fill()ne doseže več osnovnega<textarea>, ko ga CodeMirror nadomesti — uporabitepage.evaluate()zta.nextSibling.CodeMirror.setValue(…).
Naprej
- Popolna pot od začetka: Vodnik: gradnja prvega skrbniškega zaslona z FluentUI.
- Normativna pravila za skrbniške zaslone: FluentUI: skrbniško območje podrobno.
- Popolne pogodbe metod: FluentUI: javni API pomočnika.
Preverjeno glede na: wkfluentui@a477094, wk-dw-msqlite-plugin@240c064