当我点击“新建主题”按钮时,它不会立即显示新主题表单。相反,在我选择论坛中的一个主题后,表单才会显示。它仍然显示正在创建新主题,但是在后台。一旦你打开任何现有主题,你试图创建的新主题就会出现(完全正确;即,对于你打算发帖的论坛,即使你输入的主题在不同的论坛中)。
这是否在安全模式下发生?
1 个赞
在安全模式下无法重现此问题。是自定义主题/CSS 导致了此问题。
4 个赞
管理员添加了一个 CSS 自定义,如下所示:
body:not([class*="category-council-"]):not(.staff).closed-topic .reply,
body:not([class*="category-council-"]):not(.staff).closed-topic #topic-footer-buttons .create,
body:not([class*="category-council-"]):not(.staff).closed-topic .timeline-container .create,
body:not([class*="category-council-"]):not(.staff).closed-topic #reply-control {
display: none !important;
}
乍一看似乎还可以,但然后我看到 body.closed-topic 被应用于主题列表……这真的没有意义。
这个类默认不在 Discourse 中,所以需要追踪另一个添加它的自定义……
<script type="text/discourse-plugin" version="0.8">
const container = Discourse.__container__;
const controller = container.lookup("controller:topic");
const currentUser = api.getCurrentUser();
api.onPageChange(() => {
if (!currentUser || currentUser.admin || currentUser.moderator || currentUser.trust_level != 4 ) {
return;
} else {
let model = controller.get("model");
document.querySelector("body").classList.add("closed-topic");
if (model) {
if (!model.closed) {
document.querySelector("body").classList.remove("closed-topic");
}
}
}
});
</script>
所以在这里,如果你已登录,不是管理员,不是版主,并且是信任等级 4……那么它会将 closed-topic 类添加到页面主体。
这个类只有在 model.closed 为 false 时才会被移除,这意味着……如果它不是一个已关闭的主题(甚至根本不是一个主题),closed-topic 类将被应用。
这行:
document.querySelector("body").classList.add("closed-topic");
可能应该放在 if (model) 里面,因为否则即使没有模型存在时(例如,当您不在主题内时)它也会被应用……
似乎意图是阻止信任等级 4 的用户回复已关闭的主题,但它的应用范围太广了。
5 个赞
非常感谢,这正是我想要的。
呵呵,我不知道我是否是那个变更的原因。我发现了那个bug并肆意利用了它。我从来不理解为什么在你可以为旧帖子添加额外信息时,却要求人们开启一个新帖子。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.