Projekt

Obecné

Profil

Architektura » Historie » Revize 13

Revize 12 (Tomáš Pašek, 2021-05-23 18:27) → Revize 13/14 (Tomáš Pašek, 2021-05-23 18:28)

h1. Architektura aplikace 

 !architecturepng.png! 

 Ve výše přiloženém diagramu představuje každá "bublina" vlastní složku a logický celek. Jak je ze schématu patrné, uživatelům jsou přímo přístupné celé stránky z kořenového adresáře (changes.php, contacts.php, atd...). Tyto soubory využívají položek z _view_, jmenovitě to jsou položky _header.html_, _menu.php_, _footer.html_, _style.css_ a pak příslušné položky z _view/contents_ představující samotný obsah stránek. Aplikace byla strukturována do těchto modulů z důvodu snížení duplicit kódu a zjednodušení orientace případným správcům. Aplikace využívá pro responzivní zobrazení (aka správně zobrazení v různých rozlišení) *bootsrap*. Pro příjemnější vzhled aplikace využívá ikony *font awesome*. 

 h2. view 

 h3. fonts 

 Aplikace obsahuje dva volně dostupné fonty připojené globálně ve _style.css_ přes definovací funkci *@font-face*. Font *impacted* je využit v hlavičce aplikace v položce _header.html_. Druhý font _charis-sil_ je využit na veškerý zbylý text aplikace. 

 h3. img 

 Veškeré obrázky aplikace jsou uloženy a načítány z této složky. V momentální verzi je v této složce obsaženo logo zču, ikona pro dropboxy(nejjednodušší sjednocení stylu ikonky) a dvojice gifů použitých v uživatelských příručkách, jež jsou součástí samotné aplikace. 

 h3. js-scripts 

 V této složce jsou obsaženy hlavní javascriptové metody využívané aplikací (nicméně ne všechny). Některé javascriptové funkce byly zachovány v jejich původních místech, to se týký zejména funkcionalit ovládající modali a samotné volání ovladačů. Tyto "vyjímečné" scripty je možné najít přímo v segmentech tématicky týkajících se příslušné funkcionality.  
 Soubor _convertors.js_ obsahuje utilky (ne vždy se jedná o metody, mnohdy jsou to pouze objekty nebo pole) pro převod kódů získaných z databáze do uživatelsky pochopitelného textu. Tento soubor je ideální prostudovat pro pochopení zkratek využívaných v aplikaci (většina z nich zavedena již z předchozí aplikace a databáze). 

 h3. library 

 Aplikace využívá dvě knihovny pro přestylování a rozšírení funkcionality komponenty multiselectu. Komponenta _vanillaSelect_ je využívána pro reprezentaci filteru manuscriptu v normálních částech aplikace (momentálně pouze v _searchContent.php_) a komponenta _jQueryMulti_ je používána za obdobným účelem v jQuery generovaných modalech (momentálně pouze v _editModal.html_). 

 h3. modals 

 Modaly aplikace jsou vytvářeny za využití jQuery a volají-li php script, je volání těchto scriptů děláno ručně přes FormData. Jinak řečeno v modalech *není využívan tag form*, důvodem toho je nutnost preprocessingu na klientu před předáním scriptům serveru. Modaly _editModal.html_ a _editUserModal.html_ jsou využívány nejenom pro editaci, ale i pro přidávání (prevence duplicity kódu), z tohoto důvodu je v těchto souborech rozlišován účel modalu (a tudíž i volaný script) podle titulku modalu. Tyto dva modaly rovněž řeší předvyplnění daty, aby nebylo nutné opět získávat data ze serveru přes dříve definovaná pole v _view/contents/searchContent.php_ a _view/contents/userContent.php_. Do pole je přistupováno přes modalu předané pseudo-id (aka kolikátá položka v poli má být v modalu načtena. 

 h3. contents 

 Soubory v této složce představují samotný obsah jednotlivých stránek. Příslušnost stránce je patrná z názvů, jež by měli odpovídat názvu stránek (viz obrázek). Soubory _contactsContent.html_, _manualContent.html_, _userManualContent.html_, _indexContent.html_ a _materialContent.html_ je jednoduchý, jedná se jenom o obyčejný text. Zbylé soubory obsahují i jednoduché js scripty pro dotažení dat do tabulek, nebo využívají již dříve zmíněné scripty ze složky _view/js-scripts_. Jelikož výsledky jsou stránkovány a filtovány pouze v _searchContent.php_, soubory _view/js-scripts/paging.js_ a _view/js-scripts/filterControl.js_ jsou využívány pouze tímto souborem. 

 h2. controller 

 h3. CreateChangeRequestController.php 

 Tento controller se volá pro vytváření záznamu změnového požadavku od uživatelů. V $_POST očekává 2 parametry a to: wordform_id (id slova), a message (zprávu od uživatele o navržené změně) 

 h3. DeleteUserController.php 

 Tento controller vymaže vybraného uživatele z databáze. Vyžaduje 1 parametr v $_POST, a to userId (id uživatele pro smazání). Dále je nutné aby byl při volání tohoto controlleru uživatel přihlášen pod účtem s administrátorskými právy, jinak se nic nevykoná. 

 h3. GetChangeRequests.php 

 Tento controller vrátí seznam návrhů změnových požadavků z databáze. Pro jeho zavolání je nutné být přihlášen. 

 h3. InsertController.php 

 Tento kontroler vloží záznam o dokumentu do databáze. V proměnné $_POST je třeba, aby se nacházelo 6 parametrů, lemma (textová podoba lematu), tag (zakódovaná podoba morfologie), word (textová podoba slova), position1 (první část pozice) position2 (druhá část pozice) a manuscript (pole rukopisů oddělené pomocí ","). 

 h3. LoginController.php 

 Tento controller slouží k přihlášení uživatele. V $_POST očekává parametry username a password. V případě správně zadaných údajů se poté do $_SESSION uloží informace o přihlášení. 

 h3. LogoutController.php 

 Tento controller odhlásí momentálně přihlášeného uživatele a vymaže informace uložené v $_SESSION. 

 h3. RegistrationController.php 

 Tento controller slouží pro vytvoření nového uživatele. V $_POST očekává celkem 3 údaje, a to username, password a role. Jako role může být vložen libovolný string, nicméně aplikace v současnosti používá pouze 2 role a to admin a editor, tudíž se předpokládá vložení některé z nich. 

 h3. RemoveChangeRequest 

 Tento controller slouží k odstranění záznamu návrhu změny od uživatele. V $_POST očekává requestId , což je id záznamu změny v databázi. Pro zavolání tohoto controlleru je nutné být přihlášen, jinak se smazání nevykoná. 

 h3. RemoveController 

 Tento kontroler smaže záznam o dokumentu z databáze. V proměnné $_POST je třeba jeden parametr a to id (id záznamu v tabulce dd_wordform). 

 h3. TableController 

 Tento controller slouží k vytažení záznamů slov z databáze. V $_POST jsou vyžadovány 2 parametry, a to page (stránka) a items_per_page (počet položek na stránku). Díky těmto parametrům jsou vráceny pouze záznamy z dané stránky. Dále je možné použít některé nepovinné parametry sloužící k filtraci záznamů. Tyto parametry jsou lemma, description2, word, position1, position2, positiondetail, manuscript, tag_pos, tag_case, tag_number, tag_gender, tag_shape, tag_num, tag_sentence, tag_verb_person, tag_verb_time, tag_verb_degree a tag_verb_aspect. Pokud tento controller zavolá přihlášený uživatel, jsou z databáze vráceny i záznamy, které mají v tabulce dd_wordform ve sloupci finished hodnotu false. Pro nepřihlášené uživatele se vracejí pouze záznamy s finished = true. 

 

 h3. UpdateController 

 
 Tento kontroler upraví záznam o dokumentu v databázi. V proměnné $_POST je třeba, aby se nacházely 3 parametry, lemma (textová podoba lematu), tag (zakódovaná podoba morfologie) a id (id záznamu v tabulce dd_wordform). Dále je třeba přidat parametry, které je třeba změnit. 

 

 h3. UpdateUserRoleController 

 Tento controller slouží ke změně role pro daného uživatele. V $_POST očekává 2 parametry a to userId (id uživatele) a role (hodnota pro novou roli). Pro zavolání tohoto controlleru musí být uživatel přihlášen pod účtem s rolí admin. 

 h3. UsersListController 

 V tomto controlleru se vrací list všech uživatelů. Pro zavolání je nutné být přihlášen pod rolí admin. 

 h2. model 

 V modelu se nacházejí datové struktury využívané v aplikaci. Lemma, Tag a Word představují objekty v databázi pro záznamy slov. Dále je zde třída DB.php, která slouží pro práci s databází. Mimo tuto třídu se s databází přímo nikde nepracuje a pro jakékoliv volání databáze se využívá právě tato třída. V této třídě se také konfigurují údaje potřebné pro připojení k databázi.