„Neues Thema“-Schaltfläche funktioniert nicht richtig

Wenn ich auf die Schaltfläche „Neues Thema“ klicke, wird das Formular für ein neues Thema nicht sofort angezeigt. Stattdessen wird das Formular angezeigt, nachdem ich einen der Threads im Forum ausgewählt habe. Es scheint immer noch so zu sein, als würde ein neues Thema erstellt, aber im Hintergrund. Sobald Sie ein vorhandenes Thema öffnen, erscheint das neue Thema, das Sie zu erstellen versucht haben (vollständig korrekt; d. h. für das Forum, in das Sie posten wollten, auch wenn das von Ihnen eingegebene Thema in einem anderen Forum ist).

Dies geschieht nur auf einer Website (https://discussions.scouting.org/), daher gehe ich davon aus, dass dort etwas falsch konfiguriert ist. Ich habe dieses Problem dort angesprochen, bisher ohne Erfolg.

Tritt dies im abgesicherten Modus auf?

1 „Gefällt mir“

Dies ist im abgesicherten Modus nicht reproduzierbar. Ein benutzerdefiniertes Theme / CSS verursacht dieses Problem.

4 „Gefällt mir“

Die Administratoren haben eine CSS-Anpassung hinzugefügt, die wie folgt aussieht:

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;
}

Auf den ersten Blick scheint das in Ordnung zu sein, aber dann sehe ich, dass body.closed-topic auf die Themenliste angewendet wird… was wirklich keinen Sinn ergibt.

Diese Klasse ist in Discourse nicht standardmäßig vorhanden, daher muss eine andere Anpassung gefunden werden, die sie hinzufügt…

<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>

Hier wird, wenn Sie angemeldet sind, kein Administrator, kein Moderator sind und Vertrauensstufe 4 haben… die Klasse closed-topic zum Body der Seite hinzugefügt.

Diese Klasse wird nur entfernt, wenn model.closed false ist, was bedeutet… wenn es kein geschlossenes Thema ist (oder nicht einmal ein Thema ist), wird die Klasse closed-topic angewendet.

Diese Zeile:

document.querySelector("body").classList.add("closed-topic");

sollte wahrscheinlich innerhalb von if (model) stehen, denn sonst wird sie auch angewendet, wenn kein Modell vorhanden ist (z. B. wenn Sie sich nicht in einem Thema befinden)…

Es scheint, dass die Absicht war, Benutzern der Vertrauensstufe 4 daran zu hindern, auf geschlossene Themen zu antworten, aber es wird zu breit angewendet.

5 „Gefällt mir“

Vielen Dank, das ist es, wonach ich gesucht habe.

Heheh, ich frage mich, ob ich der Grund für diese Änderung bin. Ich habe diesen Fehler entdeckt und ihn ausgiebig ausgenutzt. Ich habe nie verstanden, warum man die Leute bitten muss, ein neues Thema zu beginnen, wenn man zusätzliche Informationen zu einem alten hinzufügen möchte.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.