如果事件描述超过1000个字符,事件会静默失败

摘要:

如果活动描述超过 1000 个字符,它要么显示为空白,要么显示之前的活动描述。

这是由 discourse_post_event_events 表中的硬性限制引起的:description 字段类型为 character varying(1000)

复现步骤 #1

  • 创建一个活动
  • 使活动描述([event][/event] 之间的文本)超过 1000 个字符
  • 活动描述将不会在渲染后的帖子中显示

复现步骤 #2

  • 创建一个活动
  • 使活动描述([event][/event] 之间的文本)少于 1000 个字符
  • 编辑该活动
  • 使活动描述([event][/event] 之间的文本)超过 1000 个字符
  • 渲染后的帖子中将显示之前的活动描述

这也可能导致搜索投毒(search poisoning)。

相关

urllocation 字段似乎也存在同样的问题。

预期行为

以下之一:

a) 活动描述应无长度限制
b) 当活动描述过长时,应显示明确的警告
c) 在渲染时截断活动描述(但 Markdown 中仍保留完整文本)

6 个赞

谢谢。

在我看来,选项(c)在没有警告的情况下也是不够的。如果让我投票的话,(a)是最佳方案。

1 个赞

已在最新版本上复现,今天测试的。有用户报告了一个问题:事件(Event)卡片无法显示,原因不明。主题保存正常,原始帖子中的事件标记也是正确的,但无论是在主题内还是其他地方,都没有出现事件卡片。没有编辑器警告、保存错误、浏览器控制台错误或相关的 /logs 条目。

我倾向于方案 b):提供一个明确的警告或验证错误。

顺便说一下,如果由于其他任何原因导致事件标记无法正确解析,也会出现完全相同的行为(卡片静默失败,无法显示)。几个月前我在调查的一个案例中,一位用户非常用心地在 Word 中准备好了事件标记,然后将其复制粘贴到 Discourse 中,结果 data= 项周围自动变成了“智能引号”,随之而来的后果可想而知。

所以,是的,一个可见的错误提示,哪怕只是在控制台中显示,都会非常非常棒。

2 个赞