Je suis en train d’écrire un composant de thème et j’aimerais décorer/modifier les publications juste avant qu’elles ne soient cuites. Comment puis-je accéder au texte non cuit d’une publication (pour celle qui va être cuite/affichée) ?
J’ai lu le « Guide du développeur pour les thèmes Discourse » et j’ai découvert que je pouvais modifier le contenu cuit en utilisant les méthodes de l’API des plugins decorateCooked/decorateCookedElement et addPostTransformCallback, mais je n’ai pas trouvé comment y accéder avant qu’il ne soit cuit.
J’ai également examiné les contrôleurs et les composants, mais sans succès.
Merci pour votre réponse ! Mais je ne souhaite pas enregistrer les modifications du texte ; je veux le modifier après l’enregistrement, mais avant qu’il ne soit affiché (et avant qu’il ne soit transformé).
La raison est que je souhaite que le texte original s’affiche si l’utilisateur modifie le message. Je soupçonne que si j’utilisais composerBeforeSave, le texte modifié apparaîtrait lors de la modification (?).
Si vous souhaitez implémenter cela sous forme de thème, ce sera votre seule option. Saisie utilisateur (markdown) → traitement côté serveur en Ruby → (HTML) récupération par d’autres utilisateurs et possibilité de mise en forme. C’est la promesse qui sera exécutée avant de cliquer sur le bouton Enregistrer/Répondre. Cela ne s’affichera pas dans les brouillons, mais vous avez raison : cela apparaîtrait si vous modifiez le message. Si vous souhaitez contourner cela, vous devez annuler les modifications apportées lors de l’enregistrement lorsque le compositeur s’ouvre ou bascule vers le message que vous avez modifié. Je pourrais entrer dans plus de détails, ou vous pouvez simplement lire le code et faire vos propres expériences.
Salutations !
EDIT : Je viens d’y penser. Théoriquement, vous pourriez également effectuer le traitement côté client. Mais je pense que c’est une mauvaise idée pour des raisons de performance et autres. Ou alors, créez simplement un plugin : (Superseded) Plugin Tutorial #1 - How to manipulate the text in the composer?
Je vais me renseigner sur les plugins ! Mais je vais probablement simplement modifier le post déjà cuit (exactement ce que j’avais dit que je ne voulais pas faire ).