Hi,
-
We have a category called “Help & Support”.
-
This category has a bunch of subcategories. “Robotics”, “Programming”, etc.
-
So far users can post in “Help & Support”.
-
Our issue is that nobody is choosing a subcategory.
We would like to limit posting to only those subcategories.
One solution would be to lock the “Help & Support” category. However, we tested this options and since this disable the “New topic” button, people stopped posting there altogether.
Is there a way to keep a category open but configure the minimum depth level of subcategories selected?
Ideally, the current category (“Help & Support”) would be preselected and people would only need to click and select the subcategory.
Does anyone have an idea on how we could achieve this or similar behavior?
Thanks,
R.
我们使用 API 修改了帖子编辑器控制器,并为其添加了错误处理。我手头没有最新版本的代码,但大致如下:
var computed = require("ember-addons/ember-computed-decorators").default;
api.modifyClass('controller:composer',
{
save(opts) {
var categoryNb = $('.category-input .category-chooser .selected-name > span').length;
if((categoryNb !== 0 && categoryNb < 2) ) {
this.set("lastValidatedAt", Date.now());
return false;
}
return this._super(opts);
},
@computed("model.categoryId", "lastValidatedAt")
categoryValidation(categoryId, lastValidatedAt) {
var InputValidation = require("discourse/models/input-validation").default;
var categoryNb = $('.category-input .category-chooser .selected-name > span').length;
if( (categoryNb !== 0 && categoryNb < 2) ) {
return InputValidation.create({
failed: true,
reason: 'You need to select a subcategory',
lastShownAt: lastValidatedAt
});
} else {
return this._super(categoryId, lastValidatedAt);
}
}
}
);
简而言之,这段代码只是检查分类输入中的元素数量,如果数量为一或零,则输出错误。子分类始终包含两个元素:‘<PARENT><CHILD>’。在我手头的这个代码片段版本中,这是通过 jQuery 实现的。我相信还有一个 API 调用用于获取分类的层级深度。