FluentUI: urejevalnik nastavitev
Nazaj: FluentUI: lupine območij · Pregled knjižnice
Stanje: popolno [Live od 25. 08. 2026] (vir: Screen/Settings.php,
helper/settings.php, scripts/settings.js).
Sorodno: Skrbniška postavitev ·
Mreža lastnosti
Kaj nadomešča in zakaj to ni bila stvar okusa
DokuWikijev upravitelj nastavitev izriše svoj celoten odgovor v enem prehodu:
en <fieldset> na skupino, tabela v njem, vsaka skupina odprta. Izmerjeno
na živi namestitvi 25. 08. 2026: 368 nastavitev v 36 skupinah na eni strani,
mediana velikosti skupine 8, največja 63. 48 jih odstopa od privzete vrednosti,
in nič na zaslonu ni povedalo, katere.
Dolžina ni bila najhujše. Vrstice so ležale v
mreži lastnosti, katere
stolpec oznak je bil max-content, oznaka pa je nosila
white-space: nowrap. Vsak paket tega paketa piše cel razlagalni stavek v
Setting::prompt() — in ta je oznaka. Prvi stolpec je tako postal tako
širok kot najdaljši stavek svoje skupine in je stolpec s kontrolnikom potisnil
izven vidnega območja:
| Širina okna | desni rob oznake | desni rob kontrolnika |
|---|---|---|
| 768 px | 1374 px | 1402 px |
| 1280 px | 1618 px | 1646 px |
Območje vsebine se ne pomika vodoravno. Kontrolniki torej niso bili zunaj slike,
ampak nedosegljivi. Pri 390 px na celotnem zaslonu ni bil viden niti eden —
osemnajst oznak, nič vnosnih polj. Skupine s kratkimi pozivi (wrap) se
izrišejo pravilno, in prav zato je bilo videti mesece kot napaka paketa in ne
kot pravilo mreže.
Izsek se sme shraniti — sospremljanje
To je predpogoj za vse ostalo in ni bilo očitno.
Configuration::updateSettings($input) teče č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 ugasne |
SettingMulticheckbox | prazna množica |
SettingDisableactions | isti razred, isti učinek |
SettingImConvert | prazen niz |
SettingSavedir | napaka — in upravitelj zavrže celoten postopek |
Obrazec, ki prikaže le izsek, torej tiho ugasne vsako stikalo zunaj izseka. Na živi namestitvi: 86 nastavitev teh razredov, 54 od njih z vrednostjo, ki bi jo odsotnost spremenila.
Štirje teki proti isti nespremenjeni poti pisanja, območje wkmail,
12 od 368 nastavitev vidnih:
| Tek | Polj | Rezultat |
|---|---|---|
| Celoten obrazec (kar pošlje priloženi upravitelj sam) | 339 | 7 prireditev spremenjenih — referenčna vrednost |
| Izsek s sospremljanjem | 66 | 0 sprememb preko referenčne vrednosti |
| Izsek brez sospremljanja | 12 | preverjanje odpove, nič ni shranjeno |
| Izsek, sospremljanje brez stikal | 15 | 51 sprememb preko referenčne vrednosti |
Med teh 51: useacl = 0, securecookie = 0, iexssprotect = 0,
relnofollow = 0, sneaky_index = 0. Prva ugasne upravljanje dostopa
celotnega wikija — sproženo s shranjevanjem dvanajstih poštnih nastavitev.
Tretji tek je bil potreben, ker drugi zavaja: brez sospremljanja pade zraven
savedir, čigar napaka zavrže celoten postopek, in nič sprememb je potem
videti kot neškodljivost.
Urejevalnik zato za natanko te razrede sospremlja skrita polja s trenutno vrednostjo — 54 kosov, približno 4 kB. Samo zanje: sospremljati vseh 368 bi bilo večje, potrebovalo bi serializacijo na razred in bi zapisalo šifrirana gesla v dokument.
Seznam razredov je literal, in literal, ki lahko zastara, je napaka, ki čaka na
posodobitev DokuWikija. _test/SettingsCarryTest.php ga zato preverja v obe
smeri proti izvorni kodi paketa za nastavitve.
Vračanje 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 pisca torej isto.
Povezava &wkreset=<ključ> zato izbriše le lokalno vrednost na objektu,
ki živi le 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 nastavitve, tudi za večvrednostne, ki jih gumb za oddajo ne bi mogel izraziti;
- GET nikoli ne piše — predhodni nalagalnik, zaznamek ali pajek, ki sledi povezavi, ne spremeni ničesar;
- bralec pred shranjevanjem vidi, kaj bo shranil.
&wkreset=* vrne vse odklone prikazanega območja, s povratnim vprašanjem
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 gradbeno loči od imena paketa — imenik paketa se tako ne more
imenovati, ker ga nalagalnik manifestov preveri proti [A-Za-z0-9_-]+.
Območje se zapomni za vsakega uporabnika, in to ni udobje.
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 vsako shranjevanje pristalo nazaj v jedrnih nastavitvah.
Naslov je ključ, ne začetek stavka
Setting::prompt() vrne en niz, vrstica pa potrebuje dvoje: nekaj za
preletavanje in nekaj za branje.
Prvi poskus je poziv odrezal na prvi meji stavčnega člena. Izmerjeno je to dalo naslove kot „Absendername, den Empfänger sehen, z„ — rez je pristal v „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 in to ni. In vsako pravilo, ki popravi ta dva primera, je pravilo o nemških okrajšavah, v polju, ki obstaja v petih jezikih.
Naslov je zato ključ sam — tisto, kar poimenuje dokumentacija, kar vpraša podpora in kar skrbnik vtipka v iskanje. Poziv ostane cel in stoji kot razlaga pod njim.
Kaj ni bilo zgrajeno in zakaj
Noben filter „opuščeno“. DokuWiki nima takega polja. Brati besedo iz poziva
bi bila domneva v preobleki metapodatkov: odvisna bi bila od prevoda, sprožila bi
se pri vsakem stavku, ki opuščen postopek le omenja, in bi v petih jezikih
odgovarjala različno. Namesto tega urejevalnik bere neobvezen metapodatkovni
parameter _deprecated, ki ga paket lahko nastavi v svoji
conf/metadata.php.
Zato pa obstajata dva pogleda, za katera vir obstaja: Spremenjeno
(Setting::isDefault()) in Neznani ključi (Configuration::getUndefined()).
Vrstica dejavnosti je še vedno seznam paketov. Predelava na skrbniška delovna področja spremeni besedišče skupne površine — zadeva pogodbo o značkah in razporeditev, shranjeno za vsakega uporabnika. Teče kot lasten postopek.
Majhni zasloni
Oba stolpca vrstice sta minmax(0, …). Noben stolpec ne more biti
odmerjen po svoji vsebini, in s tem nobena oznaka, noben stavek in nobena
vrednost ne more potisniti kontrolnika izven vidnega območja — to ni okus, ampak
natanko napaka, proti kateri je bil ta zaslon zgrajen.
Pod 1024 px se kontrolnik preseli pod besedilo; pod 768 px postane vrstični meni list, potrditveno polje pa 24 px veliko. Prelomne točke so tiste te namestitve (768/1024/1280).
Prevzeto na sliki pri 320, 390, 768 in 1280 px, v treh jezikih — nemško in italijansko, ker vsak vodi eno od dveh mer (nemško največ posameznih vrhov, italijansko največjo vsoto), in angleško kot izhodišče. Noben element ne sega čez rob okna.
Dostopnost
<label for>samo tam, kjer to drži. Večvrednostna nastavitev izriše eno vnosno polje na izbiro in nobeno od njih ne nosi oznake nastavitve same; oznaka, ki bi kazala tja, bi napis povezala z ničemer — slabše od navadnega napisa, ker bralnik zaslona povezavo napove.- Stanje nikoli samo prek barve. „Spremenjeno„ je črta in besedna oznaka.
- Vrstični meni je
<details>— upravljiv s tipkovnico in brez skripta. - Sporočila tečejo prek žive regije, tudi če se poleg pojavi obvestilo.
- Zadetne površine najmanj
–wk-touch-min(40 px, pod grobim kazalcem 44).
Sorodne teme
- FluentUI: skrbniško območje podrobno — območja, v katera ta zaslon dostavlja
- Vertical Grid: osnove — popravljena definicija stolpcev
- FluentUI: oblikovalski tokeni —
–wk-touch-minin tokeni za dotik