Gorazd Editor

Aplikace byla vytvořena v rámci projektu GORAZD: Digitální portál staroslověnštiny (projekt je realizován v rámci programu NAKI II Ministerstva kultury ČR, DG16P02H024, 2016-2020). Webová aplikace Gorazd Editor slouží pro opravy a úpravy hesel uložených jako soubory formátu Gorazd XML (XSD schema formátu Gorazd XML) ve správním systému Invenio (https://invenio-software.org), včetně pomocných MARCXML souborů sloužících pro samotnou správu dat. V systému Invenio lze uživatelům přidělovat různé role (editor, korektor, správce, ...) a na základě nich pak řídit přístup k datům.

Instalace

Aplikace Gorazd Export potřebuje ke svému běhu funkční instalaci Invenia a lze je tedy spouštět pouze na stroji, kde je systém Invenio nainstalován. Gorazd Editor je distribuován ve formě zdrojových souborů, které se nahrají do systému Invenio verze 1.2.

Požadavky:
- PHP 5.x – základní instalace, navíc knihovna pro práci s XSL a XML
- MySQL
- Invenio v. 1.2

Postup:
1) Kopírování zdrojových souborů do Gorazd Editoru do webového prostoru serveru.

Webovým prostorem serveru se rozumí složky, ve které se dají používat PHP soubory a jsou viditelné přes adresu serveru. Po nakopírování obsahu editoru na server je nezbytná kontrola práv. Všechny soubory by měly být minimálně přístupné pro čtení všem.

2)Konfigurace MySQL.

Pomocí jakéhokoliv nástroje umožňujícího přístup do MySQL např.: PhpMyAdmin,Workbench … se připojíme do MySQL. Vytvoříme novou databázi pojmenovanou v tomto případě „gorazd_editor“. Do této nově vytvořené databáze provedeme import. V záložce import vybereme postupně oba soubory přiložené k editoru obsahující strukturu tabulek potřebných pro editor. Po úspěšném importu by se v nové databázi měly objevit dvě nové tabulky „editor_cache“ a „editor_clipboard“.

3) Vytvoření uživatele v MySQL, který bude mít přístup do naší nově vytvořené databáze.

Gorazd Editor nevyžaduje vyšší práva než plnou editaci tabulek „editor_cache“ a „editor_clipboard“.

4) Vlastní konfigurace editoru.

V souboru „mysql_config.php“ vyplníme položky „username“ (uživatelské jméno nově vytvořeného uživatele pro editor), „password“ (heslo nově vytvořeného uživatele pro editor), „dbname“ (jméno nově vytvořené databáze, v tomto případě „gorazd_editor“).

Přizpůsobení editoru:
Pokud dojde ke změně názvů složek nebo souborů je potřeba dané změny promítnout do patřičných souborů:
1. Složka nebo soubory složky „css“ a „js“ – promítnout do „index.html“.
2. Složka nebo soubory složky „xsl“ a „xsd“ – promítnout do „/js/vars.js“ a „xml_xsl.php“.
3. Složka nebo soubory složky „fonts“, „img“ - promítnout do „index.html“ a souborů složky „css“.
4. Soubor „xml_xsl.php - promítnout do „/js/var.js“.

Celá struktura Gorazd Editoru:
| editor.html – hlavní HTML soubor obsahující celou kostru
| gorazd_status_set.php – soubor umožňující Inveniu měnit stav záloh
| mysql_config.php – soubor obsahující konfiguraci editoru pro přístup do MySQL
| xml_xsl.php – soubor zprostředkovávající komunikaci JavaScriptu s MySQL a Inveniem, provádí transformace
|
+---css – složka obsahuje všechny styly používané v editoru
| | blocks.css – styly pro vnitřek záznamu, styly bloků
| | fonts.css – definice fontů s cestami
| | global.css – globální styly pro editor
| | loader.css – styly pro načítání
| | material_icons.css – styly pro ikony
| | split_move.css – styly pro dělící posuvník
| | virtual_keyboard.css – styly pro virtuální klávesnici
| |
| \---jquery – složka obsahuje vzhledy pro knihovnu jQuery
| | jquery-ui.css
| |
| \---images
| ui-bg_flat_0_aaaaaa_40x100.png
| ui-bg_flat_75_ffffff_40x100 (1).png
| ui-bg_flat_75_ffffff_40x100.png
| ui-bg_glass_65_ffffff_1x400.png
| ui-bg_glass_75_dadada_1x400.png
| ui-bg_glass_75_e6e6e6_1x400.png
| ui-icons_222222_256x240 (1).png
| ui-icons_222222_256x240.png
| ui-icons_454545_256x240.png
| ui-icons_888888_256x240.png
|
+---fonts – složka obsahuje všechny fonty potřebné pro správné zobrazení v editoru
| arial_narrow.ttf
| BukyVede-Bold.ttf
| BukyVede-Italic.ttf
| BukyVede-Regular.ttf
| CB10U.TTF
| FreeSerif.otf
| FreeSerifBold.otf
| FreeSerifBoldItalic.otf
| FreeSerifItalic.otf
| material_icons.woff2
|
+---img – složka obsahuje obrázky pro animace načítání
| loader_large.gif – animace načítání (velká)
| loader_small.gif – animace načítání (malá)
|
+---js – složka obsahující JavaScript soubory
| | blocks.js – soubor obsahující práci a zobrazení s bloky záznamu
| | dialogs.js – soubor obsluhující dialogy a funkce s tím spojené
| | divs.js – soubor obsahující definice pro označování divů
| | events.js – soubor obsluhující hlavní události editoru
| | FileSaver.js
| | history.js – soubor obsluhující pohyb a ukládání historie editace
| | key_binding.js – soubor obsluhující klávesové zkratky a funkce s tím spojené
| | loader.js – soubor obsluhující zobrazení a skrytí animace načítání
| | main_func.js – soubor obsahující hlavní funkce editoru
| | menu.js – soubor obsluhující pohyb nativního menu v Inveniu
| | reqs.js – soubor obsahující všechna volání PHP souborů a s tím spojené funkce
| | selects.js – soubor obsluhující funkčnost všech rozbalovacích menu
| | select_vars.js – soubor obsahující seznamy a hodnoty pro všechna rozbalovací menu v editoru
| | split_move.js – soubor obsluhující pohyb a funkčnost dělícího posuvníku
| | vars.js – soubor obsahující cesty a definice pro editor
| | virtual_keyboard.js – soubor obsluhující funkčnost virtuální klávesnice
| | virtual_keyboard_keys.js – soubor obsahující všechna tlačítka virtuální klávesnice
| | xsl.js – soubor obsluhující transformace a funkce s tím spojené
| | zoom_menu.js – soubor obsluhující oddalování a přibližování v editoru
| |
| \---jquery – složka obsahující JavaScript soubory knihovny jQuery
| jquery-1.10.2.js
| jquery-1.11.3.min.js
| jquery-migrate-1.2.1.min.js
| jquery-ui.js
| jquery.hotkeys.js
| jquery.jeditable.mini.js
|
+---xsd – složka obsahující všechny XSD soubory pro editor
| gXML.xsd
| gXML_MS.xsd
| gXML_RSI.xsd
| tree.txt
|
\---xsl – složka obsahující všechny transformace pro editor
dzarog-part1.xsl
dzarog-part2.xsl
dzarog-part2_RSI.xsl
dzarog-part3.xsl
dzarog-part3_MS.xsl
dzarog-part3_RSI.xsl
gorazd.xsl
gorazd_MARC.xsl
gorazd_MARC_RSI.xsl
gorazd_MS.xsl
gorazd_RSI.xsl
gxmlpreview1.xsl
gxmlpreview2.xsl

Hlavní soubory editoru:
- soubor „key_binding.js“ – stará se o klávesové zkratky a jejich obsluhu v editoru
- soubor „select_vars.js“ – obsahuje seznamy a hodnoty pro všechna rozbalovací menu v editoru
- soubor „virtual_keyboard_keys.js“ – obsahuje klávesy pro virtuální klávesnici editoru
- soubor „editor.html“ – hlavní zobrazovací soubor editoru
- soubor „mysql_config.php“ – obsahuje konfiguraci po přístup editoru do MySQL

Úpravy systému Invenio

Pro funkci aplikace Gorazd Editor je potřeba upravit a rozšířit systém Invenio. Většina úprav na straně Invenia je přímočará změna v kódu hromadného editoru záznamů, který je dodáván s Inveniem. Hlavním cílem úprav je umožnit využití Invenia jakožto verzovaného úložiště dat. Každý záznam v Inveniu má tak podobu metadat, jež se z Gorazd XML získávají pomocí XSL transformace. Vlastní Gorazd XML je pak k těmto metadatům připojeno jakožto full-text standardním způsobem Invenia. Na implementační úrovni je tato funkcionalita zajištěna uložením Gorazd XML z POST requestu do podaresáře v adresáři CFG_UPLOAD_DIR, který je defaultně nastaven na /opt/invenio/var/upload. Soubor je pojmenován pomocí timestampu. Podadresář pak obsahuje informace o uživateli, který ono uložení provedl a o recid záznamu Invenia, pod který se data ukládají. Vzhledem k tomu, že Invenio není primárně konstruováno na real-time editaci dat, je potřeba pro každé uložení dat vygenerovat nejenom MARX XML soubor s FFT tagy (soubor s prefixem gorazdSubmit_fft), což je standardní způsob nahrávání fulltextových souborů do Invenia, ale i dva další soubory (prefixy gorazdSubmit_marc a gorazdSubmit_fix) se speciálními tagy, které zajišťují konzistenci mezi daty ve fulltextu, metadaty v databázi Invenia a metadaty prezentovanými Inveniem uživateli. Vlastní zpracování těchto čtyř souborů Inveniem je pak zajištěno zavoláním programu bibupload s příslušnými parametry. Invenio zajistí uložení a verzování full-textového Gorazd XML do adresáře /opt/invenio/var/data/files a konzistenci své databáze a svého prezentačního prostředí.

Pro lepší robustnost Editoru bylo přidána vlastní cache v SQL databázi, kterou obsluhuje částečně sám Editor a částečně bibtasklet bst_aip_unlock, který je spuštěn Inveniem ve chvíli, kdy na straně Invenia skončí veškeré zpracování záznamu.

gorazdedit_template.py
• Zde Invenio nahrává samotný Gorazd Editor, který je psán v HTML a Javascriptu.

gorazdedit_webinterface.py
• Obsluhuje práva (pod klíčem rungorazdedit) na spouštění Gorazd Editoru uživateli a určuje URL, kterou bude Gorazd Editor mít.

webaccount.py
• Přidána práva pro rungorazdedit pro superadmina.

access_control_config.py
• Přidána možnost přidělovat rolím práva pro spouštění Gorazd Editoru (rungorazdedit).

bibsched_tasklets/bst_aip_unlock.py
• Bibtasklet (viz dokumentace Invenia) na smazání cache u editovaného záznamu, u kterého uživatel zrušil editaci. Dojde tím k odemčení záznamu pro jiné uživatele.

gorazdedit_engine.py
• Hlavní kód definující Javascriptové soubory, které budou poskytovány Gorazd Editoru a obsluhu AJAX requestů.

Editor komunikuje s Inveniem pomocí AJAX requestů a využívá kromě standardních requestů hromadného editoru záznamů i následující nově přidané:

saveXML
• Uloží předaný XML soubor do CFG_UPLOAD_DIR/email/recid/.xml a vrátí JSON ve tvaru {"status": "OK", "filename": }. Pokud dojde k chybě vrátí {"status": "Chyba pri ukladani: chybi GORAZD XML"}.

submit_gorazdXML
• Připraví tři MARC XML, které nahraje do fronty bibschedu pomocí utility bibupload. Prvním souborem je FFT, který nahraje předané Gorazd XML. Druhým MARC, který obsahuje nová metadata získaná z předaného Gorazd XML příslušnou XSL transformací. Třetí a poslední je FIX, který zajišťuje konzistenci metadat (viz dokumentace Invenia, FFT s podpolem FIX-MARC). Tento poslední bibupload obsahuje volání bibtaskletu bst_aip_unlock, který odemyká cache v databázi editoru. Pokud předaný request obsahuje proměnnou „type“ nastavenou na „clone“, zarezervuje se nové rec_id a kromě bibuploadu tří MARC XML souborů se do fronty bibschedu přidá ještě bibindex a webcoll zajišťující reindexaci databáze a přegenerování HTML náhledů na záznamy.

get_latest_version
• Vrátí cestu k poslední verzi gorazdXML připojenému k dokumentu s daným recID ve formě JSON {'latest_version': TODO, 'gorazd_paths': full_path}. V případě neúspěchu vrátí {'latest_version': 'ERROR', 'gorazd_path': 'ERROR'}.

getUserInfo
• Vrátí JSON obsahující informace o právě přihlášeném uživateli {'userInfo': USER_INFO}.

bibsched_restarter.py
• Občas se stává, že tasky v Inveniu skončí s nespecifikovanou chybou, jejíž příčinu se nepodařilo odhalit. Typicky stačí takovýto task reinicializovat a k chybě už nedojde. Tento spustitelný skript zkontroluje, zda existují tasky v chybovém stavu a pokud ano, reincializuje je a 60 sekund počká na opětovnou kontrolu. Pokud jsou tyto tasky opět v chybovém stavu pošle e-mail správnci serveru s předmětem "gorazd.org task reinit report: ERRORS". Pokud tasky v chybovém stavu už nejsou, je předmět e-mailu "gorazd.org task reinit report" V těle mailu se nachází seznam tasků, které se nacházely (nebo nachází) v chybovém stavu.
• pod uživatelem www-data spustit:
o watch -n 300 /opt/invenio/bin/bibtask_restarter
o /opt/invenio/bin/bibsched start

search_engine.py
• Přidána knihovna icu (URL), pomocí které bylo implementováno řazení staroslověnských slov. Tento kód je využíván vyhledávacími moduly Invenia.

bibsort_engine.py
• Přidáno řazení staroslověnštiny, které je implementováno v search_engine.py.

supervisors_engine.py
• Přidána knihovna, pomocí které bylo implementována funkce kontroly práce uživatelů pro vybrané supervizory.

bfe_aip_status.py
• Přidána knihovna pro zobrazení stavu editovaného záznamu.

Spuštění

Po instalaci a konfiguraci editoru je možné přistoupit k testování a spuštění. Pro spuštění editoru je potřeba přihlášení do Invenia. Po přihlášení si uživatel vyhledá záznam, který chce spustit v editoru. Po kliknutí na jméno záznamu v seznamu vyhledaných se do nové záložky prohlížeče otevře okno obsahující editor. Editor se zobrazí jako okno rozdělené na dvě stejné poloviny. V levé polovině se nachází náhled na heslo (pokud existuje) a v pravé se nachází vlastní editace hesla. Pokud se editor zobrazí bez varování či chyb je možno považovat instalaci a konfiguraci za úspěšně provedenou a dá se přejít k vlastní editaci.

Licence

Aplikace je distribuovaná na základě otevřené licence GNU GPL v3. Úpravou zdrojového kódu lze aplikaci použít pro editovaní hesel jiných slovníků. Autoři této aplikace vám budou vděčni, když nás budete o využití zdrojového kódu této aplikace nebo jeho částí v jiných projektech informovat na e-mailové adrese gorazd@slu.cas.cz.

Instalační balíček:

Gorazd Editor 1.0

Na vzniku aplikace se podíleli:

• Mgr. Vít Tuček, Ph.D. (programátor)
• Mgr. Olga Čiperová (analytik vývoje)
• Bc. Martin Majer (manažer vývoje)
• PhDr. Štefan Pilát, Ph.D. (odborný konzultant vývoje)

© 2018, Slovanský ústav AV ČR, v. v. i.