Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Razširitve DokuWikija (WvdS) » FluentUI (knjižnica oblikovalskega sistema) » Workbench Plugin Contract v1

Workbench Plugin Contract v1

Zavezujoča pogodba z oznako različice, prek katere paket prispeva k delovni površini: k vrstici dejavnosti, stranski vrstici, pomožni vrstici, spodnji plošči, vrstici stanja, ukazni vrstici in paleti ukazov ter k seznamu modulov. Ta stran je povzetek za upravljavce in avtorje paketov. Zavezujoča in popolna specifikacija (API, življenjski cikel, vedenje ob napakah, primer) je v repozitoriju, v angleščini: lib/plugins/wkfluentui/docs/contract-v1.md.

Sorodno: Pregled wkfluentui · Pogodba o slogih

Zakaj ta pogodba obstaja

Pred Contract v1 je paket k delovni površini prispeval prek petih ločenih mehanizmov, ki jih je lupina prepoznala samo z method_exists() (getModuleInfo(), getShellRegions(), getShellBadge(), getShellViews() in dogodek WKFLUENTUI_ADMIN_COMMANDS). Vsaj eden od njih ni prenašal nobene prave informacije več: vrnjene vrednosti getShellRegions() ne prebere nobena koda – signal je bil že sam obstoj metode. Paket ni mogel vprašati, ali delovna površina spodnjo ploščo sploh podpira, preden jo je uporabil, in ni imel mesta, kjer bi pravico opredelil ožje kot »ali ta uporabnik sploh sme odpreti zaslon«.

Nič od tega ni izklopljeno. Paket, ki uporablja katero od petih starih metod, deluje nespremenjeno naprej: prilagojevalnik (helper/legacyadapter.php) jih samodejno prevede v isto obliko opisa, ki jo uporablja Contract v1.

Trije načini vključitve

Način Pomen
classic golo do=admin (brez mode=fluentui) ali navadna stran wikija brez oznake <module> – delovna površina ne sodeluje
contributed običajni primer: wkfluentui okoli vsebine, ki jo da zaslon, zgradi celotno lupino, in to izključno iz prispevkov, ki jih je zaslon prijavil
selfHosted paket sam pokliče widgets→workbench() iz svoje metode html() – prijavi ga zgolj najava brez kind

Sedem področij

Področje Kje se prikaže Opomba
activityBar vrstica dejavnosti za preklapljanje modulov prispevati je mogoče samo značko – ikona sama pride samodejno iz seznama nameščenih skrbniških paketov
sidebar leva stranska vrstica s pogledi ime kot v dosedanjem registru pogledov
auxbar desna pomožna vrstica s pogledi (ali drugi dokument v razdeljenem pogledu) prav tako
bottomPanel spodnja plošča v dosedanjem registru panel; preimenovano, ker se golo ime zunaj datoteke, ki ga definira, bere kot »katera koli plošča«
statusBar vrstica stanja prispevek kind: view navede eno dejstvo o tem, kje je bralec – glejte spodaj
commandPalette ukazna vrstica (vidna) in paleta ukazov (z iskanjem, Ctrl+Shift+P) glejte spodaj
adminModule seznam modulov za <module name=„…“> ustreznica getModuleInfo() v v1

Vrstica stanja sprejme dejstva, ne oznak HTML

Vsa druga področja sprejmejo zaupanja vreden HTML klicatelja; to sprejme navadno besedilo, posebne znake v njem pa za HTML kodira lupina. Vrstica stanja ima eno vrstico, prispevek, ki bi lahko odprl element, pa bi zasedel vse, kar ostane od nje.

Polje Pomen
label besedilo
href kam vodi, če kam vodi
disabledReason prikaže se kot naslov (kratek namig ob prehodu z miško)
badge.tone warning ali error za obarvanje
priority kako pomemben je podatek – glejte spodaj

Veljavnost je enaka kot pri ukazu: prispevek, katerega lastnik je prikazani zaslon, se prikaže; prispevek, katerega lastnik sploh nima skrbniškega zaslona, velja povsod; prispevek, ki pripada drugemu zaslonu, se ne prikaže. To je dobesedno isto preverjanje, ne drugo z enakim besedilom.

Dve meji za preživetje, izpeljani iz ene številke. Pod 1024 px odpade vse, kar nima prioritete; pod 768 px poleg tega vse pod helper_plugin_wkfluentui_widgets::STATUS_PHONE_PRIORITY (80). Prispevek sme priority navesti sam; vrednost se omeji na razpon 10–95, da noben prispevek ne prehiti poti nazaj iz delovne površine, prispevek brez navedbe pa dobi 85.

priority ni order. order razvršča znotraj področja, priority odloča, kaj ostane pri ozkem zaslonu. Če bi bili eno polje, bi nov vrstni red v stranski vrstici spremenil, kaj telefon pokaže v vrstici stanja.

Pogled sme ''html'' podati kot callable

Tabela deskriptorja navaja html kot string | callable; viewStack() pogled s praznim telesom izpusti.

Razlika ni kozmetična. Dogodek za prijavo prispevkov se sproži enkrat, pri skrbniškem zaslonu pa še preden je zaslon izrisan. Niz mora biti torej mogoče izračunati ob prijavi, callable pa se razreši ob sestavljanju, torej potem, ko je lastna metoda html() že tekla. Prav zato obstaja.

Callable, ki vrže izjemo, stane samo ta pogled, napaka pa se zabeleži v dnevnik. Zmožnost: workbench.view.html.callable.

Zaslon sme svoje delovne predmete prispevati kot zavihke

Register vrstice z zavihki vodi za vsako delovno območje urejen seznam neprosojnih nizov. Vrstica zato poleg modulov poimenuje tudi predmete, s katerimi dela zaslon – pri urejevalniku nastavitev je tak predmet območje, pri delovni površini za poizvedbe poizvedba. To je enkrat zgrajeno v gostitelju, ker bi bila alternativa v obeh primerih druga vrstica z zavihki v vsebini.

Pravilo Zakaj
Oznako lupina razširi v <modul>:<predmet> shranjena oznaka tako vedno pove, kdo jo zna prevesti nazaj
Zavihki zaslona nadomestijo njegov zavihek modula zavihek za »upravitelja nastavitev« ob zavihkih za območja, ki jih upravlja, bi bil druga raven zavihkov v preobleki prve
Kontrolnike za premikanje dobijo samo zavihki modulov obrazec pošlje vidni vrstni red v seznam modulov; oznaka predmeta tam ob naslednjem klicu ne bi bila razrešljiva in bi s seboj odnesla premeščene zavihke modulov
Zaslon sam zapiše svoje pripenjanje lupina namenoma ne ve, kaj oznaka poimenuje
Zavihek brez naslova ali naslova URL se zavrže ne bi bil dosegljiv, ne bi ga bilo mogoče shraniti med zaznamke in ga ne bi bilo mogoče ločiti od soseda

Zmožnost: workbench.screen.tabs.v1.

Štiri kljuke za zaslon vgrajenega paketa

Nadomestni zaslon wkfluentui izriše za vgrajeni paket DokuWikija, zato ga pogodba v1 ne doseže: nativeViewsFor($owner) primerja lastnika prispevka s prikazanim zaslonom – lastnik bi bil wkfluentui, zaslon config, in ta dva se nikoli ne srečata. Prijava pod imenom vgrajenega paketa bi pomenila, da se ta paket izdaja za drugega.

Tak zaslon zato neposredno odgovori na štiri neobvezne metode: commands(), views(), statusItems() in tabs(). Vse štiri tečejo skozi eno zavarovano točko, zato napaka stane natanko ta en odgovor in se zabeleži v dnevnik.

Lastni pogled zaslona izpodrine splošni pogled lupine za isto področje. Zaslon, ki izriše lastno navigacijo, ne sme poleg nje dobiti še splošnega kazala, zaslon z lastnim stolpcem s kontekstom pa ne še plugin.info.txt. To je isto pravilo, ki že velja za paket, ki gosti delovno površino sam – in ista vrsta napake: nič ne spodleti, pojavi se preprosto druga stranska vrstica.

Pravice

permission je callable (brez argumentov, vrne bool) ali null. Dodatno k ACL, nikoli namesto nje – skrbniški zaslon, na katerem prispevek temelji, ostane nespremenjeno zaščiten z lastnim preverjanjem DokuWikija isAccessibleByCurrentUser(). Vrednost permission, ki ni niti null niti klicljiva, velja za napačno prijavo in prispevek izključi – ne za manjkajočo, ki bi ga spustila skozi. Preverjanje, ki vrže izjemo, velja za zavrnitev, ne za sesutje, in se ne zabeleži kot napaka: »ta uporabnik tega ne sme videti« je mehanizem, ki deluje, ne okvara.

Prepoznavanje zmožnosti

helper_plugin_wkfluentui_capabilities::has($name) – ime, ki ga paket preveri, preden zmožnost uporabi, namesto da bi preverjal številko različice ali razred. Razlog: zmožnost je lahko izdana pozneje kot različica, ki jo je napovedala.

Dve dodatni imeni:

Zmožnost Pomen
workbench.view.html.callable html pogleda je lahko callable in se razreši ob sestavljanju
workbench.screen.tabs.v1 zaslon sme svoje delovne predmete poimenovati v eni vrstici z zavihki

Med dogodkom za prijavo has() odgovarja samo z osnovnim besediščem – in to je vsa resnica, ne kompromis. Ko teče lastna obravnava dogodka, provides nobenega drugega prispevajočega paketa še ni zbran. Vprašanje po zmožnosti tujega paketa v tistem trenutku nima odgovora in dobi false.

all() se za čas dogodka označi, list() pa medtem odgovarja z osnovnim besediščem, ne da bi si rezultat zapomnil. Poizvedba o zmožnosti iz lastne obravnave dogodka zato dogodka ne sproži znova.

sl/wiki/dwe/wkfluentui/contract.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille