Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wakerscz/cms-base-module
⚒ Základní modul celého CMS. Poskytuje rozhraní pro usnadění vývoje dalších modulů a komponent. Dynamicky spojuje celou aplikaci.
https://github.com/wakerscz/cms-base-module
Last synced: about 2 months ago
JSON representation
⚒ Základní modul celého CMS. Poskytuje rozhraní pro usnadění vývoje dalších modulů a komponent. Dynamicky spojuje celou aplikaci.
- Host: GitHub
- URL: https://github.com/wakerscz/cms-base-module
- Owner: wakerscz
- License: mit
- Created: 2018-12-06T03:41:14.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-08-01T00:30:03.000Z (over 4 years ago)
- Last Synced: 2024-04-07T03:21:07.094Z (9 months ago)
- Language: PHP
- Homepage:
- Size: 78.1 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# BaseModule
Základní modul celé aplikace, obsahuje společné třídy, komponenty, assety, atp. Spojuje celou aplikaci.**Namespace:** `Wakers\BaseModule\\*`.
**Vzorová třída:** `Wakers\BaseModule\Component\Admin\BreadCrumb\BreadCrumb`
## Komponenty
### Admin (site-manager)
1. `Admin\BaseControl` - Předek všech Admin komponent - napříč celou aplikací (všechny Admin komponenty od něj dědí).
2. `Admin\NavBar` - generuje navigační (dropdown) menu v site-manageru.
3. `Admin\Bradcrumb` - generuje drobečkové menu v site-manageru.### Common (společné Admin i Frontend)
1. `Common\BaseControl` - Předek všech Common komponent - napříč celou aplikací (všechny Common komponenty od něj dědí).
2. `Common\AssetLoader` - zajištuje načítání JS, CSS, Fontů a dalších statických souborů.
3. `Common\Logout (HandleLogout)` - zajištuje odhlašování uživatelů.
4. `Common\Modal (HandleModalToggle)` - zajištuje otevírání modálních oken skrze PHP.
5. `Common\Notification` - zajištuje výpis notifikací skrze PHP.
6. `Common\PermissionWatcher` - porovnává identitu přihlášeného uživatele (zda-li nebyla změněna v DB).### Frontend
1. `Frontend\BaseControl` - Předek všech Frontend komponent - napříč celou aplikací (všechny Frontend komponenty od něj dědí).
2. `Frontend\DashboardModal` - modální okno s Dashboardem (sestaví podle použitých modulů - dle app.neon `parameters.dashboard`).## Buildery
### ACL Builder
1. `Builder\AclBuilderFactory` - registuje celý ACL do DI podle použitých modulů.
2. `Builder\AuthorizatorBuilder` - předek všech Authorizátorů (osatatní od něj musí dědit).Každý modulový Authorizator se musí registrovat v config.neon v sekci `parameters.acl`.
## Presenter a layout
Pro všechny modulové AdminPresentry - napříč celou aplikací existuje předek `Presenter\BaseAdminPresenter`.2. `Presenter\BaseAdminPresenter` načítá výchozí layout: `@layout.latte`, v modulech lze tedy používat pouze view.
3. `Presenter\AdminPresenter` - Admin presenter pro base-module (lze zde registrovat komponenty pro base-module).## Util
### Ajaxová validace formulářů
`Util\AjaxValidate` - traita s metodou `success`, kterou lze využít při validaci formulářu.1. Př: `$form->onValidate[] = function (Form $form) { $this->validate($form) };`.
### Práce se soubory
Pro práci se soubory slouží třída `Wakers\BaseModule\Util\ProtectedFile`.1. Ukládá soubory do neveřejného adresáře.
2. Pomocí 2 základních metod či maker lze soubory zpřístupnit.
3. Zajištuje i generování náhledových obrázků (ořezů).#### Nahrávání souboru
1. Z formuláře přijde objekt typu `Nette\Http\FileUpload $fileUpload`.
2. Vytvoříme instanci `ProtectedFile $protectedFile` a uložíme soubor.```PHP
$protectedFile = new ProtectedFile('my-super/sub-folder/', NULL);
$tmsName = $protectedFile->move($fileUpload); // vrací unikátní název// ... Název někam uložíme - třeba do DB
```##### Odstranění souborů
1. Načteme název souboru.
2. Vytvoříme instanci `ProtectedFile $protectedFile`, **již s názvem souboru**.
3. Následně soubor odstraníme (z neveřejného i veřejného adresáře).```PHP
$name = 'nahled.jpg' // Načteno např. z DB
$protectedFile = new ProtectedFile('my-super/sub-folder/', $name);
$protectedFile->remove();
```#### Publikování souboru / vytvoření ořezu
Publikování souboru či obrázku se může řešit na úrovni šablony viz latte šablona.1. Načteme název souboru.
2. Vytvoříme instanci `ProtectedFile $protectedFile` **s názvem souboru** a přidáme mu i extra atribut.
3. Soubor vypíšeme v šabloně a vypíšeme i atribut.##### Příklad PHP (Repository):
```PHP
$name = 'nahled.jpg'; // Načteno např. z DB
$title = 'Titulek obrázku'; // Načteno např. z DB$protectedFile = new ProtectedFile('my-super/sub-folder/', $name);
$protectedFile->setAttr('title', $title);
```##### Příklad Latte:
```LATTE{* Makro file vytvoří kopii souboru do veřejného adresáře a vrátí cestu k souboru *}
{* nebo *}
{* Makro img vytvoří oříznutý obrázek a vrátí cestu k souboru
Pokud soubor ještě nebyl nahrán (neexistuje privátní soubor), vytvoří šedý obrázek *}{* nebo *}
{* Vypíše pouze, pokud existuje privátní soubor - nevytváří tedy šedý obrázek *}
{if $protectedFile->getPrivateFile()})
{/if}
```