无法保存插件所做的分类设置

继续讨论 自定义向导插件 :mage:

我也遇到了同样的问题,而且其他插件(如 Locations 和 Private Topics)也出现了这种情况。“您有未保存的更改”提示及其保存选项根本没有弹出。即使我更改了其他内容,设置也无法保存。

也许这应该归类到 Development,因为官方插件似乎未受此影响,但另一方面,此问题是在 Discourse 更新后出现的。 这也影响了两个官方插件(calendar 和 restricted replies)

5 个赞

是的,这确实是 FormKit 在启用 enable_simplified_category_creation 时特有的问题。插件需要迁移以使用 FormKit 和新的数据结构。

我们的一个核心插件中有一个可运行的示例,迁移内容如下:

你可以查看表单结构如何通过 {{#if this.siteSettings.enable_simplified_category_creation}} 进行分支,以及如何使用 FormKit 和来自 @outletArgs.form 的数据来构建表单。为了支持旧版本,旧的表单结构仍保留在 {{else}} 之后。

2 个赞

感谢你的解释,Kris。

通常,当需要因核心变更而更新插件时,我会比较轻松,并且对开发人员的指导方式感到满意。但我觉得 Discourse 团队这次确实失职了。

  • 没有任何公告(至少我没找到,@moin 也还没提醒我(目前);)
  • 没有在核心代码中尝试通过通用代码来缓解这一问题
  • 甚至连浏览器开发控制台的警告都没有

一切突然就停止工作了。

粗略扫描(可能还不完整)显示,以下插件至少已受到影响:

  • Discourse
    • calendar :white_check_mark: ← 官方 Discourse 插件
    • restricted replies :white_check_mark: ← 官方 Discourse 插件
  • Pavilion(及其成员)
    • category lockdown
    • custom wizard
    • locations
    • chatbot
  • Communiteq
    • private replies
    • private topics
    • category restrictor
    • always anonymous
    • 至少 10 个私有插件
5 个赞

确实!我们本应在“即将推出的更改”功能中随着该变更的推进就发出警告——这对我们来说是一个新流程,我们会尽快解决。目前,可以通过 /admin/config/upcoming-changes 禁用 enabled_simplified_category_creation,以恢复所有现有插件功能。

4 个赞

我们之前已有 Simplified category setup 的讨论,并且管理界面即将进行更新(可能还会有一条“最新动态”公告):

当此变更出现在您的站点上以及自动启用时(很可能就在本周,当该变更被移至稳定状态时),您应该已经收到了相关通知。

正如 Kris 所说,缓解措施是核心中即将进行的更新,这为您迁移相关功能留出了时间:

在这种情况下,还有什么能帮助您?我们可以在即将更新的关联主题中添加更多细节,说明开发人员需要做什么来做好准备。

至于开发人员警告,我可以与 dev-xp 团队协商,看看下次是否有更好的做法。


我们今天将修复这些问题。我们肯定在这里缺乏足够的测试覆盖,因为当我进行 DEV: Move enable_simplified_category_creation to stable by martin-brennan · Pull Request #39212 · discourse/discourse · GitHub 时,这些插件都没有失败,但其他插件却失败了:

2 个赞

两者现在都已合并,并增加了额外的规范测试覆盖,由 @awesomerobot 完成:

3 个赞

是的,我在 2 月 3 日收到了通知。

但在那时,浮动保存按钮的变更尚未实施(我记得那是 2 月底)。该主题或其他地方也没有发布额外的更新来反映这些变更。

以下任何一项都可以:

  • 针对插件开发者的及时技术公告
  • 临时自动回退到旧逻辑(就像主题列表所做的那样,只要存在遗留插件代码,系统就会自动回退)。
  • 临时回退代码,保持遗留功能正常运行(检测表单外的输入并将其包含在需要保存的设置中)。这样也能省去你们编写所有 {{#if this.siteSettings.enable_simplified_category_creation}} 分支的麻烦。
  • 当检测到遗留代码时,在浏览器开发控制台中发出警告
  • 对已知插件进行静态扫描,就像我昨天做的那样(只花了 10 分钟,甚至发现了一些被遗漏的官方插件;))

那将非常感激!

2 个赞