Trenutno dejavna stran: start » sl » Interna dokumentacija » Razširitve DokuWikija (WvdS) » FluentUI (knjižnica oblikovalskega sistema) » Vodnik: gradnja prvega skrbniškega zaslona z FluentUI

Vodnik: gradnja prvega skrbniškega zaslona z FluentUI

Nazaj: FluentUI (knjižnica oblikovalskega sistema)


Za koga: za razvijalce, ki nimajo predznanja o wkfluentui in želijo zgraditi lasten skrbniški modul DokuWiki (AdminPlugin) v slogu Fluent/ADS. Ta vodnik pelje od začetka do delujočega zaslona s seznamom in zaslona z več območji — korak za korakom, z enim samim vodilnim primerom. Ne ponavlja pogodb metod; vsak korak vodi na referenco API pomočnika za podrobnosti.

Referenčni primer: zasloni do=admin&page=wksqliteds (vtičnik wksqliteds) so v živo uveljavljena, popolna različica vsakega tukajšnjega koraka — območje „Povezave„ (admin.php::renderConnList()) za koraka 1–2, območje „Podatkovna baza“ → Table Designer/Browse (dbadmin/DbAdmin.php::renderStructure()/ renderBrowse()) za korake 3–5. Izvorna koda: lib/plugins/wksqliteds/{admin.php, dbadmin/DbAdmin.php}.

Predpogoj

Vaš vtičnik naloži pomočnika wkfluentui kot vsak drug pomočnik DokuWiki:

/** @var helper_plugin_wkfluentui_widgets $widgets */
$widgets = plugin_load('helper', 'wkfluentui_widgets');

Ni potreben argument konstruktorja niti konfiguracija — vsaka metoda je čista funkcija svojih argumentov (glej FluentUI: javni API pomočnika, razdelek „Lastnosti„). CSS/JS se naložita samodejno za celotno spletno mesto prek lib/exe/css.php/lib/exe/js.php (glej kljucni_pojmi) — ročno vključevanje ni potrebno.

Korak 1: seznam + vrstica stanja (ravni zaslon)

Najpreprostejši arhetip: seznam brez drevesa/auxbarja, uokvirjen z .wkq-shell–flat (modifikatorski razred, brez lastnega klica pomočnika — glej FluentUI: osnovna postavitev podrobno za popolno tabelo modifikatorjev) in vrstico stanja na dnu:

echo '<div class="wkq-shell wkq-shell--flat">';
echo '<div class="wk-shell-content">';
 
echo '<h2>Moj seznam</h2>';
echo '<table class="inline" style="width:100%">…</table>';
 
echo '</div>'; // wk-shell-content
echo '<div class="wk-shell-statusbar"><span>3 vnosi</span><span></span></div>';
echo '</div>'; // wkq-shell

Živ vzor: wksqliteds/admin.php::renderConnList() (območje „Povezave“). Vrstica stanja je tu preprost trak dveh <span>-ov brez lastnega pomočnika — pri več zaslonih v istem vtičniku se splača zasebna metoda renderStatusbar($summary), kot je tista tam, vendar je to konvencija in ne obvezen gradnik.

Korak 2: dodajanje orodne vrstice

Razpršene gumbe zamenjajte z toolbar() — ta samodejno doda role=„toolbar“ in tipkovnični roving tabindex (scripts/toolbar.js), brez lastnega JS-a:

echo $widgets->toolbar([
    ['label' => 'Novo',     'element' => $widgets->button(
        ['label' => 'Novo', 'href' => '…', 'tone' => 'primary'])],
    ['label' => 'Izbriši', 'element' => $widgets->button(
        ['label' => 'Izbriši', 'type' => 'submit', 'tone' => 'danger']),
     'group' => 'danger'],
]);

Popolna pogodba parametrov ($opts['ariaLabel'], pravila združevanja, primer s tremi barvnimi skupinami): Toolbar → osnove, metoda „toolbar()". Barvna semantika gumbov (bela/modra/rdeča): Styles Contract (--wk-*).

Korak 3: dodajanje drevesa (zaslon z več območji)

Takoj ko zaslon potrebuje navigacijsko strukturo levo in delovno površino desno, se sestava mreže preklopi z –flat na polno štiriregijsko obliko (.wkq-shell brez modifikatorja oz. z –no-auxbar; glej FluentUI: osnovna postavitev podrobno):

echo '<div class="wkq-shell">';
echo '<div class="wk-shell-sidebar">';
echo $widgets->tree([
    ['label' => 'povezavaA', 'href' => '…', 'active' => true, 'children' => [
        ['label' => 'tabela1', 'href' => '…'],
    ]],
]);
echo '</div>'; // wk-shell-sidebar
echo '<div class="wk-shell-content">…delovna površina…</div>';
echo '<div class="wk-shell-auxbar">…lastnosti…</div>';
echo '<div class="wk-shell-statusbar">…</div>';
echo '</div>'; // wkq-shell

tree() gradi gnezdljiva vozlišča <details>/<summary> — popolnoma dostopna brez JavaScripta (vključno s tipkovnico in bralniki zaslona). Popolna podatkovna pogodba vozlišča (label/href/active/children): TreeView → osnove, metoda „tree()". Živ vzor: wksqliteds/dbadmin/DbAdmin.php::renderObjectTree() — en sam delni prikaz drevesa, deljen med vsemi zasloni podatkovne baze.

Korak 4: dodajanje podokna lastnosti (auxbar)

Območje wk-shell-auxbar iz koraka 3 je namenoma prazno, dokler zaslon nima izbire, s katero bi ga zapolnil. Vzorec prvega poskusa (brez potrebnega JS-a v živo): klik na povezavo nastavi parameter izbire, zaslon ga prebere pri naslednjem izrisu in zapolni auxbar z propertyGrid():

$sel = $INPUT->str('sel'); // npr. "stolpec1"
echo '<div class="wk-shell-auxbar">';
if ($sel !== '') {
    echo $widgets->propertyGrid([
        ['label' => 'Ime', 'controlHtml' => '<code>' . hsc($sel) . '

'],

      ['label' => 'Tip', 'controlHtml' => 'TEXT'],
  ]);

} else {

  echo '<p style="color:#666">Za prikaz lastnosti izberite element.</p>';

} echo '</div>'; </code>

Popolna pogodba vrstice (label/controlHtml): Property Grid → osnove, metoda „propertyGrid()". Živ vzor (dve popolni izvedbi, izbira stolpca/indeksa/tujega ključa oz. izbira vrstice): wksqliteds/dbadmin/DbAdmin.php::renderStructureAuxbar()/ renderBrowseAuxbar(). Naslednik z JS v živo brez ponovnega nalaganja strani (ustreznik ADS-ovega onActiveCellChanged) je zabeležen kot cilj ravni Tier 2, glej FluentUI: osnovni katalog gradnikov.

Korak 5: vrstica stanja s kontekstom

Na zaslonih z več območji vrstica stanja običajno prikazuje aktivni kontekst (ime povezave, opozorilo o načinu samo za branje) namesto preprostega štetja kot v koraku 1:

echo '<div class="wk-shell-statusbar">';
echo '<span>' . hsc($connName) . '</span>';
echo '<span>' . ($readonly ? 'Samo za branje' : '') . '</span>';
echo '</div>';

Živ vzor: wksqliteds/dbadmin/DbAdmin.php::renderStatusbar(), vključno z modifikatorskim razredom .wkq-statusbar-readonly za opozorilo.

Naprej


Preverjeno glede na: wkfluentui@a477094, wk-dw-msqlite-plugin@240c064

sl/wiki/dwe/wkfluentui/tutorial.txt · Zadnja sprememba: uporabnika 0.0.0.0