[Admin-Hinweis] Das Theme „\_Base“ enthält Code, der aktualisiert werden muss. (id:discourse.script-tag-discourse-plugin) (mehr erfahren)
Bei einem meiner Foren habe ich diese Meldung einfach durch Verschieben meines JS-Skripts in den neuen JS-Anpassungs-Tab beseitigt.
Bei meinem anderen Forum funktioniert das nicht so einfach.
Es handelt sich um ein altes Override, das das Tag-Feld des Komponisten nur in Kategorien anzeigt, die Tags akzeptieren:
<script type="text/discourse-plugin" version="1.4.0">
// Zeige den Tag-Auswähler im Komponisten nur, wenn nötig
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;
}
// Überprüfe die Existenz des Tag-Auswählers
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) {
// benutzerdefinierter Code zum Umschalten des Tag-Auswählers
toggleTagChooser("hide");
if(category != null) {
if (
category.allow_global_tags == true ||
category.allowed_tag_groups.length > 0 ||
category.allowed_tags.length > 0
) {
toggleTagChooser("show");
}
}
// Ende des benutzerdefinierten Codes
const tagsArray = tags || [];
if (this.site.can_tag_topics && !this.currentUser.staff && category) {
// category.minimumRequiredTags beinhaltet sowohl minimum_required_tags als auch 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>
Dieses Skript basierte stark auf einer ähnlichen (und alten, 2019 oder älter) Modifikation, die auf Meta gepostet wurde, aber ich kann den ursprünglichen Beitrag nicht mehr finden.
Jedenfalls gibt es zwei Fragen in einer:
-
Wie verschiebt man das richtig in den JS-Tab? Ist das möglich oder sollte ich eine Theme-Komponente erstellen?
-
Gibt es eine elegantere Möglichkeit, den Tag-Selektor des Komponisten nur in bestimmten Kategorien auszublenden/anzuzeigen? Ich verwende Tags nur für 1 Kategorie in meinem Forum (eine Anzeigen-Kategorie mit den Tags
#searchund#offer)