charcoal/admin

Charcoal 管理仪表盘

v5.0.0 2024-03-13 15:05 UTC

This package is auto-updated.

Last update: 2024-09-13 16:09:59 UTC


README

Admin 包提供可定制的管理面板,用于管理 Web 应用程序和 API 的数据。

安装

composer require charcoal/admin

概述

核心概念

charcoal 管理控制面板

  • 在 charcoal 对象和模型上添加额外的 admin 元数据,这控制了它们在后台如何自动定制。
  • 一个用户 / 认证系统,它使用 ACL 进行权限管理。
  • 一个可定制的 2 级菜单,为每个安装构建自定义的后端。
  • 仪表板和小部件。包含一些预构建的功能,例如
    • 列出对象集合(admin/object/collection),可从对象的 admin 元数据 进行定制。
    • 创建和编辑对象(admin/object/edit),可从对象的 admin 元数据 进行定制。
  • 一组 脚本,用于从 CLI 管理对象和后端。

此模块包含什么?

像所有 Charcoal 项目 / 模块一样,主要组件包括

  • 自动加载器
    • PSR-4,由 Composer 提供。
  • 配置
    • 作为 JSON 或 PHP 文件位于 config/ 目录中。
  • 前端控制器
    • admin 前端控制器在 \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
    • src/Charcoal/Boilerplate/ 中的 PHP 模型
    • metadata/charcoal/boilerplate/ 中的 JSON 元数据
  • 模板
    • 模板是一种特殊的模型,充当视图 / 控制器
    • 分为 TemplatesWidgetsPropertyDisplayPropertyInput
    • src/Charcoal/Boilerplate/Template/ 中的 PHP 模型
    • templates/boilerplate/ 中的 Mustache 视图(模板)
    • 可选的模板元数据在 metdata/boilerplate/template/
  • 操作
    • 操作处理输入并响应请求
    • 它们创建 Admin REST API。
    • src/Charcoal/Boilerplate/Action 中的 PHP 类
  • 资源
    • 资源是需要放置在 Web 服务器根目录中的文件
    • 脚本,在 src/scripts/ 中,并在 www/assets/scripts/ 中编译
    • 样式,在 src/styles/ 中使用 SASS,并在 www/assets/styles/ 中编译 CSS
    • 图片,在 www/assets/images/

用户

认证通过 Charcoal\Admin\User 类完成。它重用了由 charcoal/user 提供的认证、授权和用户模型。

用户界面元素

Admin 包中的用户界面元素(实际上任何其他 Charcoal 模块),由以下组成

  • 一个 PHP 控制器,位于 src/Charcoal/Admin/{{type}}/{{ident}}
  • 一个 Mustache 模板,位于 templates/charcoal/admin/{{type}}/{{ident}}
  • 可选的额外元数据,位于 metadata/charcoal/admin/{{type}}/{{ident}}

主要有三种类型的用户界面元素:模板小部件属性输入

模板

查看此模块中可用的模板列表,请参阅 src/Charcoal/Admin/Templates 目录。请注意,模板视图本身(Mustache 模板)位于 templates/charcoal/admin/template/ 目录中。

除了作为标准的模板模型(控制器)之外,管理模块中的所有 模板 也实现了 \Charcoal\Admin\Template 类。

此类为所有模板提供了额外的控件

  • has_feedbacksfeedbacks
  • titlesubtitleshow_titleshow_subtitle
  • auth_required
    • 受保护,默认为 true。对于不需要经过身份验证的管理员用户的模板,请将其设置为 false。

小部件

以下基础小部件可用于构建各种 管理 模板

  • 仪表板
  • 反馈
  • 表单
  • 表单组
  • 表单属性
  • 图形/柱状图
  • 图形/折线图
  • 图形/饼图
  • 布局
  • 地图小部件
  • 表格
  • 表格属性

属性输入

与其它 UI 元素类似,输入 是专门的控件,旨在显示“表单元素”的 属性。属性模型定义在 charcoal/property 包中。

以下属性输入可用于在 管理 模块中构建表单

  • 音频
    • 一个特殊的 HTML5 小部件,可以从麦克风录制音频文件。
  • 复选框
  • 日期时间选择器
    • 一个日期时间选择器小部件。
    • 需要 ``
  • 文件
    • 一个默认的 <input type="file">,可以用作所有 文件 属性的基础。
  • 图片
    • 一个专门用于上传/预览图片的文件输入。
  • 地图小部件
    • 一个专门用于编辑地图上点的控件。
    • 需要 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

命令行操作

查看 src/Charcoal/Admin/Action/Cli/ 目录,以获取此模块中所有可用的命令行操作列表。

命令行操作 是专门的操作,旨在从命令行界面交互式运行。使用此模块中的命令行操作,可以直接从终端快速轻松地管理 Charcoal 项目。

  • admin/objects
    • 列出特定 obj-type 的对象。
  • admin/object/create
    • 根据其元数据的属性创建一个新对象(并将其保存到存储中),其类型为 obj-type
  • admin/object/table/alter
    • 根据其元数据的属性修改特定 obj-type 的现有数据库表。
  • admin/object/table/create
    • 根据其元数据的属性创建特定 obj-type 的数据库表。
  • admin/user/create

资源