Desculpe, parece que não vi sua mensagem em 2020!
De qualquer forma, meu código quebrou após uma atualização recente do Discourse. Aqui está uma atualização funcional (o CSS não muda, no entanto):
Selecione as classes de categoria nas quais você deseja ocultar o seletor de tags:
body:not(.category-other-languages):not(.category-trading-post) {
.category-breadcrumb .tag-drop {
display: none;
}
}
O script que alternará dinamicamente o seletor de tags:
// mostra o seletor de tags no composer apenas quando necessário
const discourseComputed = require("discourse-common/utils/decorators").default;
const EmberObject = require("@ember/object").default;
function toggleTagChooser(display = "hide") {
if (display == "show") {
document.getElementsByClassName("mini-tag-chooser")[0].style.display = "block";
document.getElementsByClassName("reply-area")[0].classList.add("with-tags");
return;
}
// Verifica a existência do seletor de tags
let tagChoser = document.getElementsByClassName("mini-tag-chooser");
if(tagChoser.length > 0) {
tagChoser[0].style.display = "none";
document.getElementsByClassName("reply-area")[0].classList.remove("with-tags");
}
return;
}
api.modifyClass('controller:composer', {
@discourseComputed("model.category", "model.tags", "lastValidatedAt")
tagValidation(category, tags, lastValidatedAt) {
// código personalizado para alternar o seletor de tags
toggleTagChooser("hide");
if(category != null) {
if (
category.allow_global_tags == true ||
category.allowed_tag_groups.length > 0 ||
category.allowed_tags.length > 0
) {
toggleTagChooser("show");
}
}
// fim do código personalizado
const tagsArray = tags || [];
if (this.site.can_tag_topics && !this.currentUser.staff && category) {
// category.minimumRequiredTags incorpora tanto minimum_required_tags quanto required_tag_groups
if (category.minimumRequiredTags > tagsArray.length) {
return EmberObject.create({
failed: true,
reason: I18n.t("composer.error.tags_missing", {
count: category.minimumRequiredTags,
}),
lastShownAt: lastValidatedAt,
});
}
}
}
});