Skip to content
This repository has been archived by the owner on Oct 18, 2024. It is now read-only.
Michal Červeňák edited this page Aug 5, 2020 · 1 revision

Plugin fkstaskrepo

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.

Uložení dat

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''.

Lokální editace

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).

Aktualizační workaround

  • 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.

Syntax

Zobrazení úlohy

...

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.

Hledání v úlohách

Využívá pluginů: https://www.dokuwiki.org/plugin:text, https://www.dokuwiki.org/plugin:searchtext a https://www.dokuwiki.org/plugin:sqlite.

Nastavení

  • 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í

Coredump

  • 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)}}