Trenutno dejavna stran: start » sl » Interna dokumentacija » Razširitve DokuWikija (WvdS) » FluentUI (knjižnica oblikovalskega sistema) » FluentUI: reference komponent » FluentUI: TreeView — predstavitveni pregled » TreeView: Drag & Drop

TreeView: Drag & Drop

1. Pregled in namen

Stanje: [Live]. Vir: lib/plugins/wkfluentui/helper/widgets.php (povezave za premikanje) in lib/plugins/wkfluentui/scripts/treeview.js (plast vlečenja). Referenca: DevExpress-ov drag&drop drevesa (premikanje vozlišč med skupinami).

2. Predpogoji

osnovna pogodba TreeViewa že razumljena; vsako premakljivo vozlišče potrebuje key; klicatelj priskrbi POST-končno točko za premike.

3. Pojmi

Najprej vidni gumbi, vlečenje kot plast nad njimi: povezavi za premikanje gor/dol (reorderUrl) sta primarna, s tipkovnico upravljiva in brez JS delujoča pot. HTML5 vlečenje in spuščanje pride izključno dodatno (reorderAction) in nikoli ne nadomesti gumbov — vlečenje ni upravljivo za uporabnike tipkovnice (načelo iz layout → Mehanika postavitve).

4. Prvi koraki

echo $widgets->tree($nodes, [
    'reorderUrl'    => static fn (string $key, string $op) => wl($ID, ['move' => $key, 'dir' => $op]),
    'reorderAction' => wl($ID, ['do' => 'move']),
]);

5. Uporaba

Potreba Vzorec
Sprememba vrstnega reda (standard) le reorderUrl — vidne povezave ▲/▼ na vozlišče
Dodatna udobnost vlečenja dodati reorderAction — spustitev pošlje (vozlišče, referenca, položaj)

6. API referenca

  • $opts['reorderUrl']callable(string $key, string $op): string z opup/down: izriše na vozlišče s key dve vidni povezavi za premikanje (.wk-tree__move, z aria-label). Strežnik izvede premik ob klicu URL-ja.
  • $opts['reorderAction'] (URL) — aktivira plast vlečenja: korensko <ul> nosi data-wk-reorder-action; scripts/treeview.js naredi key-vozlišča vlečljiva in ob spustitvi pošlje dinamični obrazec z wk-tree-move (premaknjeno vozlišče), wk-tree-ref (ciljno vozlišče), wk-tree-pos (before/after) in sectok-om iz JSINFO — anonimne seje nimajo žetona, tam ostane pri povezavah.

7. Parametri, možnosti in stanja

Ključ Tip Pomen
$opts['reorderUrl'] callable (string $key, string $op): string povezave za premikanje brez JS, op = up/down
$opts['reorderAction'] string (URL) POST-cilj plasti vlečenja (polja glej odsek 6)

Varnost (zavezujoče): strežnik ponovno preveri vsak premik — preveriti sectok (checkSecurityToken()), izključiti cikle, preveriti cilj glede na ACL uporabnika (brez premika v skupino, ki je ACL uporabnika ne pokriva) — isto pravilo kot pri vsaki množični akciji (glej Množične akcije → stran strežnika).

8. Popolni primeri

Glej odsek 4; klicateljev POST-obravnavalnik prebere wk-tree-move/ wk-tree-ref/wk-tree-pos, preveri sectok in ACL ter izvede premik.

9. Omejitve in robni primeri

  • Spustitev na lastno poddrevo se na strani odjemalca prezre — preverjanje ciklov kljub temu ostaja obveznost strežnika (manipuliran POST zaobide odjemalca).
  • Premikanje med drevesi (dve instanci tree()) ni del pogodbe.

10. Dostopnost in združljivost

Vidni povezavi ▲/▼ (z aria-label „Premakni navzgor/navzdol„) vedno ostaneta primarna, s tipkovnico upravljiva pot — vlečenje in spuščanje je čista plast udobnosti za miško.

11. Odpravljanje težav

Simptom: vlečenje se začne, spustitev pa nima učinka.

Vzrok: ni sectok-a (anonimna seja) ali manjka reorderAction — plast vlečenja se takrat namerno onemogoči.

Rešitev: preveriti prijavo; nastaviti reorderAction; povezavi ▲/▼ delujeta ne glede na to vedno.

12. Sorodne teme

sl/wiki/dwe/wkfluentui/component/treeview/drag-drop.txt · Zadnja sprememba: uporabnika 0.0.0.0