Wir haben ein Problem mit benutzerdefinierten Event-Tags und dem neuen WYSIWYG ProseMirror-Editor: Benutzerdefinierte Felder, die aus dem Event-Formular ausgefüllt werden, sind nicht im generierten String vorhanden. Mit dem Markdown-Editor funktioniert es wie zuvor.
Schritte zur Reproduktion:
Aktivieren Sie das Discourse Calendar-Plugin
Fügen Sie ein benutzerdefiniertes Feld in der Plugin-Konfiguration hinzu
Öffnen Sie ein Formular für einen neuen Beitrag
Wählen Sie den ProseMirror-Editor
Erstellen Sie ein Event mit einem Wert für das benutzerdefinierte Feld (Optionen > Event erstellen)
Validieren Sie das Event
Wechseln Sie zum Markdown-Editor
Was passiert
Das benutzerdefinierte Feld fehlt im [event]-Tag.
Was erwartet wird
Das benutzerdefinierte Feld sollte im [event]-Tag vorhanden sein.
Hinweise
Wenn Sie dasselbe tun, aber mit dem Markdown-Editor anstelle von ProseMirror beginnen, ist das benutzerdefinierte Feld im [event]-Tag vorhanden.
Ich habe ein wenig untersucht, was mit dem toolbarEvent passiert, wenn die neue Methode addText() validiert wird. Sie scheint in beiden Fällen das richtige Markup zu erhalten:
Ich kann kein anderes Plugin mit der gleichen Funktion finden, daher ist es schwer zu erkennen, was falsch ist.
Bei der Validierung des Formulars wird this.args.model.toolbarEvent.addText() mit dem richtigen Text aufgerufen.
Ein paar console.log(TM) führen mich zu: text-manipulation.js#addText(), wo this.convertFromMarkdown(text) aufgerufen wird. Es scheint, dass das Problem von hier kommt: Es gibt eine Art Schema, das erzwungen wird, und es enthält nicht die benutzerdefinierten Felder.
Das Problem liegt in der Editor-Erweiterung discourse-calendar/assets/javascripts/discourse/pre-initializers/rich-editor-extension.js: Die Liste der Attribute, die von convertFromMarkdown() verwendet werden, ist in der Konstante EVENT_ATTRIBUTES definiert. Es funktioniert, wenn das benutzerdefinierte Feld zur Liste hinzugefügt wird.
In dieser Datei gibt es nichts über benutzerdefinierte Felder; ich habe keine Ahnung, wie ich diese Konstante mit allen benutzerdefinierten Feldern vervollständigen soll; die Erweiterung scheint früh im Prozess registriert zu werden.
Jede Idee ist willkommen, da sie das Plugin mit dem neuen Editor, der nicht deaktiviert werden kann, unbrauchbar macht, sodass wir bei Discourse 3.4 feststecken.
Benutzerdefinierte Felder werden derzeit noch nicht für den Rich-Text-Editor unterstützt. Wir werden den besten Weg nach vorne untersuchen.
Das ist möglich – wenn Sie Administrator sind, können Sie SiteSettings.rich_editor = false über die Konsole setzen, die in solchen Fällen immer noch als letzter Ausweg zur Verfügung steht.