Acf-core-0.15 发布说明
对于在 Alpine Linux 2.5 中发布的 0.15 版本,acf-core 进行了一些重大更改,这些更改需要对每个 ACF 软件包进行修改。如果您为自己的用途创建了自定义 ACF 软件包,则必须进行相应的更改,以使您的代码在 Alpine Linux 2.5 上正常工作。
相关错误 / 功能请求
- https://bugs.alpinelinux.org/issues/648 - 标准化 ACF 表单提交
- https://bugs.alpinelinux.org/issues/643 - 升级 ACF cli 应用程序
- https://bugs.alpinelinux.org/issues/642 - 移动 ACF cli 和 mvc.lua 文件
- https://bugs.alpinelinux.org/issues/639 - 扩展 ACF 皮肤以包含 JS
范围
acf-core-0.15 中更改的主要目的是为了更清晰地分离 ACF 功能和 Web (www) 界面。ACF 已经包含了 acf_www-controller.lua 和 acf_cli-controller.lua 文件,表面上是为了允许 Web 界面和客户端界面分离它们的功能。然而,在实践中,特定于 www 的代码散布在各处。这种分离允许 Lua 代码将 ACF 用作库,并使增强的 cli 应用程序成为可能。
更新日志
- 重组了 mvc.lua 以及 acf_www 和 acf_cli 控制器,将特定于 www 的内容从 mvc 移动到 acf_www,反之亦然
- 模板、皮肤和用户权限是特定于 www 的,而 html 输出则不是
- 删除了 controllerfunctions.lua,并将 handle_form 和 handle_clientdata 函数移动到 mvc.lua 中,并在 acf_www 和 acf_cli 中使用了重写版本
- 更新了控制器以删除 redirect_to_referrer 引用
- 更改了表单,始终使用“submit”作为提交按钮的名称,并允许使用多个提交按钮
- 通过创建两个模型函数并删除特殊的控制器函数,将 startstop 更改为标准表单
- 更改了 handle_form 以将 self、clientdata 和 action 传递到 get_function 中,并将 self 传递到 set_function 中
- 为 html、json、stream 和 serialized 视图类型添加了 auto_view 功能
- 将 ajax 视图类型重命名为 json 以使其更准确
- 模板(对于 www)现在接收 viewfunc,而不是使用 viewfile
- 对于视图类型为 html、json、stream 或 serialized 的无视图操作,现在将使用标准代码显示。
- 允许在 mvc 中的 clientdata 中覆盖视图类型
- 删除了对公共 APP 变量的访问
- 要求 modelfunctions.lua setfiledetails 和 write_file_with_audit 接受 self 参数
- 将 viewfunctions.lua 移动到 htmlviewfunctions.lua 并使其成为一个实际的模块
- 从 authenticator.lua 中删除了公共变量 auth,并将其替换为 get_subauth 函数
- 添加了选项,可以在 skindir 中使用特定于皮肤的 javascript 和/或 模板
- 添加了 clientdata.skinned 选项,以在 html 模板中关闭皮肤
自定义 ACF 的必要更改
以下是自定义 ACF 软件包与 acf-core-0.15 配合使用所必需的更改列表。理解这些更改的最佳方法是查看公共 git 仓库中对 ACF 软件包所做的更改。如果您有其他问题,可以使用 ACF 邮件列表。
视图
- 删除所有 viewfunctions 引用,并替换为 htmlviewfunctions(可能需要添加引用,因为它现在是一个模块)。
- 自定义表单现在必须将提交按钮命名为“submit”,而不是使用标签值。
- 如果使用 html 库,请添加 'html = require("acf.html")'。
- 许多视图可以被删除,并由 auto_view 功能处理
- 诸如 readonly、password 或 hidden 类型以及字段顺序之类的常见内容现在可以在模型 get_function 中配置。
控制器
- 删除所有 controllerfunctions 引用,并替换为 self。
- Startstop 现在作为标准表单处理。
- 删除所有 self:redirect_to_referrer 引用,并替换为 self.handle_form。 这也意味着重写相应的模型函数,以更改为创建和使用表单的两个函数。
- 修改任何自定义 handle_form get 或 set 函数以接受 self 作为第一个参数(它们也可能被删除并在模型中实现)。
- 删除设置 viewtype 的代码,因为现在可以由用户直接设置。
模型
- 表单 get_function 和 set_function 现在接收不同的参数:get_function(self, clientdata, action) set_function(self, form)
- 将 startstop_service 替换为两个函数,现在作为标准表单处理。
- modelfunctions.setfiledetails 现在接受 self 作为第一个参数