Nous avons un problème avec les balises personnalisées d’événements et le nouvel éditeur ProseMirror WYSIWYG : les champs personnalisés remplis à partir du formulaire d’événement ne sont pas présents dans la chaîne générée. Cela fonctionne toujours comme avant avec l’éditeur Markdown.
Étapes pour reproduire :
Activer le plugin Discourse Calendar
Ajouter un champ personnalisé dans la configuration du plugin
Ouvrir un formulaire pour un nouveau message
Sélectionner l’éditeur ProseMirror
Créer un événement avec une valeur pour le champ personnalisé (Options > Créer un événement)
Valider l’événement
Basculer vers l’éditeur Markdown
Ce qui se passe
Le champ personnalisé est absent de la balise [event].
Ce qui est attendu
Le champ personnalisé doit être présent dans la balise [event].
Notes
Lorsque l’on fait la même chose mais en commençant par l’éditeur Markdown au lieu de ProseMirror, le champ personnalisé est présent dans la balise [event].
J’ai un peu enquêté sur ce qui se passait avec toolbarEvent lors de la validation du nouvel événement : la méthode addText() semble recevoir dans les deux cas le bon balisage :
Je ne trouve pas d’autre plugin avec la même fonctionnalité, il est donc difficile de trouver ce qui ne va pas.
Lors de la validation du formulaire, il appelle this.args.model.toolbarEvent.addText() avec le bon texte.
Quelques console.log(TM) me mènent à : text-manipulation.js#addText() où this.convertFromMarkdown(text) est appelé. Il semble que le problème vienne d’ici : il y a une sorte de schéma appliqué, et il ne contient pas les champs personnalisés.
Le problème vient de l’extension d’éditeur discourse-calendar/assets/javascripts/discourse/pre-initializers/rich-editor-extension.js : la liste des attributs utilisés par convertFromMarkdown() est définie dans la constante EVENT_ATTRIBUTES. Cela fonctionne lorsque le champ personnalisé est ajouté à la liste.
Il n’y a rien concernant les champs personnalisés dans ce fichier ; je n’ai aucune idée de comment compléter cette constante avec tous les champs personnalisés ; l’extension semble être enregistrée tôt dans le processus.
Toute idée est la bienvenue, cela rend le plugin inutilisable avec le nouvel éditeur qui ne peut pas être désactivé, nous sommes donc bloqués avec Discourse 3.4.
Les champs personnalisés ne sont effectivement pas pris en charge dans l’éditeur enrichi pour l’instant. Nous allons étudier la meilleure marche à suivre.
C’est possible – si vous êtes administrateur, vous pouvez définir SiteSettings.rich_editor = false via la console, qui est toujours disponible en dernier recours dans des cas comme celui-ci.