Hallo, ich stelle fest, dass Benutzer auf meinem Forum den Rich-Text-Editor erhalten, wenn sie ein neues Thema erstellen, selbst wenn ich „default_composition_mode“ auf Markdown-Modus gesetzt habe. Die Forenversion ist „Discourse v3.5.0.beta9-dev — Commits · discourse/discourse · GitHub — Ember v5.12.0“.
Jedes Mal, wenn ich die Änderung anwende, werde ich gefragt: „Möchten Sie diese Änderung historisch anwenden? Dies ändert die Einstellungen für 15 vorhandene Benutzer.“ und ich klicke auf Ja. Selbst dann wird den Benutzern der Rich-Text-Editor angezeigt. Ist das ein bekannter Fehler?
Bearbeiten - Hinweis: Ich habe dieses Problem mit Benutzern, die die Umschaltoption noch nie verwendet haben, um ihren Editor-Modus zwischen Rich-Text und Markdown zu wechseln. Sie haben sich heute gerade erst angemeldet, nachdem ich den Standard-Kompositionsmodus bereits am Wochenende direkt nach dem Upgrade festgelegt hatte. Ich hatte die Umschaltoption auch über das Theme-CSS ausgeblendet.
Als Nachbereitung dazu haben wir ein Plugin, das “wrap_open” BBCode-Token verwendet, welche vom Rich-Text-Editor noch nicht unterstützt werden. Daher müssen wir sicherstellen, dass wir vorerst im Markdown-Modus bleiben.
Ich habe Claude Sonnet verwendet, um den folgenden Code zu generieren, um dies sicherzustellen. Ich freue mich über jedes Feedback, wie ich ihn verbessern kann (insbesondere wenn er Fehler enthält ). Ich teile ihn auch, falls er anderen Forenadministratoren hilft. Der Code gehört zu den Theme-Einstellungen > JS (/admin/customize/themes/2/common/js/edit):
import {
apiInitializer
} from "discourse/lib/api";
export default apiInitializer((api) => {
// Erzwinge den Wechsel des Editors des Benutzers in den Markdown-Modus
function switchToMarkdownMode() {
const currentUser = api.getCurrentUser();
// Der Benutzer sollte angemeldet sein, wenn der Composer geöffnet wurde
if (!currentUser) {
console.error('Kein Benutzer gefunden');
return;
}
// Diese Option wurde hier gefunden
// https://github.com/discourse/discourse/blob/f0fc5646dc9bd29b0e814faea490e34800e9b322/app/assets/javascripts/discourse/app/models/user.js#L262C1-L266C4
const currentMode = currentUser.get('user_option.composition_mode');
if (currentMode !== 0) {
// Nur wechseln, wenn nicht bereits im Markdown-Modus
// Beispielverwendung: https://github.com/discourse/discourse/blob/87476ce2c18fb8f856dda7ff03804ed5fbb0ff38/app/assets/javascripts/discourse/app/services/user-tips.js#L127
currentUser.set('user_option.composition_mode', 0);
// Speichere die Benutzereinstellung auf dem Server
currentUser.save(['composition_mode']).then(() => {
console.log('Erfolgreich in den Markdown-Modus gewechselt');
}).catch((error) => {
console.error('Fehler beim Aktualisieren des Kompositionsmodus:', error);
});
// Schalte die aktuelle Composer-Benutzeroberfläche sofort um
setTimeout(() => {
const toggleButton = document.querySelector('.composer-toggle-switch[data-rich-editor]');
if (toggleButton) {
const isRichTextActive = toggleButton.getAttribute('aria-checked') === 'true';
if (isRichTextActive) {
toggleButton.click();
console.log('Aktuellen Composer in den Markdown-Modus umgeschaltet');
}
}
}, 100); // Kleine Verzögerung, um sicherzustellen, dass der Composer vollständig gerendert ist
} else {
console.log('Bereits im Markdown-Modus, keine Änderung erforderlich');
}
}
api.onAppEvent('composer:opened', () => {
switchToMarkdownMode();
});
});
Ich werde versuchen, dies zu reproduzieren und morgen an einer Lösung zu arbeiten, bin mir aber nicht sicher, warum dies geschieht, da der Administrator standardmäßig alle Benutzeroptionswerte festlegt (wenn Sie die vorhandene Benutzeroption in der Eingabeaufforderung verwenden) und dies alles ist, was wir zur Steuerung des Schalters verwenden.
Vielen Dank für die schnellen Antworten! Ich bin mir nicht sicher, wie ich ein minimales Reproduktionsbeispiel erstellen kann. Ich teile gerne weitere Informationen aus meinem Forum, wenn Sie mir die Schritte dafür mitteilen können.
Ich habe versucht, dies heute zu reproduzieren, ohne Erfolg. Ich habe jedoch eine Frage: Aktualisieren die Benutzer den Browser, nachdem Sie dies geändert haben? Denn wenn nicht, haben wir immer noch ihre alten Benutzereinstellungen im Browser in Ember, sodass die neue Einstellung noch nicht verwendet wird.
Damit dies wie erwartet funktioniert, habe ich Folgendes getan:
Überprüft, ob der Editor für Benutzer A auf den Rich-Modus umgeschaltet wurde
Als Administrator habe ich die Standardeinstellung auf Markdown-Modus geändert und für alle Benutzer angewendet
Als Benutzer A habe ich die Seite neu geladen und den Editor erneut geöffnet und gesehen, dass er im Markdown-Modus war
Wenn ich in Schritt 3 nicht neu geladen hätte, würde ich immer noch den Rich-Modus sehen.
Danke für die Nachverfolgung, Martin. Ich hatte den Modus bereits am Sonntag auf Markdown eingestellt. Ich habe mich dann am Montag mit einem Testkonto in einem separaten Browserprofil angemeldet, das stattdessen den Rich Editor erhalten hat.
Wenn das hilft: Jedes Mal, wenn ich “default_composition_mode” auf “Markdown” setze, erhalte ich die Warnung: “Möchten Sie diese Änderung historisch anwenden? Dies ändert die Einstellungen für 61 bestehende Benutzer.” Ich verstehe, dass ich dies beim ersten Mal erhalten sollte, aber es scheint ein Fehler zu sein, dass es mich jedes Mal für eine bestimmte Anzahl von Benutzern auffordert.
Für weitere Tests habe ich mich gerade auch in ein weiteres Testkonto eingeloggt, das sich seit 10 Monaten nicht angemeldet hatte. Es wurde standardmäßig ebenfalls auf Rich Text-Modus eingestellt.
Das ist in der Tat sehr seltsam… wie viele Benutzer gibt es insgesamt auf Ihrer Website? Ich frage mich, ob es bei dem Schritt hängen bleibt, bei dem alle Benutzer von der Änderung der Website-Einstellung aktualisiert werden sollen, da mir aufgefallen ist, dass in der Benutzeroberfläche nichts darauf hinweist, dass die Arbeit noch stattfindet.
Das hängt davon ab, wie viele Benutzer es in der Zwischenzeit mit dem Schalter geändert haben. Es scheint, dass es bei mir im lokalen Test ordnungsgemäß funktioniert.
Laut unserer /about-Seite haben wir 20.000 Mitglieder.
Ich werde klären, dass die Schritte wie folgt sind:
Besuchen Sie /admin/site_settings/category/all_results?filter=default_composition_mode
Setzen Sie default_composition_mode auf Markdown-Modus. Auch wenn es bereits im Markdown-Modus ist, können Sie das Dropdown-Menü öffnen und die Markdown-Option auswählen.
Erhalten Sie die Warnung für XX Anzahl von Benutzern. Akzeptieren Sie sie.
Warten Sie zehn Minuten und laden Sie die Seite dann neu.
Setzen Sie default_composition_mode auf Markdown-Modus (wie in Schritt 2).
Erhalten Sie erneut die Warnung für die gleiche Anzahl von Benutzern.
Wie Sie erwähnt haben, weiß ich auch nicht, wie lange es dauert (über 10 Minuten?), um die historischen Benutzereinstellungen zu aktualisieren. Außerdem glaube ich nicht, dass all diese Benutzer ihre Einstellungen in dieser kurzen Zeit wieder geändert hätten. Mir könnte hier etwas entgehen.
Okay ja, das klingt definitiv nicht so, als würden viele Leute in dieser Zeit umschalten Können Sie eine Bildschirmaufnahme machen, um zu zeigen, was passiert?
Ich würde Ihnen auch raten, sich den Netzwerk-Tab in den Chrome-Entwicklertools anzusehen. Dort sollten nach dem Speichern 2 Anfragen wie diese angezeigt werden (die erste ist diejenige, die die Aufforderung von XX Benutzern anzeigt, die zweite ist diejenige, die die Einstellung tatsächlich speichert und die Nachverfüllung durchführt):
Die zweite muss einen 200-Status haben. Wenn dies nicht der Fall ist und Sie weg navigieren, wird sie für vorhandene Benutzer nicht nachgefüllt.
Eine Videoaufnahme finden Sie unter diesem Drive-Link. Ich habe die Einstellung vorgenommen, den Warnhinweis akzeptiert, ein wenig gewartet, die Seite neu geladen und dann die Einstellung erneut vorgenommen. Dann erschien erneut der Warnhinweis.
Das sollte nicht passieren… hier gibt es einen Fehler, bei dem der Wert für das Listenelement (0) als anders betrachtet wird als der Einstellungswert (’0’). Ich glaube also, dass das Speichern hier nichts bewirkt. Ich kann diesen Fehler beheben, aber können Sie Folgendes tun:
Ändern Sie die Einstellung auf „Rich Text“.
Speichern Sie, aber wählen Sie „Nein, nur zukünftige Änderungen übernehmen“.
Ändern Sie zurück zu „Markdown“.
Speichern Sie und wählen Sie „Ja“, um es rückwirkend anzuwenden.
Und sehen Sie, ob das die Probleme behebt, die Sie haben.
Danke für die Information. Ich habe mich mit einem alten Testkonto angemeldet, und es scheint korrekt funktioniert zu haben: Es hat den Markdown-Modus beim ersten Ausführen erhalten
Gibt es eine Möglichkeit, zu überprüfen, ob alle Benutzer im Markdown-Modus sind, zum Beispiel durch die Verwendung des Daten-Explorers?
@martin Ich habe dieses Thema vom Support zum Fehler verschoben und werde es schließen, vorausgesetzt, Sie haben den Fehler behoben. Wenn nicht, können Sie es wieder öffnen?