Discourse Retort

Maker Forums 的成员们非常珍视能够使用多种表情符号进行反应的功能。如果 retort 停止维护,在迁移过程中失去这一功能将会让我们非常遗憾。

3 个赞

Retort 将继续由 Pavilion 维护。

@Ahmed_Gagan 您对以下内容有何看法?

5 个赞

如需优先处理回复反应,您可以使用以下代码:

SiteSetting.post_undo_action_window_mins = 允许的最大分钟数

ReactionManager.new(first_retort_reaction_at_priority, by_user, Guardian.new(by_user), post).toggle!

这将处理所有相关事宜:如果用户已点赞该帖子,它将移除“点赞”并添加相应的反应。

1 个赞

是的,我可以做到。不过这算是个变通方案 :wink:

我不确定这个变通方案长期来看是否依然可行,而且也存在一定风险。例如,如果我直接运行那段代码,用户的 post_undo_action_window_mins 站点设置就会被永久修改。虽然你可以在迁移结束时将其改回来,但为了绕过守护机制而临时修改设置并不是理想的做法。

我理想中的方案是对 ReactionManager 接口进行微调,以便能够可靠地将“回击”(retorts)迁移为“反应”(reactions)。目前该接口仅设计用于处理来自客户端的请求。

实现这一目标的一种方法是:

  • toggle! 中的守护逻辑抽象为 ensure_can_toggle 方法
  • 使 ensure_can_toggle 方法支持 force 选项

这是 Discourse 其他部分处理迁移或后端导入时通常采用的方法(如果你在 app/lib/ 中搜索 force,就能看到一些示例)。

这样解释清楚吗?

2 个赞

我认为这里不需要使用该设置,因为我们并未触及帖子中已存在的点赞。这意味着我们正在为帖子创建新的反应。在这种情况下,guardian.can_delete_reaction_user? 将始终为 true。就个人而言,仅使用 ReactionManager.toggle 就足以满足此需求。

1 个赞

Discourse 通过“点赞”功能实现了许多操作,例如根据信任等级限制点赞数量,并依据点赞数授予用户徽章。

添加“反应”是否也会同时增加用户和主题的点赞计数?

1 个赞

你可以单独询问它与新的官方插件 Discourse Reactions 的交互情况。

但 Retort(与 Discourse Reactions 插件不同,它允许每个用户对每篇帖子进行多次反应)与“点赞”相关的信任等级和徽章完全没有交互。

5 个赞

@gdpelican 这是从 https://meta.discourse.org/t/reaction-emoji-seem-to-have-no-verification/189108 转载的帖子,因为反应表情似乎不属于 Discourse 原生功能,所以我在此重新发布:

我认为我可能发现了一个 bug,但目前还没有完整的复现步骤,不过我可以轻松展示该问题的示例,并且我认为我的推测可能是正确的。

问题如下:用户可以添加不存在的表情符号到帖子反应中,结果会在帖子中出现 :whateverYouWant: 这样的反应。

你可以在 Manjaro 论坛上看到相关示例,我注意到某位用户的帖子经常包含这些不存在的表情符号。在向他询问了几个问题后,我推测他可能在使用某种浏览器自动翻译扩展程序,该程序可能会将类似 :code: 的表情符号代码翻译成他的语言。遗憾的是,我没有收到该用户的回复,因此无法确切了解他在浏览器中的具体设置。为了佐证我的推测,你可以看到他在以下链接的线程中引用他人时,其引用内容中包含了原始消息的翻译版本。

查看 Manjaro 论坛上的这条消息/线程:

查看反应中的示例,你可以清楚地看到所有正常的反应旁边都有一个无效的反应:

因此,似乎由于缺乏对表情符号代码的验证,用户可以发送不存在的表情符号。

1 个赞


是否也有人遇到在小屏幕和移动设备上反应位置错乱的情况?

1 个赞

我已更新此插件,使其与最新的 Discourse 代码兼容。

https://github.com/gdpelican/retort/commit/2b94ca394e941342cba4a4ee4950daf54856fa61

@th21 我还更新了 retort 的 HTML 结构,以更好地适应较长的回复列表,尤其是在移动设备上。

https://github.com/gdpelican/retort/commit/a9740c2a84a1de89c66b5c5cf865e6118e535d72

8 个赞

谢谢,它起作用了!

2 个赞

在最新版本中,我的移动设备上的回复功能出问题了

1 个赞

我认为回复容器应该位于工具栏的上方或下方,最好是在上方,这样我们在 CSS 方面会有更多的操作空间。

2 个赞

是否可以使用数据浏览器或控制台查找最常用的表情符号列表?:thinking:我查看了 plugin_store_rows 表,但没有找到有用的信息。

3 个赞

您好,用户用俏皮话做出反应的工具提示在移动设备上现在已损坏。我尝试调整了 z-index,但未能使用自定义 CSS 成功修复它。有人能帮忙看看吗?

此插件已#生命周期结束。请使用 Reactions Plugin。

5 个赞

Discourse Reactions 是一个糟糕的替代品,原因只有一个:它将反应限制为每帖一个。与 Retort 相比,这大大降低了反应的效用,Retort 允许人们对同一帖子给出多个反应。

因此,我真希望 Retort 能够得到维护。更好的解决方案是更新 Discourse Reactions 以允许多个反应。

5 个赞

另一个很大的不足是,Retort 允许你从所有可用的表情符号中进行选择,而你必须为 Discourse Reactions 定义一组表情符号。如果 Discourse Reactions 具备了这两个功能,我很乐意放弃 Retort,但在此之前,如果我告诉用户他们将失去 95% 的表情符号反应的访问权限,他们是不会高兴的。

2 个赞

有一个 Feature 主题显示出一些希望……

3 个赞

是的,如果这一切都实现了,我认为我可以轻松地说服我的用户群迁移。只是在这一切完全可用之前就淘汰替代方案有点糟糕。

3 个赞