ddpro/admin

DDPro 管理员面板

dev-master 2017-11-22 07:44 UTC

This package is not auto-updated.

Last update: 2024-09-15 01:30:18 UTC


README

Build Status StyleCI Latest Stable Version Total Downloads

这是一个正在进行的构建基于 AdminLTE 的新 Laravel 5 兼容管理员面板的工作。

首先,让我们回顾一下历史。Sitepro 3(这是一个建立在 Laravel 3 之上的私有框架)有一个管理员面板。我们考虑将其移植到 Laravel 5,但最终因为各种原因认为这不是一个好主意。

因此,我们决定构建一个新面板,它将采用 Sitepro 管理面板的大部分想法,但基于 Laravel 5。

Sitepro 3 是 Laravel 3 中的一个组件。由于 Laravel 4 及以后版本取消了组件的概念,转而使用包,因此一切都有所不同。实际上,很难将 Laravel 3 组件移植到 Laravel 5 包,因为 Laravel 3 组件非常具有侵略性——例如,它们可以接管路由系统。

因此,我决定专注于构建一个新面板。然而,由于已经存在构建管理员面板的现有候选起点,我们不打算从头开始构建一切。相反,我们将适应现有的一个管理员面板,并对其进行编码以适应我们的应用程序。

目前,这一领域的领先候选者是 FrozenNode 的 Laravel-Administrator —— 主要限制是它不支持 AdminLTE

由于需要对代码和视图进行大量修改以使用 AdminLTE,所以我决定创建一个新的包,而不是对现有的包进行分叉。

状态

这基本上是可行的。还有很多事情要做。请参阅代码中的 TODOFIXME 注释。

管理模型的控制器端点都很好。尚未完成设置的操作端点。

代码已从 AdminLTE 移植过来,大部分保持不变,除了微小的重构。代码已转换为 PSR-2 标准。

有一个 工作示例应用程序

已创建与 AdminLTE 兼容的视图,并且它们正在运行。表单仍然使用 knockout,已从版本 2.2 升级到版本 3.4,并且还使用了一些来自 FrozenNode 的旧 CSS 样式,表单应转换为与 bootstrap 兼容的样式。

需求

我们的需求是一个灵活的、可插拔的、基于 AdminLTE 的管理员面板。

功能

  • 某种类型的仪表板。这将使用 AdminLTE 构建,并允许集成各种可用的小部件——表格、图表等。
  • 自动绘制菜单等。这已经作为 Nested Menus 编码。
  • 模块可以插入以实现各种数据库功能的CRUD操作。从对象的分页列表开始,然后点击一个对象进行编辑,点击+按钮添加等。这不应需要编写大量额外的控制器来处理每种对象类型,应有一套资源控制器,可以处理大多数对象类型的CRUD端点,使用基本的资源控制器方法,使用数据库/配置生成的表单。可能有一些需要自己控制器的自定义对象类型,但应该相对较少。
  • 使用表单构建器自动生成表单。表单构建器应该是一个独立的组件,可以通过composer拉入管理面板。

任务计划和进度

我们以FrozenNode的Laravel-Administrator为起点。我们需要进行一些更改,因此我们不会分叉仓库,而是将构建一个新的仓库。以下是一些差异和相似点的总结

  • 视图已更改为与AdminLTE匹配已完成
  • 视图将存储在数据库中,根据delatbabel/viewpages,以便它们可编辑。待办
  • CSS需要更改为与AdminLTE兼容的CSS。进行中
  • 类结构和后端功能相同。例如,模型配置文件相同。
  • 唯一可能的变化可能是我想将模型配置存储在数据库中并使其可编辑,但应该有一个迁移脚本可以捕获任何现有的模型配置并将其导入。待办
  • 编码标准已切换到PSR-2和PSR-4。已完成
  • 修复了错误。特别是查看FrozenNode github问题跟踪器中的现有问题,看看还需要做什么。进行中
  • 使用apigen标准修复了docblocks。已完成
  • 有一个新的示例应用程序已完成

待办列表 -- 前端

这是需要完成的前端更改列表

  • 将视图从FrozenNode转换为AdminLTE尚未完成。查看resources/views中的文件
    • adminmodel/*模板已转换为blade格式,但仍使用原始的FrozenNode CSS类。理想情况下,CSS类应转换为与AdminLTE兼容的类,动态生成表单中使用的类应转换为与bootstrap兼容的表单字段类。这需要重新工作一些操纵表单DOM对象的JS代码。
  • 检查所有其他CSS类,确保它们与AdminLTE兼容。
  • 前端表单生成使用knockout.js版本3.4.0。将表单生成切换到后端使用blade模板,使用jquery或angular.js进行表单填充。理想情况下,这将允许有更多表单小部件,包括多标签页表单。至少我们需要一个HTML编辑器和一个JSON编辑器(用于编辑存储为JSON blob的数组结构)。
  • 记录bower配置和需求。

待办列表 -- 后端

这是需要完成的后端更改列表

  • 从配置中移除闭包,以便配置可以序列化并存储在数据库中。
  • 根据delatbabel/viewpages将视图存储在数据库中。
  • 根据delatbabel/site-config将配置存储在数据库中。
  • 将模型配置存储在数据库中,并为管理员提供模型配置编辑器。
  • 查看代码中的剩余待办事项和FIXME。
  • 单元测试覆盖率约为60%,控制器部分没有覆盖率。还有一些注释掉的测试失败。

文档说明

使用和接口文档位于docs目录。

源代码文档位于src目录。

资源(视图)文档位于resources目录。

资产(公共文件)文档位于public目录。