FluentUI: urejevalnik nastavitev
Nazaj: FluentUI: lupine območij · Pregled knjižnice
368 nastavitev v 36 skupinah na eni strani in nič ni povedalo, katere odstopajo od privzetih: zakaj je bil DokuWikijev upravitelj nastavitev zamenjan in kaj ga nadomesti.
Stanje: v celoti [Live] (vir: Screen/Settings.php,
helper/settings.php, scripts/settings.js).
Sorodno: Skrbniška postavitev ·
Pogodba o prispevkih v1 ·
Mreža lastnosti
Kaj nadomešča in zakaj to ni bila stvar okusa
DokuWikijev upravitelj nastavitev izriše celoten odgovor naenkrat: en
<fieldset> na skupino, v njem preglednica, vsaka skupina odprta. Na v celoti
opremljeni namestitvi je to 368 nastavitev v 36 skupinah na eni strani (mediana
velikosti skupine 8, največja 63), in nič na zaslonu ne pove, katere od njih
odstopajo od privzete vrednosti.
Temu se pridruži dolžina oznak: vsak paket tega kompleta v Setting::prompt()
zapiše cel pojasnjevalni stavek – in ta je oznaka. Urejevalnik zato vrstice
postavi v mrežo lastnosti,
katere stolpec z oznakami je omejen in se prelamlja, da noben stavek ne potisne
kontrolnika iz vidnega območja.
Izsek se sme shraniti – sočasno pošiljanje
To je predpogoj za vse drugo in ni bilo očitno.
Configuration::updateSettings($input) gre čez vsako nastavitev in vsaki
poda $input[$key] ?? null. Osnovni razred null prestreže – štirje
podrazredi tega ne storijo:
| Razred | odsotnost razume kot |
|---|---|
SettingOnoff | 0 – stikalo se izklopi |
SettingMulticheckbox | prazno množico |
SettingDisableactions | isti razred, isti učinek |
SettingImConvert | prazen niz |
SettingSavedir | napako – in upravitelj zavrže celoten postopek |
Obrazec, ki prikaže le izsek, torej neopazno izklopi vsako stikalo zunaj izseka. Ob
shranjevanju dvanajstih nastavitev pošte bi se tako med drugim zapisalo
useacl = 0, securecookie = 0, iexssprotect = 0, relnofollow = 0 in
sneaky_index = 0 – prva izklopi upravljanje dostopa za celoten wiki. Brez
sočasnega pošiljanja se poleg tega zajame še savedir, katerega napaka zavrže
celoten postopek; nič sprememb bi bilo potem videti kot neškodljivost.
Urejevalnik zato za natanko te razrede sočasno pošilja skrita polja s trenutno vrednostjo. Samo zanje: sočasno pošiljanje vseh 368 bi bilo obsežnejše, potrebovalo bi serializacijo za vsak razred in bi v dokument zapisalo šifrirana gesla.
Seznam razredov je zapisan dobesedno, dobesedni zapis, ki lahko zastari, pa je
napaka, ki čaka na posodobitev DokuWikija. _test/SettingsCarryTest.php ga zato
v obe smeri primerja z izvorno kodo paketa za nastavitve: peti tak razred
preverjanje podre, prav tako pa tudi naveden razred, ki je medtem dobil zaščito.
Vrnitev na privzeto je stanje prikaza, ne druga pot pisanja
Setting::shouldBeSaved() vrednost izpusti, takoj ko je enaka privzeti.
»Vrni na privzeto« in »pošlji privzeto vrednost« sta za zapisovalnik torej isto.
Povezava &wkreset=<ključ> zato izbriše le lokalno vrednost na objektu,
ki obstaja samo v tej zahtevi; kontrolnik nato prikaže privzeto vrednost, običajno
shranjevanje pa ključ odstrani iz conf/local.php. Iz tega sledijo tri
lastnosti in vsaka je razlog za to obliko:
- deluje brez JavaScripta, za vsak razred nastavitev, tudi za večvrednostne, ki jih gumb za oddajo ne bi mogel izraziti;
- GET nikoli ne piše – vnaprejšnje nalaganje, zaznamek ali pajek, ki sledi povezavi, ne spremeni ničesar;
- bralec pred shranjevanjem vidi, kaj bo shranil.
&wkreset=* vrne vsa odstopanja prikazanega območja, z vprašanjem za
potrditev in navedbo števila.
Območje je naslov in se zapomni
&scope= poimenuje območje: dokuwiki, tpl:<ime>,
plugin:<ime>, poleg tega še pogleda !changed in !undefined.
Klicaj ju že po zgradbi loči od imena paketa – imenik paketa se tako ne more
imenovati, ker ga nalagalnik manifestov preveri glede na [A-Za-z0-9_-]+.
Območje se zapomni za vsakega uporabnika, in to ni zaradi udobja.
admin_plugin_config::handle() po uspešnem shranjevanju preusmeri na
?do=admin&page=config – brez območja, in nič v tem paketu tega ne
more spremeniti, ker se zgodi v preProcess(), dolgo preden zaslon obstaja.
Brez pomnjenja bi se po vsakem shranjevanju vrnili v nastavitve jedra, ne glede
na to, kateri paket ste ravnokar urejali.
Naslov je ključ, ne začetek stavka
Setting::prompt() vrne en niz, vrstica pa potrebuje dvoje: nekaj za
preletavanje in nekaj za branje.
Rez na prvi meji stavčnega člena v pozivu bi dal naslove, kot sta »Absendername, den Empfänger sehen, z« – rez je pristal sredi »z. B.« – in »Verlangt den zweiten Faktor eines bereits enrollten Benutzers bei jedem«. Stavčni odlomek je slabši od nobenega naslova: bere se kot naslov, a to ni. Vsako pravilo, ki popravi ta dva primera, pa je pravilo o nemških okrajšavah, v polju, ki obstaja v petih jezikih.
Naslov je zato ključ sam – tisto, kar navaja dokumentacija, po čemer vpraša podpora in kar skrbnik vtipka v iskanje. Poziv ostane cel in je pod njim kot pojasnilo. Enako delitev ima urejevalnik nastavitev v VS Code, iz istega razloga: identifikator je stabilen, stavek ni.
Kaj ni bilo zgrajeno in zakaj
Brez filtra »zastarelo«. DokuWiki takega polja nima. Branje besede iz
poziva bi bilo ugibanje, preoblečeno v metapodatke: bilo bi odvisno od prevoda,
sprožilo bi se ob vsakem stavku, ki zastarel postopek le omenja, in bi v petih
jezikih odgovarjalo različno. Urejevalnik namesto tega bere izbirni metapodatkovni
parameter _deprecated, ki ga paket lahko nastavi v svoji
conf/metadata.php; skupina se prikaže, ko je v njej kaj.
Zato pa obstajata dva pogleda, za katera vir obstaja: Spremenjeno
(Setting::isDefault()) in Neznani ključi
(Configuration::getUndefined() – ključi, ki so v datoteki, a jih ne deklarira
noben paket; niso urejljivi in se ob shranjevanju ohranijo).
Vrstica dejavnosti ostane seznam paketov. Predelava v skrbniška delovna področja bi spremenila besedišče skupne površine – posegla bi v pogodbo o znamki in v razporeditev, shranjeno za vsakega uporabnika – zato ne spada k temu zaslonu.
Majhni zasloni
Oba stolpca mreže v vrstici sta minmax(0, …). Noben stolpec ne more biti
odmerjen po svoji vsebini, zato nobena oznaka, noben stavek in nobena
vrednost ne more potisniti kontrolnika iz vidnega območja – to ni stvar okusa,
temveč natanko napaka, proti kateri je bil ta zaslon zgrajen.
Pod 1024 px se kontrolnik premakne pod besedilo; pod 768 px postane meni vrstice
spodnja plošča, potrditveno polje pa veliko 24 px. Prelomne točke so tiste te
namestitve (768/1024/1280), ne 700/1200 iz prvotne predloge: obstoječa lestvica
se v lupini in hišni predlogi uporablja dvajsetkrat in je v glavi
wiki-layout.css opisana kot model stopenj.
Dostopnost
<label for>samo tam, kjer drži. Večvrednostna nastavitev izriše eno vnosno polje za vsako izbiro in nobeno od njih nima identifikatorja same nastavitve; oznaka, ki bi kazala tja, bi napis povezala z ničemer – slabše od navadnega napisa, ker bralnik zaslona povezavo napove.- Stanje nikoli samo z barvo. »Spremenjeno« je črta in besedilna oznaka.
- Meni vrstice je
<details>– upravljiv s tipkovnico in brez skripta. - Sporočila gredo prek žive regije, tudi če se dodatno prikaže obvestilo (toast): označevanje obvestil v tem kompletu ni živa regija.
- Površine za dotik najmanj
–wk-touch-min(40 px, pri grobem kazalcu 44).
Sorodne teme
- FluentUI: skrbniško območje podrobno – območja, v katera ta zaslon dostavlja
- Workbench Plugin Contract v1 – štiri kljuke nadomestnega zaslona
- Vertical Grid: osnove – definicija stolpca z oznakami
- FluentUI: oblikovalski žetoni –
–wk-touch-minin žetoni za dotik