Как оформить пост до его публикации?

Я создаю компонент темы и хочу изменить или украсить сообщения непосредственно перед их обработкой (cooking). Как можно получить доступ к необработанному тексту сообщения (для сообщения, которое вот-вот будет обработано и показано)?

Я прочитал «Руководство разработчика по темам Discourse» и узнал, что можно модифицировать обработанный текст с помощью методов pluginAPI: decorateCooked и decorateCookedElement, а также addPostTransformCallback, но не нашёл способа получить текст до его обработки.

Также я изучил контроллеры и компоненты, но безрезультатно.

Вам нужно использовать эту функцию:

которая заменит следующее:

так что вы сможете изменить пост до его сохранения.
Всё, пока. :smiley:

Спасибо за ваш ответ! Но я не хочу сохранять изменения текста, я хочу изменить его после сохранения, но перед отображением (и перед обработкой).

Причина в том, что я хочу, чтобы оригинальный текст появлялся, если пользователь редактирует пост. Я подозреваю, что если бы я использовал composerBeforeSave, то изменённый текст появлялся бы при редактировании (?).

Если вы хотите реализовать это как тему, это будет ваш единственный вариант. Ввод пользователя (markdown) → обработка на стороне сервера на Ruby → (HTML) получение другими пользователями и возможное оформление. Это обещание будет вызвано перед нажатием кнопки «Сохранить» или «Ответить». Это не будет отображаться в черновиках, но вы правы: это появится, если вы отредактируете сообщение. Если вы хотите обойти это, вам нужно отменить изменения, которые вы вносите при сохранении, когда редактор открывается или переключается на отредактированное сообщение. Я мог бы рассказать подробнее, но вы также можете просто изучить код и провести собственные эксперименты.
Удачи! :smiley:
РЕДАКТИРОВАНИЕ: Я только что подумал об этом. Теоретически вы также могли бы выполнять обработку на стороне клиента. Но я считаю, что это плохая идея из-за производительности и других причин. Или просто создайте плагин: (Superseded) Plugin Tutorial #1 - How to manipulate the text in the composer?

Изучу информацию о плагинах! Но, скорее всего, я просто изменю готовый пост (в точности то, что я говорил, что не хочу делать :smile:).

Спасибо ещё раз!