默认使用高级编辑器,并禁用简易编辑器

你好!

我们开发了一个插件,用于重新定义 post-event-builder 插件出口:在我们实例上创建的每个事件都需要填写自定义字段,而我们的表单会使用外部来源的数据来补全建议的值。

我们只使用 Discourse 的 ESR 版本,因此在 2026.1.x 版本上一切正常。现在我正在升级到 2026.7.x 版本,所以正在了解新的表单以及高级表单。

由于我们的用户必须填写所有自定义字段,我们希望使用“高级”表单而不是紧凑表单,并且不提供切换表单的选项。

我最初考虑的是添加一个站点设置,默认使用高级表单(并禁用切换到紧凑表单的可能性,因为所有内容都在高级表单中),或者添加两个设置(默认使用高级表单,禁止切换表单)。如果有一个插件出口可以替换紧凑表单,那也很好,只要它包含切换到高级表单的选项,这样我们就可以去掉那个切换按钮。

新行为严重阻碍了我们的升级进程,我们不能停留在旧版且不再维护的 2026.1.x 上。

最好的方法是什么?我该如何提供帮助?

1 个赞

又见面了!

如果我提交一个包含新插件接口的 PR,它被接受并回溯移植到下一个 2026.7.x 版本的可能性有多大?还是说我们需要寻找其他方法来修复这个阻塞性问题?

1 个赞

嘿,能把 PR 链接发在这里吗?

1 个赞

好的,等弄好了我就做;我今天应该处理一下。

2 个赞

哦,抱歉,我刚才没看到你上一条消息里的“if”,哈哈!我的错。

我添加了一个新的插件出口点来覆盖默认的“紧凑”表单,但我对这个改动并不太满意。

通过该出口点无法覆盖访问“高级”表单的按钮,而且编辑器中的“可编辑预览”仍在使用“紧凑模式”,这可能与被覆盖的表单不匹配(至少在我们的案例中是这样)。

我开始觉得,更简洁的解决方案是在插件管理后台添加一个选项,用于选择表单行为。我至少看到了两个选项:

  • default_editor:选择“紧凑”(默认)或“高级”
  • allow_editor_switch:隐藏切换编辑器的按钮

我仍在深入研究其潜在影响,但欢迎对这一总体思路提出反馈 :slight_smile:

2 个赞

所以,你的意思是在创建事件时,强制始终保持高级模式打开吗?

并且不允许用户退出该模式吗?

如果是这样,那么在 PostEventBuilder 组件中,我会为 initialScreen 创建一个值转换器,即一个读取 this.args.model.initialScreen 的 getter,然后能够通过该值转换器对其进行覆盖。这样,你就始终可以通过值转换器将 initialScreen 设置为 advanced。

我很乐意查看你为核心提交的关于值转换器的 PR,我想你已经有一个可以挂接此功能的自定义主题了。

2 个赞

我无法附上截图,所以我会尝试描述当前的行为以及我想要实现的目标 :slight_smile:

使用 Markdown 编辑器时:

  • 如果启用了预览,活动表单会显示在预览中(未包裹在 post-event-builder 中),预览的右上角有一个按钮可切换到高级模式
  • 如果禁用了预览,活动表单会在一个模态框中显示,包裹在 post-event-builder 中(你提到的用例),模态框底部有一个按钮可切换到高级模式

使用富文本编辑器时,活动表单嵌入在 帖子 表单中;这似乎与预览中使用的块相同。

我需要的只是拥有这一个编辑器。

由于该插件包含在核心中,我意识到任何更改都会影响所有使用该插件的用户,因此更改应尽量最小化

我对 EmberJS 还不够熟悉,无法理解一切是如何连接在一起的,所以每次更改都需要时间,而且我经常得到一个结果后才发现,可能 还有另一种更简洁的方式来做这些事情。

也许最后这种方法(添加新的管理参数)有些过度设计,或者我只是没有找到那个可以添加插件出口的™ 组件,以便改变所有相关内容……

1 个赞

你的信任等级应该允许你这样做——当你尝试上传时,会发生什么情况?

你说得对,这不是一个与权限相关的问题。我安装了一个会拦截 Referer 的扩展程序,它与 AWS 存在兼容性问题 :upside_down_face:

Markdown 编辑器 + 预览:事件表单嵌入在预览中(点击齿轮图标会显示带有“高级”事件编辑器的模态框)

Markdown 编辑器,无预览:事件表单位于模态框中,切换编辑器的按钮位于模态框底部

富文本编辑器:事件表单嵌入在编辑器中(点击齿轮图标会显示带有“高级”事件编辑器的模态框)

1 个赞