[Avis d’administrateur] Le thème « _Base » contient du code qui doit être mis à jour. (id:discourse.script-tag-discourse-plugin) (en savoir plus)
Pour l’un de mes forums, je me suis débarrassé de ce message simplement en déplaçant mon script JS vers le nouvel onglet de personnalisation JS.
Sur mon autre forum, cela ne fonctionne pas aussi facilement.
Il s’agit d’un ancien remplacement qui affiche le champ de balise du compositeur uniquement dans les catégories qui acceptent les balises :
<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>
Ce script était fortement basé sur une modification similaire (et ancienne, datant de 2019 ou avant) publiée sur meta, mais je ne parviens plus à trouver la publication originale.
Quoi qu’il en soit, il y a deux questions en une :
-
Comment déplacer correctement cela dans l’onglet JS ? Est-ce possible, ou dois-je créer un composant de thème ?
-
Existe-t-il un moyen plus élégant de masquer/afficher le sélecteur de balises du compositeur uniquement dans certaines catégories ? J’utilise des balises pour une seule catégorie sur mon forum (une catégorie d’annonces avec les balises
#searchet#offer)