我想知道有多少网站也面临这个问题。我也希望它能默认为“公开”。
我也认为 UI 可以做得更好。
- 您可以从多选投票中创建单选投票,所以我认为没有必要单独设置单选。
- 我总是会显示扩展 UI。
- 我希望默认选项为 Public=True,或者如果更容易实现,则为 Anonymous=False。
- 我会将“公开”的复选框移到顶部,或者为公开投票和匿名投票分别设置 UI,因为它太容易被忽略了。
我不熟悉更改主题组件,如果现在有人制作了简单的解决方法,我很想了解如何实现以及在更新 Discourse 时需要检查什么。
2 个赞
我是新手,但我想解决这个问题,所以我问了 chat-gpt:
这是答案:
你找到的脚本是一个很好的开始。它修改了 poll-ui-builder 控制器,以便在控制器调用 onShow() 函数时将 publicPoll 属性设置为 true。这确实打算添加为一个主题组件。
但是,代码可能无法正常工作,因为执行顺序。原始的 onShow() 方法将 publicPoll 设置为 false,然后修改将其设置为 true。
正确的方法是先调用父类的 onShow 方法,然后将 publicPoll 设置为 true:
<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
onShow() {
this._super(...arguments);
this.set('publicPoll', true);
}
});
</script>
你可以通过以下步骤将此脚本添加到你的主题中:
- 进入 Discourse 管理仪表板。
- 在“自定义”部分下,单击“主题”。
- 选择要修改的主题。
- 在主题编辑屏幕中,单击“编辑 CSS/HTML”。
- 在左侧边栏中,单击“</> Common”。
- 将上面的脚本粘贴到“</> Common”部分。
- 单击“保存”按钮。
这将把更改应用到你的主题。请记住,主题更改仅应用于使用该特定主题的用户。如果你有多个主题,则需要将此修改添加到每个主题。
另外,请记住清除浏览器缓存或执行硬重新加载,以确保正确加载更改。
我将尝试按照这些步骤与我们的论坛管理员一起操作,但这需要一些时间,如果这里有人想先尝试一下并提供反馈,我将非常高兴。
另外,我想改变 UI 的行为,我想跳过简单的屏幕,所以我再次问了 chat-gpt:
在你当前的 এটা 码中,扩展视图由 showAdvanced 属性控制。如果将其设置为 true,则会显示扩展视图。
要始终显示扩展视图,你可以修改 poll-ui-builder 控制器中的 onShow() 方法,将 showAdvanced 设置为 true。你可以将此修改添加到你之前创建的主题组件中。这是更新后的脚本:
<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
onShow() {
this._super(...arguments);
this.set('publicPoll', true);
this.set('showAdvanced', true);
}
});
</script>
再次,请记住按照我之前概述的步骤将此脚本添加到你的主题中。保存脚本后,加载投票 UI 时应始终显示扩展视图。
同样,请记住清除浏览器缓存或执行硬重新加载,以确保正确加载更改。
我想尝试自己测试一下,但如前所述,我只是我们网站的版主,而不是管理员,所以这需要几天或几周的时间。
2 个赞
Canapin
(Coin-coin le Canapin)
3
很高兴你解决了这个问题。
顺便说一句,当你想要修改多个属性时,可以使用这种语法:
this.setProperties({
'publicPoll': true,
'showAdvanced': true
});
2 个赞
并不是我,我只是把这个链接给的代码喂给 Chat-GPT:
然后我给了他@JammyDodger的第一次尝试,并问他是否能解决我的两个要求 
如果它能工作那将是太好了,这也是我从 discourse 学到的另一个很酷的东西。
2 个赞
我们的实例不再起作用了。
由于我没有权限,因此无法检查代码片段是否仍然存在。
@JammyDodger 和 @nathank ,在你们的论坛里它还能用吗?
1 个赞
我的测试站点现在似乎也不起作用了。是否需要更新以适应最近的一些更改?
我将把它拆分到一个 Dev 主题中 
2 个赞
nathank
(Nathan Kershaw)
9
我发现这个模态框的调用方式已根据以下内容进行了重构:
但是,我不知道如何通过 API 与其进行交互。新的模态框文件在这里:
https://github.com/discourse/discourse/blob/main/plugins/poll/assets/javascripts/discourse/components/modal/poll-ui-builder.js
据我所知,文档中没有涵盖如何操作,所以我不知道现在如何调用它。有人能帮忙吗?
1 个赞