Základní modul celé aplikace, obsahuje společné třídy, komponenty, assety, atp. Spojuje celou aplikaci.
Namespace: Wakers\BaseModule\<folder>\*
.
Vzorová třída: Wakers\BaseModule\Component\Admin\BreadCrumb\BreadCrumb
Admin\BaseControl
- Předek všech Admin komponent - napříč celou aplikací (všechny Admin komponenty od něj dědí).Admin\NavBar
- generuje navigační (dropdown) menu v site-manageru.Admin\Bradcrumb
- generuje drobečkové menu v site-manageru.
Common\BaseControl
- Předek všech Common komponent - napříč celou aplikací (všechny Common komponenty od něj dědí).Common\AssetLoader
- zajištuje načítání JS, CSS, Fontů a dalších statických souborů.Common\Logout (HandleLogout)
- zajištuje odhlašování uživatelů.Common\Modal (HandleModalToggle)
- zajištuje otevírání modálních oken skrze PHP.Common\Notification
- zajištuje výpis notifikací skrze PHP.Common\PermissionWatcher
- porovnává identitu přihlášeného uživatele (zda-li nebyla změněna v DB).
Frontend\BaseControl
- Předek všech Frontend komponent - napříč celou aplikací (všechny Frontend komponenty od něj dědí).Frontend\DashboardModal
- modální okno s Dashboardem (sestaví podle použitých modulů - dle app.neonparameters.dashboard
).
Builder\AclBuilderFactory
- registuje celý ACL do DI podle použitých modulů.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
.
Pro všechny modulové AdminPresentry - napříč celou aplikací existuje předek Presenter\BaseAdminPresenter
.
Presenter\BaseAdminPresenter
načítá výchozí layout:@layout.latte
, v modulech lze tedy používat pouze view.Presenter\AdminPresenter
- Admin presenter pro base-module (lze zde registrovat komponenty pro base-module).
Util\AjaxValidate
- traita s metodou success
, kterou lze využít při validaci formulářu.
- Př:
$form->onValidate[] = function (Form $form) { $this->validate($form) };
.
Pro práci se soubory slouží třída Wakers\BaseModule\Util\ProtectedFile
.
- Ukládá soubory do neveřejného adresáře.
- Pomocí 2 základních metod či maker lze soubory zpřístupnit.
- Zajištuje i generování náhledových obrázků (ořezů).
- Z formuláře přijde objekt typu
Nette\Http\FileUpload $fileUpload
. - Vytvoříme instanci
ProtectedFile $protectedFile
a uložíme soubor.
$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
- Načteme název souboru.
- Vytvoříme instanci
ProtectedFile $protectedFile
, již s názvem souboru. - Následně soubor odstraníme (z neveřejného i veřejného adresáře).
$name = 'nahled.jpg' // Načteno např. z DB
$protectedFile = new ProtectedFile('my-super/sub-folder/', $name);
$protectedFile->remove();
Publikování souboru či obrázku se může řešit na úrovni šablony viz latte šablona.
- Načteme název souboru.
- Vytvoříme instanci
ProtectedFile $protectedFile
s názvem souboru a přidáme mu i extra atribut. - Soubor vypíšeme v šabloně a vypíšeme i atribut.
$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);
{* Makro file vytvoří kopii souboru do veřejného adresáře a vrátí cestu k souboru *}
<a href="{file $protectedFile}">Odkaz na soubor</a>
{* nebo *}
<a href="{$basePath . $protectedFile->getFile()}">Odkaz na soubor</a>
{* 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 *}
<img src="{img $protectedFile, '1200xNULL', 'SHRINK_ONLY'}" title="{$protctedFile->getAttr('title')}">
{* nebo *}
<img src="{$basePath . $protectedFile->getPublicImage('1200xNULL', 'SHRINK_ONLY')}" title="{$protectedFile->getAttr('title')}">
{* Vypíše pouze, pokud existuje privátní soubor - nevytváří tedy šedý obrázek *}
{if $protectedFile->getPrivateFile()})
<img src="{img $protectedFile, '1200xNULL', 'SHRINK_ONLY'}" title="{$protctedFile->getAttr('title')}">
{/if}