如何禁用添加到员工通知功能中的新"由...添加"?

您好!
我注意到员工通知中新增了一个功能,即在员工或管理员添加的员工通知后面会自动加上“添加者:[员工姓名]”。

但是,在我们的使用场景中,有些员工通知不需要也不希望包含这个强制性的“添加者”信息:

  1. 当某位员工有一段时间没有发帖时,会出现一个自动生成的员工通知:“某某已有一段时间未发帖…”等,或者如果是他们的第一篇帖子,“某某发布了第一篇帖子,欢迎加入社区”,我会将其更改为该员工的职位和角色。例如,我会删除自动生成的员工通知,并将其修改为“某某是分析团队的产品经理”。在这种情况下,我不希望显示“某某是分析团队的产品经理(添加者:@gassim)”:cry:
  2. 当帖子是带有资源、幻灯片或录音的后续帖子时,我或另一位员工会回复链接到这些资源,并在链接上方添加一个员工通知,例如“ :video_camera: 录音”,我不希望显示“ :video_camera: 录音(添加者:@gassim)”。

在上述使用场景中,包含姓名信息并不相关。如果我们确实需要确定谁添加了员工通知,我们可以使用数据浏览器(Data Explorer)或通过管理员 > 日志 > 员工操作 - 操作:“添加员工备注”来查找。

如果我们希望添加“(添加者)”信息,我们可以在需要时手动添加。

请问有办法禁用这个新功能吗?

谢谢!

1 个赞

对此没有设置解决方案。不过,你可以通过一些 JavaScript 来实现:

在你的主题或新的主题组件中,在“JS”选项卡中添加以下内容:

import { apiInitializer } from "discourse/lib/api";
import { schedule } from "@ember/runloop";

export default apiInitializer((api) => {
  const current = api.getCurrentUser();
  if (!current || !current.staff) {
    return;
  }

  // 移除包含 staff notice 的第一段之后的所有内容
  api.decorateCookedElement((element, helper) => {
    const post = helper?.getModel();
    if (!post || !post.notice) {
      return;
    }

    schedule("afterRender", () => {
      const postNoticeMessage = document.querySelector(
        `article[data-post-id="${post.id}"] .post-notice-message`
      );

      if (postNoticeMessage) {
        postNoticeMessage.replaceWith(postNoticeMessage.firstChild);
      }
    });
  });
});

这应该足够了。

2 个赞

我会注意到这些“由谁添加”信息只会显示给工作人员,因此普通用户将不会看到它们。

5 个赞

谢谢你,巴斯,好点子!

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.