Lo siento, ¡parece que no vi tu mensaje en 2020!
De todos modos, mi código se rompió después de una reciente actualización de Discourse. Aquí tienes una actualización que funciona (el CSS no cambia, sin embargo):
Dirígete a las clases de categoría en las que deseas ocultar el selector de etiquetas:
body:not(.category-other-languages):not(.category-trading-post) {
.category-breadcrumb .tag-drop {
display: none;
}
}
El script que alternará dinámicamente el selector de etiquetas:
// muestra el selector de etiquetas en el compositor solo cuando sea necesario
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 la existencia del selector de etiquetas
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 el selector de etiquetas
toggleTagChooser("hide");
if(category != null) {
if (
category.allow_global_tags == true ||
category.allowed_tag_groups.length > 0 ||
category.allowed_tags.length > 0
) {
toggleTagChooser("show");
}
}
// fin del código personalizado
const tagsArray = tags || [];
if (this.site.can_tag_topics && !this.currentUser.staff && category) {
// category.minimumRequiredTags incorpora tanto minimum_required_tags como 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,
});
}
}
}
});