wakers/cms-base-module

Wakers CMS 5的基础模块

1.0.3-alpha 2020-08-01 00:23 UTC

This package is auto-updated.

Last update: 2024-09-29 05:48:35 UTC


README

整个应用程序的基础模块,包含公共类、组件、资源等。连接整个应用程序。

命名空间: Wakers\BaseModule\<folder>\*.

示例类: Wakers\BaseModule\Component\Admin\BreadCrumb\BreadCrumb

组件

管理后台

  1. Admin\BaseControl - 所有管理后台组件的父类 - 应用程序内(所有管理后台组件都继承自它)。
  2. Admin\NavBar - 在site-manager中生成导航(下拉)菜单。
  3. Admin\Bradcrumb - 在site-manager中生成面包屑菜单。

公共组件(管理后台和前端共用)

  1. Common\BaseControl - 所有公共组件的父类 - 应用程序内(所有公共组件都继承自它)。
  2. Common\AssetLoader - 负责加载JS、CSS、字体和其他静态文件。
  3. Common\Logout (HandleLogout) - 负责用户登出。
  4. Common\Modal (HandleModalToggle) - 通过PHP打开模态窗口。
  5. Common\Notification - 通过PHP输出通知。
  6. Common\PermissionWatcher - 比较登录用户的身份(是否在数据库中更改过)。

前端

  1. Frontend\BaseControl - 所有前端组件的父类 - 应用程序内(所有前端组件都继承自它)。
  2. Frontend\DashboardModal - 包含Dashboard的模态窗口(根据使用的模块组成 - 根据app.neon parameters.dashboard)。

构建器

ACL构建器

  1. Builder\AclBuilderFactory - 根据使用的模块将整个ACL注册到DI中。
  2. Builder\AuthorizatorBuilder - 所有授权者的父类(其他必须继承自它)。

每个模块化授权者都必须在config.neon中的parameters.acl部分注册。

演示者和布局

对于所有模块化AdminPresentry - 应用程序内存在一个父类Presenter\BaseAdminPresenter

  1. Presenter\BaseAdminPresenter 加载默认布局:@layout.latte,因此模块中只能使用视图。
  2. Presenter\AdminPresenter - base-module的管理后台演示者(可以在此处注册base-module的组件)。

工具

表单的Ajax验证

Util\AjaxValidate - traita带success方法,可以在验证表单时使用。

  1. 例如:$form->onValidate[] = function (Form $form) { $this->validate($form) };

文件操作

用于文件操作的是类Wakers\BaseModule\Util\ProtectedFile

  1. 将文件存储到非公开目录。
  2. 使用2个基本方法或函数可以访问文件。
  3. 还负责生成预览图片(裁剪)。

上传文件

  1. 表单将收到一个类型为Nette\Http\FileUpload $fileUpload的对象。
  2. 我们将创建一个ProtectedFile $protectedFile实例并保存文件。
$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
删除文件
  1. 读取文件名。
  2. 我们创建一个ProtectedFile $protectedFile实例,已经带有文件名
  3. 然后我们删除文件(从非公开目录和公开目录)。
$name = 'nahled.jpg' // Načteno např. z DB
$protectedFile = new ProtectedFile('my-super/sub-folder/', $name);
$protectedFile->remove();

发布文件/创建裁剪

文件或图片的发布可以在模板级别解决,请参阅latte模板。

  1. 读取文件名。
  2. 我们创建一个ProtectedFile $protectedFile实例,带有文件名并添加额外的属性。
  3. 我们在模板中打印文件并打印属性。
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);
Latte示例
{* 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}