게시글이 '진짜'가 되기 전에 어떻게 꾸며야 할까요?

테마 컴포넌트를 작성 중인데, 게시물이 렌더링(cooked)되기 직전에 게시물을 꾸미거나 수정하고 싶습니다. 곧 렌더링/표시될 게시물의 렌더링 전(uncooked) 텍스트를 어떻게 가져올 수 있을까요?

"Discourse 테마 개발자 가이드"를 읽어봤는데, pluginAPI의 decorateCooked/decorateCookedElement와 addPostTransformCallback 메서드를 사용해 렌더링된(cooked) 게시물을 수정할 수 있다는 것을 알았지만, 렌더링 되기 전에 게시물을 가져오는 방법은 찾지 못했습니다.

컨트롤러와 컴포넌트도 살펴봤지만, 원하는 것을 찾지 못했습니다.

이 함수를 사용해야 합니다:

이 함수는 다음을 덮어쓰게 됩니다:

그래서 게시글이 저장되기 전에 내용을 수정할 수 있습니다.
안녕히 가세요. :smiley:

답장 주셔서 감사합니다! 하지만 텍스트 수정 사항을 저장하고 싶지 않습니다. 저장된 후에, 표시되기 전에(그리고 'cooked’되기 전에) 변경하고 싶습니다.

그 이유는 사용자가 게시물을 편집할 때 원본 텍스트가 표시되기를 원하기 때문입니다. composerBeforeSave를 사용하면 편집 시 변경된 텍스트가 표시될 것 같습니다(?).

이걸 테마로 구현하고 싶다면 이게 유일한 선택지가 될 겁니다. 사용자 입력(Markdown) → Ruby로 서버 사이드에서 렌더링 → (HTML) 다른 사용자들이 가져오고 꾸밀 수 있게 하는 방식이죠. 저장/답글 버튼을 누르기 전에 호출되는 프롬프트가 됩니다. 초안에는 표시되지 않지만, 말씀하신 대로 게시물을 수정하면 보일 겁니다. 이 문제를 우회하려면, 수정한 게시물로 전환될 때 컴포저가 열리면 저장 시 수행한 변경 사항을 되돌려야 합니다. 더 자세히 설명해 드릴 수도 있지만, 코드를 직접 읽어보시고 실험해 보시는 것도 좋습니다.
감사합니다! :smiley:
수정: 방금 이런 생각도 들었습니다. 이론적으로는 클라이언트 사이드에서 다시 렌더링하는 것도 가능합니다. 하지만 성능 등 여러 이유로 나쁜 아이디어라고 생각합니다. 아니면 그냥 플러그인을 만들어 보세요: (Superseded) Plugin Tutorial #1 - How to manipulate the text in the composer?

플러그인에 대해 공부해볼게요! 하지만 아마도 최종 게시물을 수정하는 쪽으로 갈 것 같아요 (정말 하고 싶지 않다고 말했던 바로 그거 :smile:).

다시 한번 감사합니다!