-
Notifications
You must be signed in to change notification settings - Fork 1
Home
NEAKTUÁLNE
Zajištuje uložení a zobrazení úloh na webu. Základním vstupem je XML soubor úloh, který se buď stahuje z spolecne:texani:astrid anebo je možno jej uploadovat.
Data úloh jsou pak uložena v adresáři ''data/meta'' na několika místech:
- adresář ''fksdownloader''
- původní data ve formě XML souboru (ať už uploadovná nebo stažená z Astrid),
- adresář ''fkstaskrepo''
- lokální patche jako serializované pole (pro každou úlohu zvlášť),
- štítky úloh v SQLite databázi
- soubor ''fkstaskrepo.sqlite3''.
Ruční editací dat úlohy vznikne lokální soubor s patchem. Při aktualizaci XML souboru zůstává patch zachován, ale kolem úlohy je zobrazen rámeček symbolizující potenciální neaktuálnost dat (neporovnává se obsah, ale jen čas poslední změny).
- Dát 'Upravit' na zastaralé úloze.
- Zkopírovat si text upravené úlohy někam (A).
- Smazat text úlohy a uložit ji. Tím se zruší lokální patch text úlohy (štítky se zachovají).
- Znovu dát 'Upravit' a porovnat text úlohy s tím v (A) a případně zanést nalezené změny a uložit znovu.
Proces výše nejde zautomatizovat, šel by jen usnadnit uděláním diffu a v případě, že je prázdný automaticky uložit, jinak jej uživateli zobrazit.
...Stáhne a dle šablony vykreslí jednotlivé úlohy. Úlohy pak lze upravit. Upravený text úlohy není aktualizován při updateu originálního XML.
Pro správnou funkci musí být nainstalován MathJax plugin a mít správnou konfiguraci maker (obvykle na stráce ''system:mathjaxconfig'').
//Jazyk// úlohy se bere buď se zadáného parametru ''language'' anebo pokud se vynechá, tak se bere z ''$conf['lang']'', který se očekává nastaven dle jazyka stránky.
Využívá pluginů: https://www.dokuwiki.org/plugin:text, https://www.dokuwiki.org/plugin:searchtext a https://www.dokuwiki.org/plugin:sqlite.
- path_mask_(cs|en)
- ''printf'' maska s cestou na Astrid, odkud se stahují úlohy (argumenty jsou: ročník, série)
- task_template_(cs|en)
- stránka, kde je template pro jednotlivou úlohu
- ''@key@'' jsou nahrazeny daty z úlohy, kde ''key'' odpovídá polím z přenosového XML
- task_template_search_(cs|en)
- obdoba parametru výše, ale použití při renderování výsledlů hledání
- vymyslet správné namespacy, kam ukládat zadání (''path_mask_(cs|en)'') a nastavit redirecty ze starých stránek (jako galerie)
- vymyslet namespacy, kam nahrávat PDFka (vzoráky, brožurky) a tyhle nastavit v kódu templatů
- ověřit filelink
- přidat plugin 'text', aby fungovalo vyhledávání v textu úloh
- Už je na webe FKS_newsfeed ho vyžaduje --- //[[[email protected]|Michal Červeňák]] 2016/03/14 00:29//
- vícejazyčnost
- existuje podpora pro ukládání anglického XML a zobrazení spolecne:dokuwiki:pluginy:fkstaskrepo?do=diff&rev2%5B0%5D=1412623690&rev2%5B1%5D=1427079255&difftype=sidebyside
- štítkování
- Metoda ''helper_plugin_fkstaskrepo::storeTags'' je příliš tupá a neuloží dobře štítky k úloze, obzvlášť pokud se mění jazyk rozhraní ve zdrojáku stránky -- to zjišťování jazyka chce lépe promyslet.
- volba defultního jazyka
- "Problem -- language is detected in template, however this action plugin runs even before the template, so $conf['lang'] is not set." u metody ''action_plugin_fkstaskrepo::getPageLanguage''.
- refaktoring: ukládat některá data společně pro obě jazykové verze (např. obrázky k zadání mimo text zadání)
- při tomto by se mohly uplatnit snahy o jednotnou databázi úloh, potažmo jednotného (primárního) formátu úloh. Z pohledu fkstaskrepo je jednotným formátem to importní XML. Z globálního hlediska je to ale jen transportní formát (ne nutně primární jako např. TeX soubory) a nemusí obsahovat všechny informace (např. ty štítky jsou uloženy jenom v SQLite databázi samotného fkstaskrepa, bylo by hezké mít promyšlen i opačný směr (export XML i se štítky) a vícejazyčnost je řešena jen tím, že je prostě jednom XML per jazyk).
- sjednotit i na Výfuk (a pořešit kompatibilitu, aby se to dalo aktualizovat při jednom)
- tj. pokud se zamergeuje ta větev ''i18n'', tak aby byla použitelná i na Výfuku (a jeho formátu dat)
==== Idea templatů ====
(Viz poznámku o namespacech výše.)
====== @series@. série @year@. ročníku ======//Termín odeslání poštou: @deadline-post@// \ //Termín uploadu: @deadline@//
{{rocnik@year@:s@series@:serie@[email protected]|Brožurka se zadáním}}
-- problem -- -- endproblem --
====== Series @series@ of volume @year@ ======//Upload deadline: @deadline@// \ //Mail deadline: @deadline-post@//
{{rocnik@year@:s@series@:serie@[email protected]|Booklet (in Czech)}}
-- problem -- -- endproblem --
==== Úloha @label@ ... @name@ (@points@ bodů) ====@task@
{{filelink>rocnik@year@:s@series@:reseni@series@-@[email protected]|Řešení}}
==== Problem @label@ ... @name@ (@points@ points) ====@task@
{{filelink>rocnik@year@:s@series@:reseni@series@-@[email protected]|Solution (in Czech only)}} {{filelink>volume@year@:s@series@:reseni@series@-@[email protected]|Solution (English)}}