Abbiamo un problema con i tag personalizzati degli eventi e il nuovo editor WYSIWYG ProseMirror: i campi personalizzati compilati dal modulo dell’evento non sono presenti nella stringa generata. Funziona ancora come prima con l’editor markdown.
Passaggi per riprodurre:
Abilita il plugin Discourse Calendar
Aggiungi un campo personalizzato nella configurazione del plugin
Apri un modulo per un nuovo Post
Seleziona l’editor ProseMirror
Crea un evento con un valore per il campo personalizzato (Opzioni > Crea Evento)
Valida l’evento
Passa all’editor Markdown
Cosa sta succedendo
Il campo personalizzato è assente dal tag [event].
Cosa è previsto
Il campo personalizzato dovrebbe essere presente nel tag [event].
Note
Quando si esegue la stessa operazione ma iniziando con l’editor Markdown invece di ProseMirror, il campo personalizzato è presente nel tag [event].
Ho indagato un po’ su cosa stesse succedendo con toolbarEvent durante la convalida del nuovo evento: il metodo addText() sembra ricevere in entrambi i casi il markup corretto:
Non riesco a trovare un altro plugin con la stessa funzionalità, quindi è difficile capire cosa c’è che non va.
Durante la convalida del modulo, chiama this.args.model.toolbarEvent.addText() con il testo corretto.
Alcuni console.log™ mi portano a: text-manipulation.js#addText() dove viene chiamata this.convertFromMarkdown(text). Sembra che il problema provenga da qui: c’è una sorta di schema imposto, e non contiene i campi personalizzati.
Il problema proviene dall’estensione dell’editor discourse-calendar/assets/javascripts/discourse/pre-initializers/rich-editor-extension.js: l’elenco degli attributi utilizzati da convertFromMarkdown() è definito nella costante EVENT_ATTRIBUTES. Funziona quando si aggiunge il campo personalizzato all’elenco.
Non c’è nulla riguardo ai campi personalizzati in questo file; non ho idea di come completare questa costante con tutti i campi personalizzati; l’estensione sembra essere registrata presto nel processo.
Qualsiasi idea è benvenuta, rende il plugin inutilizzabile con il nuovo editor che non può essere disabilitato, quindi siamo bloccati con Discourse 3.4.
I campi personalizzati non sono attualmente supportati nell’editor avanzato per ora. Indagheremo sul miglior percorso da seguire.
Può esserlo: se sei un amministratore, puoi impostare SiteSettings.rich_editor = false tramite la console, che è ancora disponibile come ultima risorsa in casi come questo.