[Aviso do Admin] O tema ‘_Base’ contém código que precisa ser atualizado. (id:discourse.script-tag-discourse-plugin) (saiba mais)
Em um dos meus fóruns, me livrei dessa mensagem simplesmente movendo meu script JS para a nova aba de personalização de JS.
No meu outro fórum, não funciona tão facilmente.
É um override antigo que mostra o campo de tags do composer apenas em categorias que aceitam tags:
<script type="text/discourse-plugin" version="1.4.0">
// 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', {
pluginId: "toggleTagChoser",
@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>
Este script foi amplamente baseado em uma modificação semelhante (e antiga, de 2019 ou anterior) postada no meta, mas não consigo encontrar a postagem original.
De qualquer forma, há duas perguntas em uma:
-
Como mover isso corretamente para a aba JS? É possível, ou devo criar um componente de tema?
-
Existe uma maneira mais elegante de ocultar/mostrar o seletor de tags do composer apenas em certas categorias? Eu uso tags para apenas 1 categoria no meu fórum (uma categoria de anúncios com tags
#searche#offer)