引用名称与用户名匹配时损坏

继续阅读 Configuring Twitter login and rich embeds for Discourse - #114 by Hifihedgehog

我收到了一封关于此事的电子邮件,感到非常困惑,因为我不记得发布过这样的帖子。

我想知道“taylor”是如何在引用回复中被替换的? 这是手动编辑错误吗(我不确定如何手动创建带来源的引用块,或者是否可能)。 或者回复逻辑中存在错误? @tshenry

1 个赞

我刚试着引用了几个帖子,我认为用户名和全名之间有些奇怪的问题。可能是最近这次提交:

1 个赞

您好 @JammyDodger

您能否提供更多关于

的信息?

当站点设置中的 prioritize username in ux 开启display name on posts 关闭时,您应该会在引用中看到用户名,反之亦然,可以看到全名。

1 个赞

抱歉,我本可以提供更多帮助。:slightly_smiling_face: 我刚刚尝试引用此主题中的几篇帖子,我的编辑器出现了一些奇怪的结果:

@Hifihedgehog 的帖子:

[quote=", post:114, topic:13395"]
你说得对!这只花了短短几分钟,我立刻就获得了批准。简单的修复总是令人欣喜!:smile:
[/quote]

@tshenry 的帖子:

[quote="Taylor, post:113, topic:13395"]
您可以在“Elevated”计划下免费访问 v1.1 API。您只需从开发者仪表板申请即可。我发现它非常快速和简单。此后,Discourse Twitter 登录工作得完美无缺 :tada:
[/quote]

(这是 @taylor 收到通知的一种样式)

4 个赞

啊,谢谢你指出这一点……是的,这是不希望的/非预期的。我会对此进行调查!

3 个赞

所以 @taylor 在这个引用中被标记(并收到邮件)的原因是,他的用户名 - Taylor@tshenry 的全名 - Taylor 相同 :open_mouth: ,而(全名)在引用中被正确优先处理,因为在 DEV: Prioritize full name when setting active (#15820) · discourse/discourse@5a93ce4 · GitHub 中添加了更改。

总之,感谢您的提示,我会修复这个问题!

9 个赞

FWIW,它还会留下没有全名的引用为空:

[quote=", post:114, topic:13395“]你说得对!这只需要几分钟,我立刻就获得了批准。简单的修复总是不错的! :smile:
[/quote]

4 个赞

我们现在都搞定了,对吗,@isaac

是的,我们已撤销了更改,我正在修复逻辑后再重新合并。

3 个赞

在更新引用逻辑以允许我们通过站点设置切换用户名全名时,我遇到了一个问题(部分问题已在上面说明),让我创建一个假设场景……

  • Tim 创建了一个帖子
  • 添加并激活了站点设置,将OP显示名称切换为用户名**(已激活)或全名(现已激活)**
  • 用户在新的帖子中引用了Tim,但因为我们现在对引用使用全名,我们的另一个用户TimTam,全名:Tim,会收到通知,说有人引用了他从未创建的帖子。

重新烘焙所有引用也是不可行的。如果此站点设置被切换了多次,并且我们重新烘焙了多次,那么从全名用户名转换的引用不是唯一的,可能会找到多个用户。

我认为我们可以采取的途径是在引用的data-full-name="true"或类似内容)中添加一个额外的数据属性,以检查我们是否应该在用户体验中用全名替换用户名,而不是操作data-username

例如。

data-username="always.users.username" data-post="1" data-topic="1" data-full-name="true"

这样可以省去我们担心是在查询还是发送关于用户名或全名的通知的麻烦。有什么想法?这项更改是否值得更新PrettyText和我们的引用构建器?

5 个赞

我倾向于不添加对切换的支持。这是您在社区设置早期做出的决定,支持超级顺畅的切换成本极高,并伴随着许多权衡。

如果我引用您时用户名优先,我们将渲染此 markdown

[quote="isaacjanzen, post:12, topic:217633"]
想法?
[/quote]

如果我引用您时姓名优先,我们将渲染此 markdown

[quote="Isaac Janzen, post:12, topic:217633"]
想法?
[/quote]

全名中的 , 需要小心处理——但我支持为此用例删除它们,或者我想您可以引入一些转义技巧。

4 个赞

你的意思是,你建议我们放弃尝试添加显示带全名的引用的功能吗?我们不可避免地会遇到这些切换情况……例如,任何现有的带有引用的社区

1 个赞

不,不是完全放弃……meta 禁用了 prioritize username in ux。我刚才引用的内容应该是:(缺少一个头像,需要修复)

这里的标记应该是:

[quote="Isaac Janzen, post:14, topic:217633"]
Are you saying you would recommend we scrap trying to add the ability to display quotes with full names?
[/quote]

唯一需要更改的是让引用小部件能够识别该设置,以便它填写全名而不是用户名。不用担心迁移和历史记录。

1 个赞

我不太确定我们在这里是否在同一页面上……当我们合并 DEV: Prioritize full name when setting active (#15820) · discourse/discourse@5a93ce4 · GitHub 时,我们实现了

  # quote.js
  # 如果站点设置优先使用全名,则 opts.displayName = true
  const name = opts.displayName
    ? opts.name || post.name
    : opts.username || post.username;

  # 构建引用 markdown
  const params = [
    name,
    `post:${opts.post || post.post_number}`,
    `topic:${opts.topic || post.topic_id}`,
  ];

以获得以下输出:

但问题是,基于全名的用户查找破坏了已用用户名烘焙的现有引用。

所以感觉不可能忽略

1 个赞

我非常困惑,因为 meta 有:

那么为什么上面的引用中缺少名字?更改被回滚了吗?

同意我们需要在这里做更多的事情:

我们需要从“post / topic”组合中获取用户名,并将其放入已处理的 markdown 中(我们应该无条件地这样做),否则我们将无法为全名显示头像。

它还可以让我们修复这个边缘情况,这样它就不会在我这个错误的引用中显示我的头像。(甚至可以突出显示错误的引用)

1 个赞

啊,是的

我同意,可以添加这个。

2 个赞

我完全愿意在此修复一些极端情况:

  1. 用户名不匹配
    • 我们如何处理头像?
    • 我们如何处理用户名?
  2. 全名不匹配
    • 我们如何处理头像?
    • 我们如何处理姓名?

我认为目前最好的做法就是“覆盖”。如果帖子有姓名/用户名,则使用帖子中的姓名/用户名,而不是引文中提供的。使用当前姓名/当前用户名进行处理。

3 个赞

好的,我有一个 PR 已经准备好了。

主要收获

我们现在传递用户名,当

siteSettings.display_name_on_posts && !siteSettings.prioritize_username_in_ux && post.name

以及全名,以确保我们在查询用户/头像时不会出现任何不匹配。

例如:

[quote="Isaac Janzen, post:3, topic:7, full:true, username:isaac.janzen"]
bing bong
[/quote]

你怎么看 @sam

3 个赞

我猜我可以接受一个 markdown 更改,这样我们就可以避免陷入一场巨大的安全冒险。但是,更改需要非常精确。

你能确认新的冗长语法仅在 siteSettings.display_name_on_posts \u0026\u0026 !siteSettings.prioritize_username_in_ux 都为真时才会发生吗?

[quote="Isaac Janzen, post:3, topic:7, username:isaac.janzen"]
....
[/quote]

这意味着,如果你不启用 display_name_on_posts 并且禁用 prioritize_username_in_ux

那么旧的引用格式应保持不变:

[quote="isaac.janzen, post:3, topic:7"]
....
[/quote]

我现在愿意接受这作为一个中间步骤,但我们的长期目标将是消除引用块中的这种噪音(收紧安全,限制滥用),并支持我们一直拥有的简略引用格式,就像我们现在被迫为内联单行框做的那样,例如:Quoting broken when name matches username - #20 by isaac < - https://meta.discourse.org/t/quoting-broken-when-name-matches-username/217633/20?u=sam

提及 @tobiaseigen 以便他能看到,因为这与之前的讨论有关。

底线:

  • 我认为现在更改此边缘情况的 markdown 格式是可以接受的——仅此边缘情况——@codinghorror 确认。
  • 待定安排安全工作,以便引用块变为 [quote="TOTALLY OPTIONAL WILL BE FISHED FROM POST IF SECURITY LINES UP AND INFO ON POST IS PRIORITIZED OVER THIS TEXT, post:3, topic:7"]。 - 建议我们稍等一下。
3 个赞

已合并并部署 https://github.com/discourse/discourse/pull/16078

我可以确认。

3 个赞