DiscPage:一款用于创建静态页面并在文本中插入讨论气泡的插件

我认为这是可行的。在 dpg_displaypage 事件处理程序中,你需要使用 $.ajax() 来调用你的外部 API。此外,我认为你需要将你的外部 API 添加到 Discourse 设置的“内容安全策略脚本源”中。

2 个赞

看起来这个插件仍在维护中,但我似乎在我的服务器上发现了一个问题:启用该插件后,登录页面无法显示。我希望解决这个问题。

如果在我的服务器上启用了该插件,我可以确认登录页面显示为空白;如果禁用该插件,登录页面则恢复正常显示。如果用户已登录,则不会出现该问题,服务器也能正常工作。

希望能得到一些帮助或支持以解决此问题。我很乐意提供任何 troubleshooting 所需的额外信息。

谢谢,Jordan。
是的,我需要更多信息,因为我在多个 Discourse 实例上检查后无法复现该问题。
当你说“登录页面无法查看”时,指的是登录弹窗,对吗?
请提供更多详细信息和/或截图。另外,如果方便的话,请通过私信联系我,并提供你的 Discourse 实例的网址。

1 个赞

嘿,Syl,

感谢回复。

当我启用 discpage 插件并访问未登录的 Discourse 实例时,页面显示为完全空白。如下图所示:

我最近也检查了控制台日志,发现了一些与 discpage 相关的错误。虽然这些错误对我来说没有意义,但也许对你来说有提示作用……

感谢报告此问题。该 Bug 已在此处提交:

在修复该 Bug 之前,一个变通方法是禁用 Discourse 的“需要登录”设置。

编辑:该 Bug 现已修复。

1 个赞

嗨,Syl,
有点尴尬 :sweat_smile: 抱歉我说话直,我只是出于好奇查看了插件的源代码,我完全不懂编程,所以被 lib 文件的格式搞糊涂了。我猜这应该不是技术上的选择(不过我懂什么呀 :smile:),我也能想象并理解这是怎么来的。
我感觉你正处在中途,而且已经做得很棒了,所以我真的不想显得不知感恩,但你是否考虑分享一个更易读的版本呢?
在我看来,从长远来看,核心升级的节奏对插件作者来说可能难以跟上。如果能提供一个更易读的版本,或许能让那些想使用你插件功能、却因担心依赖太少人而犹豫的人更安心;说不定还能赢得一些善意和关注呢?

无论如何,非常感谢 :wink:

你好,本杰明:
插件的源代码以压缩形式发布,因为我对它感到羞愧。这是一个研发实验的产物,需要进行大量的重构。我推迟了这项任务,直到该插件引起一些关注。

3 个赞

:sweat_smile:
好吧,你可以把我算在“非常感兴趣”这一栏!
我觉得这是对核心“引用”功能的一个很好的变体。
我正在寻找一种激励,让用户参与一些演讲分析(这跟你的 Castafiore 用例很接近,可惜没那么有趣!),希望这个设计能促使他们进入写作模式。

2 个赞

目前一切顺利!
我的两点建议:

  • 关于标题的个人看法:我倾向于将其保持居中,这样能让插件的静态页面更无缝地融入整体“正常”的对话流中。
  • 边缘情况:或许可以为每个静态类别单独指定一个气泡类别,以防多个静态类别具有不同的读写权限。
  • 我是否遗漏了什么,还是 [dpgb id=titre] [/dpgb](据我所知这些会被转换为气泡)需要手动设置?我坦诚地(但徒劳地!)尝试了编辑器中的引用按钮,哎呀 :sweat_smile:。这可能是因为需要设置标签的 slug 吧 :thinking:
  • discpage hide tags 设置能否改为 hide discpage tags?我并不是很理解隐藏仅 dpg-**** 标签的难点,但我觉得在创建主题时,这些标签可能会让建议列表显得有点拥挤。

下一步,进行用户参与度测试!

感谢 @Benjamin_D,我们非常欢迎你的反馈。

页眉对齐方式必须适配以下三种情况:

  1. 普通 Discourse 页面(最大宽度 = 1110px);
  2. DiscPage 静态页面(最大宽度 = 782px,因为 1110px 对于无法放置侧边栏/小部件/图片的静态页面来说太宽了);
  3. DiscPage 分栏布局,左侧为静态页面,右侧为讨论主题(最大宽度 = 100%)。

我进行了大量测试,包括固定页眉对齐和根据布局动态调整的页眉对齐,最终得出结论:永久左对齐是最佳方案。

不过,我很乐意查看你提出的任何想法。请务必考虑上述三种情况。

该功能已支持,请参阅 文档 中的以下段落:

实际上,你可以在这里设置多个类别。我们将气球所属静态页面的类别称为 PageCat。如果该字段中存在多个气球类别,DiscPage 将选择第一个满足以下条件的类别:要么是 PageCat 的兄弟类别(具有相同的直接父级),要么是 PageCat 的直接父级。如果找不到这样的类别,DiscPage 将选择列表中的第一个类别。此功能允许将 [静态页面类别,气球类别] 进行配对,例如在多语言论坛中,或为具有不同组权限的静态页面进行设置时非常有用。

我同意这段描述确实不太容易理解。任何关于如何改进措辞的建议都欢迎提出。

是的,气球需要通过文本语法手动插入。
当你第一次尝试该插件时,为什么你会觉得引用按钮会有帮助呢?(我很感兴趣你当时的想法)

hide discpage tags 功能已经实现:在启用 DiscPage 的情况下,DiscPage 标签默认会在所有 Discourse 页面和小部件中隐藏。换句话说,如果你在任何地方看到了 DiscPage 标签,那就是一个错误。

discpage hide tags 设置则完全不同:它允许那些不想在 Discourse 实例中启用标签、但为了使用 DiscPage 而被迫启用的用户,模拟一个没有标签的实例。

1 个赞

:thinking: 实际上,我更倾向于保留最大宽度 = 1110px 的设置,即使是在分屏模式下,标题下方的静态页面占据了 100% 的宽度。我注释掉了 html.dpg header.d-header .wrap 代码块,发现在静态分栏页面上方,页眉周围留有一点白色区域其实也没那么糟糕(尽管在非分栏布局中,编辑标题和页面按钮看起来有点孤立无援)。

我真傻,真是该读读文档(RTFM) :sweat_smile:(为自己辩解一下,我去年可能读过,但忘了 :smile:
我不记得 DiscPage 会隐藏气泡分类了(刚以管理员身份测试过),但这确实是个很棒的功能。

所以如果我理解正确的话,在存在多个{静态页面分类,用户权限}的情况下,应该将关联的气泡分类设置为静态分类的子分类(从权限角度来看这很合理),或者将这两个分类都设置为同一个第三级父分类的子分类。这倒不是什么大问题,但如果静态分类是气泡分类的子分类,这样行得通吗?

可能只是因为那个图标的形状像气泡,再加上我可能从未使用过作曲器的引用按钮,也许我当时心想:嘿,这东西以前就有吗?所以我试了一下 :crazy_face:
我不介意写几行“代码”,但我都能想象到用户们的哀嚎了。也许他们暂时还不会自己设置静态页面。有时候我觉得键盘上的每一次敲击都可能是压垮骆驼的最后一根稻草…… :roll_eyes:

当然,抱歉……我把这归咎于我有点发烧,我不知道为什么我以为它们没有被隐藏,也许我在分屏模式的气泡部分的标签下拉框中瞥见了一个?我现在明白了我之前看到的那个尾随逗号是怎么回事,我当时试了各种方法,甚至给气泡主题加了标签!

是否可以让用户创建和编辑(自己的)静态帖子?这样,管理员限制就可以仅通过分类安全设置来实现。

编辑:
也许不行,修改 tag_groups 似乎受 StaffConstraint 限制 :disappointed_relieved:

我可以让信任等级 4(TL4)的用户设置一个气球,将 a = User.current()) && a.admin 改为 User.current()) && a.trust_level >= 4,但在管理员编辑静态页面之前,标签不会被创建…… :thinking:
有个很棒的功能:允许分类版主修改其分类的标签组 :smile:

顺便一提,我发现插件检查列表似乎会干扰 discpage(涉及 getmodel() 的问题)。

我更喜欢当前的布局。不过,应该有一种简便的方法来定制它。我会考虑一下。

不行,这种组合不受支持。

正如你所发现的,创建静态页面并不限于管理员,但插入气球是受限的。原因是 Discourse 中没有直接创建标签的方法(参见 此讨论)。为此,我选择使用 tag group API,该 API 仅限管理员使用。虽然有替代方案,但它们各自存在缺点。

你指的是 这个插件 吗?具体是什么问题?

确实,在同时启用这两个插件时,刷新静态页面会(某种程度上)关闭 discpage(返回普通布局),并且控制台会抛出错误:

Uncaught (in promise) TypeError: postModel is undefined
checklistSyntax javascripts/discourse/initializers/checklist:29

这两个插件单独使用时都能正常工作。

感谢 @Benjamin_D。该问题已在此提交:
https://github.com/sylque/discpage/issues/19

编辑:此问题已在最新版本(1.0.38)中修复。

2 个赞

@syl,很抱歉带来这个坏消息:我发现了一个更严重的兼容性问题。当启用 discpage 插件时,邀请链接会跳转到空白页面(而不是注册页面)。浏览器控制台报错:

  r.site.categories is undefined

禁用该插件后,邀请链接即可恢复正常。

1 个赞

非常感谢你报告这个问题,@Benjamin_D。这又是“需要登录”模式下的另一个 bug,因此我已重新开启了 之前的 GitHub 问题。在修复之前,一个临时解决方案是禁用“需要登录”模式。

编辑:此问题已在最新版本(1.0.38)中修复。

2 个赞

@syl
我认为最近的标签路由更改

导致了一些问题:thinking:
至少气泡中的链接现在应该指向 /tag/dpg-xxx,而不是 /tags/dpg-xxx。

2 个赞

感谢 @Benjamin_D,此问题已在 v1.0.38 中修复。

2 个赞