Sorry, it seems that I didn’t see your message in 2020!
Anyway, my code broke after a recent Discourse update. Here’s a working update (the CSS doesn’t change though):
Target the category classes on which you want to hide the tag selector:
body:not(.category-other-languages):not(.category-trading-post) {
.category-breadcrumb .tag-drop {
display: none;
}
}
The script that will dynamically toggle the tag selector:
<script type="text/discourse-plugin" version="0.8.23">
// show tag chooser in the composer only when necessary
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;
}
// Verify the existence of the tag choser
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) {
// custom code to toggle the tag choser
toggleTagChooser("hide");
if(category != null) {
if (
category.allow_global_tags == true ||
category.allowed_tag_groups.length > 0 ||
category.allowed_tags.length > 0
) {
toggleTagChooser("show");
}
}
// end of the custom code
const tagsArray = tags || [];
if (this.site.can_tag_topics && !this.currentUser.staff && category) {
// category.minimumRequiredTags incorporates both minimum_required_tags, and 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,
});
}
}
}
});
</script>