部分只读模式

有时我们会遇到需要将论坛设置为“只读”模式以防止发布新帖的情况。

然而,令人非常恼火的是,只读模式还会阻止配置更改、SSO 同步和登录。

如果我们能有一种部分只读模式,只让帖子和帖子操作变为只读,那就太好了。

目前我能想到的唯一方法是从所有类别安全组中剥离帖子权限,但这有点太 hacky 了,而且需要暂时将它们存储在别处。

有人知道完成此事的最佳方法吗?
这可能属于插件的范畴,但仍然:哪种方法最好?

14 个赞

一个插件 + 站点设置应该可以解决问题。

也许可以尝试 validate_post 钩子,添加一个自定义验证,如果站点设置将其设置为只读,则返回“不正确”。

6 个赞

我使用了 NewPostManager.add_handler,似乎 :validate_post 事件仅用于通知,而不提供返回结果和阻止帖子的机会。

这是一个可以通过开关按钮禁用发帖的插件:GitHub - communiteq/discourse-prevent-posting

配置

前往 管理员 - 插件 - discourse-prevent-posting - 设置

prevent posting enabled:启用插件并阻止创建新帖子。

prevent posting message:插件启用时显示的全局通知消息。

prevent posting allow pms:如果启用,则允许发送私人消息。

7 个赞

我认为我们应该把这个添加到我们的路线图 @sam

7 个赞

当然!

不过,我想确定这里的设置,理想情况下,我们可以将其全部纳入一个具有多种选项的单一站点设置中。

首先想制定一个好的规范。一些问题:

  • 反应和插件怎么样?
  • 用户个人资料怎么样?
  • 如何用新帐户注册?

我也担心在这里允许过高的保真度。

也许一个简单的维护模式开关,并允许管理员始终绕过,就足够了?

8 个赞

供您参考/供您参考 -

对于我们的社区,此插件提供“安息日”模式。其核心目的是促使社区成员将他们在在线环境中获得的体验,充满爱心地服务于他们当地社区的邻居。

理查德开发的核心组件是:

  • 能够安排例行和偶尔的发布禁用和重新启用时间。可以禁用周末(持续)和主要节假日(偶尔)的发布。

  • 能够将其与自定义全局横幅同步,以免让参与者感到困惑(“为什么网站无法正常运行?!”)。相反,我们可以向访客和成员清楚地解释为什么发布暂时被禁用。

至于其他活动:

  • 禁用反应与最初的设想一致,但我认为可以将其作为一个管理员可以切换的复选框,以扩展此网站设置的多功能性。

  • 我认为此插件不会影响任何其他插件。

  • 可以创建新帐户 - 仅禁用发布。

它运行得非常好。我很高兴此功能可能会集成到路线图中。

3 个赞

@outofthebox 实际上,调度不属于此插件,那是 scheduled-readonly 插件,它与 prevent-posting 插件紧密配合。

5 个赞

我收回我的话! :slight_smile:

4 个赞

很高兴得知这一点,因为我一直在尝试一种安息日或休假模式的想法,因为我可能希望我们休息一下,尤其是我在经营 Discourse 网站的同时还要上课。

我想我会尝试这两个插件,谢谢!

编辑:我刚刚在我的一个网站上测试并成功运行了它,但当我编辑插件以将其关闭时,它显示为只读模式,我无法编辑设置。我尝试在管理员 > 备份中点击“禁用只读模式”,但我认为该插件覆盖了设置。

一旦插件被启用并且处于只读时间段,我是否有办法禁用它?

编辑 2:我不得不重建而不使用该插件,因为它卡住了并强制执行只读模式,即使在时间到期后也是如此。我不知道我手动点击“禁用只读模式”按钮是否导致了这种情况。此外,出于某种原因,假期期间在另一个 Discourse 实例上甚至没有启用,所以我感到困惑 :slight_smile:

2 个赞

现在可以实现与 OP 类似的功能。

我们最近添加了“仅限员工写入”模式——这是一种只影响非员工的只读模式。它允许员工登录、发帖、更改设置等,而其他用户看到的网站基本上处于只读模式。

用法

要启用,请在控制台中运行:

Discourse.enable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)

要禁用:

Discourse.disable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)

希望这对您有所帮助!如果您有任何问题,请告诉我。

14 个赞

是否有机会实现 ADMIN_WRITES_ONLY_MODE_KEY 以防止审核操作?

我有一个用例,可以将论坛设置为只读模式,执行备份,然后保持论坛在线并可供查看,同时从头开始重建新的 VPS,恢复备份,然后无缝切换到新服务器的 IP,而无需停机。

如果在备份/只读模式后,旧服务器上的任何审核操作都会在实时切换后丢失,如果版主不受部分只读模式的约束。

我目前使用的是完全只读模式,但这很麻烦,因为它还会阻止通过 Web UI 进行的管理员更改。

3 个赞

此主题已在 13 天后自动关闭。不再允许回复。

现在已经添加了这个功能,是否有计划将其添加为计划只读插件的选项?

3 个赞

好主意。我会把它列入我的有趣项目清单,同时我们也欢迎拉取请求 :slight_smile:

3 个赞

温馨提示一下,各位测试计划性只读插件的同学,我设置了一个大约2分钟的测试用例,结果我困惑了为什么它没有关闭——结果发现它每5分钟才检查一次。

2 个赞

如果管理员在只读模式下仍能发送聊天消息,那就太好了。