编辑活动结束日期 → 主题标题中的活动后日期未更新

在 3.6.0.beta2 上进行了测试,据我回忆,beta1 没有出现此问题

步骤:

  1. 创建一个开始日期在过去、结束日期在未来的新主题(例如 3 小时后)
  2. 发布主题,主题标题上的活动日期显示正确
  3. 将活动结束日期更新为更晚或更早的时间
  4. 问题出现:主题标题上的活动日期保持不变

我也尝试刷新 HTML,但问题仍然存在

编辑:我在仅编辑活动开始日期时也遇到了同样的问题,但尚未能重现……

1 个赞

您是通过用户界面还是通过 Markdown 编辑的事件?

两者行为有差异吗?

据我回忆,问题在两种情况下都出现了,但我不能100%确定。

有时开始日期未更新,有时结束日期受到影响。我没有机会正确地重现它,因为它非常耗时。

我提交了一个小的PR,在一定程度上修复了它。我们目前将其用作辅助插件。

目前的解决方法是:

  1. 编辑帖子并删除事件BB代码,保存帖子
  2. 编辑帖子,重新添加带有所需日期的事件BB代码,并保存帖子

这将从头开始将事件日期重写到主题中。

你好,

我针对此问题创建了 FIX: Refresh event dates in topic lists - Pull Request #43285 - discourse/discourse - GitHub 这个 PR。

随后,我录制了一段针对该 PR 头提交(head commit)进行手动测试的屏幕录像:

该 PR 基于 main 分支。

录像中的红色计时器倒计时至相关事件边界,而绿色时钟显示当前的实际时间,因此录像应当是完整自洽的。

我在下方以补充说明的形式附上了我确切的测试时间和 BBCode。

第一次测试 — 仅编辑结束时间

预期时间:

开始 编辑后的开始 结束 编辑后的结束
16:22 未编辑 16:25 16:28

初始的 BBCode 为:

[event start="2026-09-04 16:22" status=public timezone=Europe/London end="2026-09-04 16:25"]
this is an event description
[/event]

我明确将其更改为:

[event start="2026-09-04 16:22" status=public timezone=Europe/London end="2026-09-04 16:28"]
this is an event description
[/event]
第二次测试 — 仅编辑开始时间

预期时间:

开始 编辑后的开始 结束 编辑后的结束
16:31 16:32 16:35 未编辑

本次运行中我犯了一个设置错误:初始的 BBCode 实际上是:

[event start="2026-09-04 17:00" end="2026-09-04 18:00" status="public" timezone="Europe/London" reminders="notification.15.minutes"]
[/event]

随后我明确将其更改为:

[event start="2026-09-04 16:32" status=public timezone=Europe/London end="2026-09-04 16:35" reminders=notification.15.minutes]
[/event]

因此,本次特定的运行不应被视为一次干净的 16:3116:32 仅开始时间对比。

第三次测试 — 编辑开始和结束时间

预期时间:

开始 编辑后的开始 结束 编辑后的结束
16:38 16:39 16:42 16:45

初始的 BBCode 为:

[event start="2026-09-04 16:38" status=public timezone=Europe/London end="2026-09-04 16:42" reminders=notification.15.minutes]
[/event]

我明确将其更改为:

[event start="2026-09-04 16:39" status=public timezone=Europe/London end="2026-09-04 16:45" reminders=notification.15.minutes]
[/event]
第四次测试 — 仅编辑结束时间

预期时间:

开始 编辑后的开始 结束 编辑后的结束
16:47 未编辑 16:50 16:53

初始的 BBCode 为:

[event start="2026-09-04 16:47" status=public timezone=Europe/London end="2026-09-04 16:50"]
[/event]

我明确将其更改为:

[event start="2026-09-04 16:47" status=public timezone=Europe/London end="2026-09-04 16:53"]
[/event]
第五次测试 — 仅编辑开始时间

预期时间:

开始 编辑后的开始 结束 编辑后的结束
16:56 16:57 17:00 未编辑

最终的 BBCode 为:

[event start="2026-09-04 16:57" status=public timezone=Europe/London end="2026-09-04 17:00" reminders=notification.15.minutes]
[/event]

事后的数据库检查确认,该帖子在其作者于 Discourse 的 300 秒编辑宽限期内被编辑了一次(self_edits = 1)。由于编辑发生在该宽限期内,帖子保持为版本 1,且未创建可见的修订/铅笔标记。

因此,原始 raw 值无法再从 post_revisions 中获取,但该测试并非未编辑的帖子。

第六次测试 — 编辑开始和结束时间

预期时间:

开始 编辑后的开始 结束 编辑后的结束
17:03 17:04 17:07 17:10

最终的 BBCode 为:

[event start="2026-09-04 17:04" end="2026-09-04 17:10" status="public" timezone="Europe/London" reminders="notification.15.minutes"]
[/event]

事后的数据库检查确认,该帖子在其作者于 Discourse 的 300 秒编辑宽限期内被编辑了一次(self_edits = 1)。由于编辑发生在该宽限期内,帖子保持为版本 1,且未创建可见的修订/铅笔标记。

因此,原始 raw 值无法再从 post_revisions 中获取,但该测试并非未编辑的帖子。