Les administrateurs ont ajouté une personnalisation CSS qui ressemble à ceci :
body:not([class*="category-council-"]):not(.staff).closed-topic .reply,
body:not([class*="category-council-"]):not(.staff).closed-topic #topic-footer-buttons .create,
body:not([class*="category-council-"]):not(.staff).closed-topic .timeline-container .create,
body:not([class*="category-council-"]):not(.staff).closed-topic #reply-control {
display: none !important;
}
Cela semble correct à première vue, mais ensuite je vois que body.closed-topic est appliqué à la liste des sujets… ce qui n’a vraiment pas de sens.
Cette classe n’est pas présente par défaut dans Discourse, il faut donc trouver une autre personnalisation qui l’ajoute…
<script type="text/discourse-plugin" version="0.8">
const container = Discourse.__container__;
const controller = container.lookup("controller:topic");
const currentUser = api.getCurrentUser();
api.onPageChange(() => {
if (!currentUser || currentUser.admin || currentUser.moderator || currentUser.trust_level != 4 ) {
return;
} else {
let model = controller.get("model");
document.querySelector("body").classList.add("closed-topic");
if (model) {
if (!model.closed) {
document.querySelector("body").classList.remove("closed-topic");
}
}
}
});
</script>
Donc ici, si vous êtes connecté, pas administrateur, pas modérateur, et que vous avez un niveau de confiance 4… alors la classe closed-topic est ajoutée au corps de la page.
Cette classe n’est supprimée que si model.closed est faux, ce qui signifie… si ce n’est pas un sujet fermé (ou même si ce n’est pas un sujet du tout), la classe closed-topic sera appliquée.
Cette ligne :
document.querySelector("body").classList.add("closed-topic");
devrait probablement être à l’intérieur de if (model) car sinon elle est appliquée même lorsqu’il n’y a pas de modèle présent (par exemple, lorsque vous n’êtes pas dans un sujet)…
Il semble que l’intention était d’empêcher les utilisateurs de niveau de confiance 4 de répondre aux sujets fermés, mais c’est appliqué de manière trop large.