Sto scrivendo un componente del tema e vorrei decorare/modificare i post proprio prima che vengano elaborati. Come posso accedere al testo del post non elaborato (per il post che sta per essere elaborato/mostrato)?
Ho letto la “Guida per gli sviluppatori ai temi di Discourse” e ho scoperto che è possibile modificare il post elaborato utilizzando i metodi pluginAPI decorateCooked/decorateCookedElement e addPostTransformCallback, ma non ho trovato come ottenerlo prima dell’elaborazione.
Ho anche esaminato i controller e i componenti, ma senza successo.
Grazie per la tua risposta! Ma non voglio salvare le modifiche al testo; voglio modificarlo dopo che è stato salvato ma prima che venga visualizzato (e prima che venga elaborato).
Il motivo è che voglio che il testo originale appaia se l’utente modifica il post. Sospetto che se usassi composerBeforeSave, il testo modificato apparirebbe durante la modifica (?).
Se vuoi implementare questo come tema, questa sarà la tua unica opzione. input utente (markdown) → elaborazione lato server in Ruby → (HTML) recupero da parte di altri utenti e possibile decorazione. Questo è il processo che verrà eseguito prima di premere il pulsante Salva/Rispondi. Non apparirà nelle bozze, ma hai ragione: se modifichi il post, verrà mostrato. Se vuoi evitare questo comportamento, devi annullare le modifiche apportate al salvataggio quando il compositore si apre o passa al post che hai modificato. Potrei fornire ulteriori dettagli, oppure puoi leggere il codice ed effettuare i tuoi esperimenti.
Saluti!
AGGIORNAMENTO: Mi è appena venuto in mente. Teoricamente potresti anche eseguire l’elaborazione lato client. Tuttavia, penso che sia una cattiva idea per motivi di prestazioni e altri fattori. In alternativa, potresti creare un plugin: (Superseded) Plugin Tutorial #1 - How to manipulate the text in the composer?