locomotivemtl / charcoal-admin
Charcoal 管理控制面板
Requires
- php: ^7.3 || ^8.0
- barryvdh/elfinder-flysystem-driver: ^0.3
- guzzlehttp/guzzle: ^6.0 || ^7.0
- kriswallsmith/assetic: ^1.4
- laminas/laminas-permissions-acl: ^2.8
- locomotivemtl/charcoal-app: ~0.9
- locomotivemtl/charcoal-cache: ~0.1
- locomotivemtl/charcoal-cms: ~0.9
- locomotivemtl/charcoal-core: ~0.6
- locomotivemtl/charcoal-email: ~0.4
- locomotivemtl/charcoal-object: ~0.8
- locomotivemtl/charcoal-translator: ~0.3
- locomotivemtl/charcoal-ui: ~0.3
- locomotivemtl/charcoal-user: ~0.7
- mcaskill/php-html-build-attributes: ^1.0
- paragonie/random_compat: >=2
- psr/cache: ^1.0
- psr/http-message: ^1.0
- psr/log: ^1.0
- studio-42/elfinder: 2.1.61
Requires (Dev)
- league/csv: ^9.5
- mockery/mockery: ^1.0
- mustache/mustache: ^2.11
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.0
- seld/jsonlint: ^1.8
- squizlabs/php_codesniffer: ^3.5
- tedivm/stash: ~0.16
Suggests
- fabpot/goutte: To use the various crawler-based tools.
- league/csv: To use the exporter (to CSV).
- dev-master / 0.30.x-dev
- 0.30.5
- 0.30.4.1
- 0.30.4
- 0.30.3
- 0.30.2
- 0.30.1
- 0.30.0
- 0.29.3
- 0.29.2
- 0.29.1
- 0.29.0.1
- 0.29.0
- 0.28.2
- 0.28.1
- 0.28.0.1
- 0.28.0
- 0.27.2
- 0.27.1
- 0.27.0
- 0.26.2
- 0.26.1
- 0.26.0
- 0.25.1
- 0.25.0
- 0.24.6
- 0.24.5
- 0.24.4
- 0.24.3.1
- 0.24.3
- 0.24.2.1
- 0.24.2
- 0.24.1.1
- 0.24.1
- 0.24.0
- 0.23.10.1
- 0.23.10
- 0.23.9.1
- 0.23.9
- 0.23.8
- 0.23.7
- 0.23.6
- 0.23.5.3
- 0.23.5.2
- 0.23.5.1
- 0.23.5
- 0.23.4
- 0.23.3
- 0.23.2
- 0.23.1
- 0.23.0
- 0.22.3.1
- 0.22.3
- 0.22.2
- 0.22.1
- 0.22.0.13
- 0.22.0.12
- 0.22.0.11
- 0.22.0.10
- 0.22.0.9
- 0.22.0.8
- 0.22.0.7
- 0.22.0.6
- 0.22.0.5
- 0.22.0.4
- 0.22.0.3
- 0.22.0.2
- 0.22.0.1
- 0.22.0
- 0.21.7.1
- 0.21.7
- 0.21.6
- 0.21.5
- 0.21.4.1
- 0.21.4
- 0.21.3
- 0.21.2
- 0.21.1
- 0.21.0
- 0.20.0
- 0.19.0.1
- 0.19.0
- 0.18.0
- 0.17.3.1
- 0.17.3
- 0.17.2.6
- 0.17.2.5
- 0.17.2.4
- 0.17.2.3
- 0.17.2.2
- 0.17.2.1
- 0.17.2
- 0.17.1
- 0.17.0
- 0.16.7
- 0.16.6
- 0.16.5
- 0.16.4
- 0.16.3
- 0.16.2
- 0.16.1
- 0.16.0.1
- 0.16.0
- 0.15.13
- 0.15.12
- 0.15.11
- 0.15.10
- 0.15.9
- 0.15.8
- 0.15.7
- 0.15.6
- 0.15.5
- 0.15.4.1
- 0.15.4
- 0.15.3
- 0.15.2
- 0.15.1.1
- 0.15.1
- 0.15.0
- 0.14.2
- 0.14.1.1
- 0.14.1
- 0.14.0.1
- 0.14.0
- 0.13.21
- 0.13.20
- 0.13.19
- 0.13.18
- 0.13.17
- 0.13.16
- 0.13.15
- 0.13.14
- 0.13.13
- 0.13.12.1
- 0.13.12
- 0.13.11.2
- 0.13.11.1
- 0.13.11
- 0.13.10
- 0.13.9
- 0.13.8.2
- 0.13.8.1
- 0.13.8
- 0.13.7.8
- 0.13.7.7
- 0.13.7.6
- 0.13.7.5
- 0.13.7.4
- 0.13.7.3
- 0.13.7.2
- 0.13.7.1
- 0.13.7
- 0.13.6
- 0.13.5.1
- 0.13.5
- 0.13.4.3
- 0.13.4.2
- 0.13.4.1
- 0.13.4
- 0.13.3
- 0.13.2.1
- 0.13.2
- 0.13.1.2
- 0.13.1.1
- 0.13.1
- 0.13.0
- 0.12.1
- 0.12.0
- 0.11.3.3
- 0.11.3.2
- 0.11.3.1
- 0.11.3
- 0.11.2.3
- 0.11.2.2
- 0.11.2.1
- 0.11.2
- 0.11.1.2
- 0.11.1.1
- 0.11.1
- 0.11.0.1
- 0.11.0
- 0.10.5
- 0.10.4
- 0.10.3.2
- 0.10.3.1
- 0.10.3
- 0.10.2
- 0.10.1.1
- 0.10.1
- 0.10.0
- 0.9.9
- 0.9.8.3
- 0.9.8.2
- 0.9.8.1
- 0.9.8
- 0.9.7
- 0.9.6
- 0.9.5
- 0.9.4
- 0.9.3.1
- 0.9.3
- 0.9.2.1
- 0.9.2
- 0.9.1
- 0.9
- 0.8.14.1
- 0.8.14
- 0.8.13
- 0.8.12
- 0.8.11
- 0.8.10
- 0.8.9.1
- 0.8.9
- 0.8.8
- 0.8.7
- 0.8.6
- 0.8.5
- 0.8.4
- 0.8.3.1
- 0.8.3
- 0.8.2
- 0.8.1
- 0.8
- 0.7.5
- 0.7.4.5
- 0.7.4.4
- 0.7.4.3
- 0.7.4.2
- 0.7.4.1
- 0.7.4
- 0.7.3.1
- 0.7.3
- 0.7.2
- 0.7.1.5
- 0.7.1.4
- 0.7.1.3
- 0.7.1.2
- 0.7.1.1
- 0.7.1
- 0.7.0
- 0.6.5
- 0.6.4.1
- 0.6.4
- 0.6.3
- 0.6.2.9
- 0.6.2.8
- 0.6.2.7
- 0.6.2.6
- 0.6.2.5
- 0.6.2.4
- 0.6.2.3
- 0.6.2.2
- 0.6.2.1
- 0.6.2
- 0.6.1.2
- 0.6.1.1
- 0.6.1
- 0.6.0.1
- 0.6.0
- 0.5.10
- 0.5.9
- 0.5.8
- 0.5.7
- 0.5.6
- 0.5.5
- 0.5.4.8
- 0.5.4.7
- 0.5.4.6
- 0.5.4.5
- 0.5.4.4
- 0.5.4.3
- 0.5.4.2
- 0.5.4.1
- 0.5.4
- 0.5.3
- 0.5.2.2
- 0.5.2.1
- 0.5.2
- 0.5.1.1
- 0.5.1
- 0.5.0
- 0.4.3
- 0.4.2.3
- 0.4.2.2
- 0.4.2.1
- 0.4.2
- 0.4.1
- 0.4
- 0.3.10
- 0.3.9
- 0.3.8
- 0.3.7.1
- 0.3.7
- 0.3.6.1
- 0.3.6
- 0.3.5.7
- 0.3.5.6
- 0.3.5.5
- 0.3.5.4
- 0.3.5.3
- 0.3.5.2
- 0.3.5.1
- 0.3.5
- 0.3.4
- 0.3.3.1
- 0.3.3
- 0.3.2.1
- 0.3.2
- 0.3.1
- 0.3.0.1
- 0.3
- 0.2.9
- 0.2.8.1
- 0.2.8
- 0.2.7.1
- 0.2.7
- 0.2.6.1
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1.1
- 0.2.1
- 0.2
- 0.1.3.1
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1
- dev-release/0.29
- dev-feature/reset-password-email-v0.29
- dev-feature/advanced-search
- dev-feature/reset-password-email
- dev-feature/delayed-notifications
- dev-mcaskill/improve-map-controllers
- dev-dependabot/npm_and_yarn/http-cache-semantics-4.1.1
- dev-dependabot/npm_and_yarn/tinymce-5.10.7
- dev-dependabot/npm_and_yarn/engine.io-6.2.1
- dev-dependabot/npm_and_yarn/socket.io-parser-4.0.5
- dev-dependabot/npm_and_yarn/xmldom/xmldom-0.7.8
- dev-dependabot/npm_and_yarn/moment-timezone-0.5.37
- dev-develop
- dev-feature/refactor-system-cache
- dev-mcaskill/asset-versioning
- dev-joel/test-grid-stack
- dev-joel/allow-object-form-actions
- dev-feature/camelizePropertiesAndUseArrayAccess
- dev-mcaskill/patch-form-properties
- dev-mcaskill/patch-form-sidebars
- dev-acl-manager-refactor
- dev-release/0.16
- dev-joel/property-condional-logic-parser
- dev-cdn-cache-purge
This package is auto-updated.
Last update: 2024-09-23 15:53:20 UTC
README
标准的 Charcoal Admin 控制面板(后端仪表板)。
如何安装
安装 charcoal-admin 的首选(也是唯一支持的)方式是使用 composer
$ composer require locomotivemtl/charcoal-admin
注意 charcoal-admin 是为了与基于
charcoal-app
的项目一起运行。要从模板开始$ composer create-project locomotivemtl/charcoal-project-boilerplate
依赖项
- locomotivemtl/charcoal-core
- 框架类。包括(缓存、模型、元数据、视图、属性、源等)。
- 它带来了以下依赖项
- locomotivemtl/charcoal-config
- Charcoal 所有一切配置的容器。
- locomotivemtl/charcoal-property
- 模型定义的构建块。
- locomotivemtl/charcoal-image
- 图像处理。
- locomotivemtl/charcoal-view
- 视图/模板引擎。Mustache 是默认引擎。
- locomotivemtl/charcoal-config
- locomotivemtl/charcoal-object
- 对象定义(内容和使用者数据)、行为和工具。
- locomotivemtl/charcoal-user
- 用户定义(作为 Charcoal 模型)、身份验证和授权(使用 Laminas ACL)。
👉 开发依赖项在 README 文件的 开发 部分中描述。
这些,反过来,需要
PHP 7.3+
ext-fileinfo
文件 / MIME 识别。ext-mbstring
多字节字符串支持。ext-pdo
PDO 数据库驱动程序。
- MySQL
- 其他数据库(postgresql,sqlite)应该可以工作,但不提供支持。
- Apache 与
mod_rewrite
- 其他 HTTP 服务器(IIS,_nginx)应该可以工作,但不提供支持。
pimple/pimple
用于依赖注入容器。slim/slim
用于路由引擎和 HTTP 处理。mustache/mustache
用于模板引擎。phpmailer
用于发送电子邮件。league/climate
用于 CLI 工具。monolog/monolog
用于(PSR-3)日志。
核心概念
charcoal 管理控制面板 是
- Charcoal 对象和模型上的附加
admin
元数据,这些数据控制它们在后端中如何自动定制。 - 一个用户/身份验证系统,它使用 ACL 进行权限。
- 可定制的 2 级菜单,为每个安装构建自定义后端。
- 仪表板和小部件。具有一些预构建的功能
- 列出对象集合(
admin/object/collection
),可从对象的 admin 元数据 进行定制。 - 创建和编辑对象(
admin/object/edit
),可从对象的 admin 元数据 进行定制。
- 列出对象集合(
- 一组 脚本,用于从 CLI 管理对象和后端。
这个模块里有什么?
像所有 Charcoal 项目/模块一样,主要组件包括
- 自动加载器
- PSR-4,由 Composer 提供。
- 配置
- 作为 JSON 或 PHP 文件位于 config/ 目录中。
- 前端控制器
- 管理员前端控制器由
\Charcoal\Admin\Module
类处理。
- 管理员前端控制器由
- 对象
- 通常在
\Charcoal\Object\Content
和\Charcoal\Object\UserData
中。 - 扩展
\Charcoal\Model\AbstractModel
,该模型实现以下接口\Charcoal\Model\ModelInterface
\Charcoal\Core\IndexableInterface
\Charcoal\Metadata\DescribableInterface
\Charcoal\Source\StorableInterface
\Charcoal\Validator\ValidatableInterface
\Charcaol\View\ViewableInterface
- PHP 模型在
src/Charcoal/Boilerplate/
中 - JSON 元数据在
metadata/charcoal/boilerplate/
中
- 通常在
- 模板
- 模板是作为视图/控制器操作的专用模型
- 分为
Templates
、Widgets
、PropertyDisplay
和PropertyInput
- PHP 模型位于
src/Charcoal/Boilerplate/Template/
- Mustache 视图(模板)位于
templates/boilerplate/
- 可选,模板元数据位于
metdata/boilerplate/template/
- 操作
- 操作处理输入并响应请求
- 它们创建 charcoal-admin REST API。
- 位于
src/Charcoal/Boilerplate/Action
的 PHP 类
- 资源
- 资源是需要放在 web 服务器根目录的文件
- 脚本,位于
src/scripts/
并编译到www/assets/scripts/
- 样式,使用 SASS 位于
src/styles/
并编译成 CSS 位于www/assets/styles/
- 图片,位于
www/assets/images/
对象
用户
身份验证通过 Charcoal\Admin\User
类完成。它重用了 [charcoal-user](https://github.com/locomotivemtl/charcoal-user) 提供的认证、授权和用户模型。
UI 元素
用户界面元素在 charcoal-admin(或任何其他 Charcoal 模块,实际上)由以下组成
- 一个 PHP 控制器,位于 src/Charcoal/Admin/{{type}}/{{ident}}
- 一个 Mustache 模板,位于 templates/charcoal/admin/{{type}}/{{ident}}
- 可选的额外元数据,位于 metadata/charcoal/admin/{{type}}/{{ident}}
有 3 种主要的 UI 元素类型:模板、小部件 和 属性输入。
模板
查看该模块中可用的模板列表,请参阅 src/Charcoal/Admin/Templates 目录。注意,模板视图本身(mustache 模板)位于 templates/charcoal/admin/template/ 目录。
除了是标准的模板模型(控制器)之外,该管理模块的所有 模板 也实现了 \Charcoal\Admin\Template
类。
这个类为所有模板提供了额外的控制
has_feedbacks
和feedbacks
title
、subtitle
、show_title
和show_subtitle
auth_required
- 受保护,默认为 true。对于不需要认证管理用户的模板,设置为 false。
小部件
以下基本小部件可用于构建各种 admin 模板
仪表板
反馈
表单
表单组
表单属性
图表/柱状图
图表/折线图
图表/饼图
- 布局
- 地图小部件
- 表格
- 表格属性
属性输入
类似于其他 UI 元素,输入 是专门的 widget,旨在显示 Property
的 "表单元素"。属性模型在 charcoal-property 包中定义。
以下属性输入可用于在 admin 模块中构建表单
音频
- 一个特殊的 HTML5 小部件,可以从麦克风录制音频文件。
复选框
日期时间选择器
- 一个日期时间选择器小部件。
- 需要 ``
文件
- 一个默认的
<input type="file">
,可以作为所有 文件 属性的基。
- 一个默认的
图片
- 一个专门用于上传/预览图片的文件输入。
地图小部件
- 一个专门用于编辑地图上点的 widget。
- 需要 google-map。
数字
单选按钮
只读
选择
开关
- 一个专门用于显示为开/关开关的 复选框。
文本
- 一个默认的
<input type="text">
,可以与大多数属性类型一起使用。
- 一个默认的
多行文本框
- 一个默认的
<textarea>
编辑器,可以与大多数文本属性类型一起使用。
- 一个默认的
Tinymce
- 一个专门用于 wysiwyg 的 多行文本框 编辑器。
- 需要
tinymce
JavaScript 库。
Selectize
- 一个介于 文本框 和 选择 之间的特殊混合体,基于 jQuery。
- 高度可定制。
- 需要
selectize
JavaScript 库。
Selectize 输入选项
使用示例
"categories": { "type": "object", "input_type": "charcoal/admin/property/input/selectize", "multiple": true, "deferred": true, "obj_type": "cms/object/news-category", "pattern": "title", "choice_obj_map": { "value": "ident", "label": "{{customLabelFunction}} - {{someAdditionalInfo }}" }, "selectize_templates": { "item": "project/selectize/custom-item-template", "option": "project/selectize/custom-option-template", "controller": "project/selectize/custom-template" }, "selectize_options": { "plugins": { "drag_drop": {}, "btn_remove": {}, "btn_update": {} } }, "form_ident": { "create": "quick.create", "update": "quick.update" } }
Selectize 模板示例
"selectize_templates": { "item": "{{customLabelFunction}} - {{someAdditionalInfo }}", "option": "{{customLabelFunction}} - {{someAdditionalInfo }}" }, --- "selectize_templates": "{{customLabelFunction}} - {{someAdditionalInfo }}", --- "selectize_templates": "project/selectize/custom-template", --- "selectize_templates": { "item": "project/selectize/custom-item-template", "option": "project/selectize/custom-option-template", "controller": "project/selectize/custom-template", "data": { "category": "{{selectedCategory}}" } },
操作
查看该模块中所有可用动作的列表,请参阅 src/Charcoal/Admin/Action/ 目录。
除了是标准的动作模型(控制器)之外,管理模块中的所有 动作 也实现了 \Charcoal\Admin\Action
类。
后置动作
admin/login
admin/object/delete
admin/object/save
admin/object/update
admin/widget/load
admin/widget/table/inline
admin/widget/table/inlinue-multi
CLI 动作
查看该模块中所有可用 CLI 动作的列表,请参阅 src/Charcoal/Admin/Action/Cli/ 目录。
CLI 动作 是专门的动作,旨在从命令行界面交互式运行。使用此模块中的 CLI 动作,可以快速轻松地从终端直接管理 Charcoal 项目。
👉 可从
charcoal-project-boilerplate
获取的 charcoal-cli 工具是调用 CLI 动作的完美工具。确保它位于文档根目录之外!
admin/objects
- 列出特定
obj-type
的对象。
- 列出特定
admin/object/create
- 根据其元数据的属性创建新的对象(并将其保存到存储中)。
admin/object/table/alter
- 根据其元数据的属性修改
obj-type
的现有数据库表。
- 根据其元数据的属性修改
admin/object/table/create
- 根据其元数据的属性创建
obj-type
的数据库表。
- 根据其元数据的属性创建
admin/user/create
开发
安装开发环境
$ composer install --prefer-source
运行测试
$ composer test
API 文档
- 自动生成的
phpDocumentor
API 文档可在 https://locomotivemtl.github.io/charcoal-admin/docs/master/ 找到。 - 自动生成的
apigen
API 文档可在 https://codedoc.pub/locomotivemtl/charcoal-admin/master/ 找到。
编码风格
Charcoal-Admin 模块遵循 Charcoal 编码风格
- PSR-1,除了
- 方法名称必须声明为
snake_case
。
- 方法名称必须声明为
- PSR-2,除了 PSR-1 的要求。
- PSR-4,因此自动加载由 Composer 提供
- phpDocumentor
- 为所有类、方法和函数添加 DocBlocks;
- 对于类型提示,使用
boolean
(而不是bool
),integer
(而不是int
),float
(而不是double
或real
); - 如果方法不返回任何内容,则省略
@return
标签。
- 命名约定
- 请参阅 phpcs.xml 文件以获取所有详细信息。
可以使用
composer phpcs
执行编码风格验证/强制执行。还可以使用composer phpcbf
获取自动修复器。
对于 JavaScript,强制执行的编码风格如下
- 待办事项
每个类、方法和函数都应该由单元测试覆盖。可以使用 PHPUnit 测试 PHP 代码,以及使用 QUnit 测试 JavaScript 代码。
作者
- Mathieu Ducharme mat@locomotive.ca
- Benjamin Roch benjamin@locomotive.ca
- Dominic Lord dom@locomotive.ca
- Chauncey McAskill chauncey@locomotive.ca
- Antoine Boulanger antoine@locomotive.ca
- Joel Alphonso joel@locomotive.ca
许可证
Charcoal 使用 MIT 许可证。详情请参阅 LICENSE。