استخدمنا الـ 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 للحصول على عمق الفئة.