对话框 HTML 支持

您好,

在用户无法创建帖子的分类页面上,我使用一个带有关于信任等级的帖子链接的横幅文本。
Screenshot 2022-12-09 at 9.09.29

横幅中的 HTML 工作正常

但是点击 + New Topic 时,模态框无法处理 HTML。

如果模态框也能像之前使用的 bootbox 模态框一样处理 HTML,那就太好了。

谢谢 :slightly_smiling_face:

3 个赞

@pmusaraj 提供了一个支持 HTML 内容的解决方案,在此

4 个赞

你好 Tim,

谢谢你的建议 :slightly_smiling_face: 我用 modifyClass 做了更改,但我认为将此对话框设为 htmlSafe 在核心中是合理的更改,因为类别横幅也处理 HTML。

import { htmlSafe } from "@ember/template";

export default {
  name: "dialog-html-support",

  initialize() {
    withPluginApi("0.8.7", (api) => {
      api.modifyClass("component:d-navigation", {
        pluginId: "dialog-html-support",

        actions: {
          clickCreateTopicButton() {
            if (this.categoryReadOnlyBanner && !this.hasDraft) {
              this.dialog.alert({
                message: htmlSafe(this.categoryReadOnlyBanner),
              });
            } else {
              this.createTopic();
            }
          },
        },
      });
    });
  },
};
3 个赞

嗨,团队!

我希望在下面的设置中能够使用链接。在我的例子中,任何人都可以查看一个类别;但是,你需要属于一个组才能创建和回复主题。

当用户无法在此类别中创建主题时的横幅文本:”

所以我尝试过使用文本,例如:

要参与,您需要“应用组链接”。

不幸的是,此设置仅支持纯文本,不支持链接。团队能否考虑更改此设置?

2 个赞

我已将您的帖子移至此主题,以便集中处理对此项更改的请求。:+1:

2 个赞

谢谢 Jammydodger!

有时很难确定在哪里发帖最好。Discourse 规模庞大,这并非坏事;但有时会让相对较新的我们感到畏惧。

然而,这正是你们出色的团队和社区经常能帮助大家的地方!

2 个赞

嗨 Don 和 @TimJensen 吗?这个解决方案也能修复我下面示例中的 markdown 吗?使用:

要参与该类别,您需要 [Apply](/g/groupname/members)。

代码也需要创建一个主题组件,我猜。我需要把它放在哪个部分?


编辑
嗯……目前添加一个 js 文件可能有点超出我现在的技能水平。:sad_but_relieved_face: 我需要一点指导才能成功完成这个任务。

1 个赞

您好 Dan,

横幅支持 HTML。此主题是关于单击“创建主题”按钮时显示的对话框。

不,它支持 HTML。您的示例将如下所示::arrow_down_small:

要参与该类别,您需要 :a href="/g/groupname/members">申请</a>。

这应该可以在 Header 中使用,以支持对话框中的 HTML。:slightly_smiling_face:


<script type="text/discourse-plugin" version="0.8">
  const { htmlSafe } = require("@ember/template");

  api.modifyClass("component:d-navigation", {
    pluginId: "dialog-html-support",
        
    actions: {
      clickCreateTopicButton() {
        if (this.categoryReadOnlyBanner && !this.hasDraft) {
          this.dialog.alert({
            message: htmlSafe(this.categoryReadOnlyBanner),
          });
        } else {
          this.createTopic();
        }
      },
    },
  });
</script>
3 个赞

好的,所以我只需要使用 HTML 而不是 Markdown。

那么,如果有人尝试在类别中回复和/或创建新主题,横幅就会生效吗?如果我理解正确的话,您的要求与主题组件的新主题按钮有关?

使用您的 JavaScript,您是否只会创建一个新的主题组件并上传 *.js 文件? CSS 等部分是否还需要其他东西?或者它就能正常工作?

如果我想在链接按钮之前显示对话框,我需要编写什么代码?抱歉,我还在学习中。

1 个赞

只需在管理员中创建一个新组件,然后将上面的代码粘贴到 Common > Header 部分。它将允许在单击“新建主题”按钮时处理模态中的 HTML。 :slightly_smiling_face:

演示

无代码
正如您所见,横幅支持 HTML,但当我单击“新建主题”按钮时,模态(对话框)不支持它。


有代码


我不确定您说的 :arrow_down_small: 是什么意思

2 个赞

感谢您解释在哪里添加 HTML 修复代码。

实际上,您的第一个视频完美地回答了我的问题,让我豁然开朗。链接按钮之前的对话框文本与 Markdown 程序相同。(第一个视频显示了在未放置代码时失败的情况)我也在您的代码示例中错过了它 :facepalm:

例如

参与“markdown”
参与“html”

非常感谢您帮助我开阔思路。

Dan

2 个赞

抱歉延迟了,各位,这应该可以解决问题:FIX: Allow HTML in category read-only dialog by pmusaraj · Pull Request #20349 · discourse/discourse · GitHub

4 个赞

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