Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Razširitve DokuWikija (WvdS) » FluentUI (knjižnica oblikovalskega sistema) » FluentUI: lupine območij » FluentUI: urejevalnik nastavitev

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

sl/wiki/dwe/wkfluentui/area/settings-editor.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille