Projekt

Obecné

Profil

Dokument Architektura » Historie » Revize 3

Revize 2 (Miroslav Krýsl, 2021-05-26 12:02) → Revize 3/4 (Miroslav Krýsl, 2021-05-26 13:26)

h1. Architektura projektu 

 h2. Use cases pluginu 

 !genealogy_usecase.png! 

 h2. Komponenty pluginu 

 Cílem tohoto projektu je mimo jiné i refaktor stávajícího kódu a rozdělení aplikace do vrstev. 

 Obsluha volání je rozdělena do logicky souvisejících částí (prefix GT_Plugin), komplexní logika je implementována unitř více služeb (GT_Services ...) a datovou vrstvu realizují Data Access Objects (GT_DAOs ...). 

 DAOs a Services jsou jednotlivým částem pluginu přístupné pomocí IoC Containeru. 

 !genealogy_components.png! 

 h2. Souborová struktura 

 Souborová struktura dodržuje standard předepsaný pro plugin WordPress. 
 Projekt je rozdělený do několika hlavních sekcí: 
 * admin 
 ** _Front-End pro administrátorskou část pluginu._ 
 * common 
 ** _Sdílená logika projektu pro Front-End._ 
 * includes 
 ** _Sdílená logika projektu pro Back-End._ 
 * public 
 ** _Front-End pro uživatelskou část pluginu._ 

 !Untitled%20Diagram%20%281%29.png! 

 h2. Jmenná konvence 

 V celém projektu pluginu je dodržována jmenná konvence nastavená pro plugin WordPress. 

 h2. Proces zpracování uživatelských požadavků 

 Níže uvedený diagram zobrazuje průběh zpracování uživatelského požadavku. 

 !Untitled%20Diagram.png! 

 h2. Důležité výčetní typy 

 Je velmi důležité dodržovat používání těchto výčetních typů pro zachování přehlednosti kódu a snadnou udržitelnost. 
 Výčetní typy poskytují textovou reprezentaci, kterou lze snadno změnit bez nutnosti většího zásahu do kódu pluginu. 
 Každý tento výčetní typ má svoji podobu ve verzi pro skripty v JS a PhP. 

 h3. Name Types 
 @common/js/enums/name_types.js@, @includes/enums/GT_Name_Type.php@ 

 h3. Request Types 
 @common/js/enums/request_types.js@, @includes/enums/GT_Request_Type.php@ 

 Pro stranu „front-endu“ je zde definován výčet selektorů, které jsou nezbytné či klíčové pro nutnou funkčnost pluginu. 
 Obsahuje primárně ID selektory důležité pro hlavní funkcionalitu pluginu. 
 Z důvodu přehlednosti se na místo běžné textové reprezentace používají tyto selektory, aby byla jakákoli změna ze strany šablon (HTML) velmi snadno a nebylo nutné zasahovat přímo do logické části programu. 

 h3. Selektory 
 @common/js/enums/selectors.js@