[Avviso Admin] Il tema ‘_Base’ contiene codice che necessita di aggiornamenti. (id:discourse.script-tag-discourse-plugin) (scopri di più)
Per uno dei miei forum, ho eliminato questo messaggio semplicemente spostando il mio script JS nella nuova scheda di personalizzazione JS.
Sull’altro mio forum, non funziona così facilmente.
Si tratta di un vecchio override che mostra il campo tag del composer solo nelle categorie che accettano tag:
<script type="text/discourse-plugin" version="1.4.0">
// mostra il selettore di tag nel composer solo quando necessario
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 l'esistenza del selettore di tag
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) {
// codice personalizzato per mostrare/nascondere il selettore di tag
toggleTagChooser("hide");
if(category != null) {
if (
category.allow_global_tags == true ||
category.allowed_tag_groups.length > 0 ||
category.allowed_tags.length > 0
) {
toggleTagChooser("show");
}
}
// fine del codice personalizzato
const tagsArray = tags || [];
if (this.site.can_tag_topics && !this.currentUser.staff && category) {
// category.minimumRequiredTags incorpora sia minimum_required_tags che 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>
Questo script era fortemente basato su una modifica simile (e vecchia, del 2019 o precedente) pubblicata su meta, ma non riesco più a trovare il post originale.
Comunque, ci sono due domande in una:
-
Come spostare correttamente questo nella scheda JS? È possibile, o dovrei creare un componente tema?
-
Esiste un modo più elegante per nascondere/mostrare il selettore di tag del composer solo in determinate categorie? Uso i tag solo per 1 categoria sul mio forum (una categoria annunci con tag
#searche#offer)