사용자 정의 BBCode 지원에 대한 최선의 방법은?

안녕하세요 여러분,

다양한 이유로 현재 사용 중인 포럼 소프트웨어의 대안으로 Discourse를 검토하고 있습니다. 그중에서도 가장 큰 과제는 저희 사이트에서 지원하는 수많은 BBCode를 어떻게 처리할지 결정하는 것입니다. 저희가 지원하는 BBCode는 여기: Making sure you're not a bot! 와 여기: Making sure you're not a bot! 에서 확인하실 수 있습니다.

vBulletin BBCode 플러그인을 참고해 보니, 이미 지원하고 있는 기능에 대한 지원을 추가하는 것이 그렇게 어렵지 않을 것 같습니다. 가이드에서 볼 수 있듯이 저희는 단순한 것부터, 사용자가 일정 범위 내에서 HTML을 안전하게 사용할 수 있도록 해주는 커스텀 div BBCode까지 다양한 커스텀 BBCode를 보유하고 있습니다. 이 div BBCode는 게시글에 대해 커스텀 id 선택자를 생성하며, 사용자가 게시글 컨테이너 외부의 요소를 대상으로 할 수 없도록 안전성을 확보하고 있습니다.

이러한 기능 덕분에 지난 몇 년간 사용자들은 정말 멋진 게시글들을 만들어 왔습니다. 여기 둘러보면서 발견한 간단한 예시 하나를 첨부합니다:

제 질문은, 이 기능을 BBCode 플러그인으로 만들 것인지, 아니면 저희가 BBCode에서처럼 HTML 선택자를 게시글 내에서 안전하게 격리할 수 있는 안전한 방법을 모색하여 이를 제공해야 하는지입니다.

솔직히 사용자가 HTML을 사용할 수 있게 한다는 생각만 해도 소름이 돋습니다.

사용자들이 게시글 서식을 자유롭게 꾸밀 수 있도록 하는 동시에, 모든 것이 안전하게 유지되도록 보장하고 싶습니다.

새로운 소프트웨어를 검토하고 계신 이유를 이해할 수 있습니다. 제 환경에서는 Making sure you're not a bot! 로딩에 2분이 걸리거든요 :scream:

image

신문, 챌린지, 사이드와 같은 모든 커스텀 스타일은 Generic bbcode wrapper for theme components 와 CSS를 통해 구현할 수 있다고 생각합니다.

그리고 코드 하이라이트, 위/아래 첨자, 중앙 정렬 블록, 테이블, 인용구, 인라인 스포일러, 구분선, 헤더, 미디어 임베드 등은 Discourse에 이미 내장되어 있습니다.

아니, 정말 끔찍하네요. 저희는 Cloudflare와 꽤 성능 좋은 AMD Ryzen 서버를 사용 중입니다. 로그인하지 않은 상태에서 모든 에셋을 불러오는 데 제 환경에서는 약 2초 정도 걸립니다.

반드시 확인해봐야겠네요. 즉, 테마 컴포넌트에 HTML/CSS를 자유롭게 추가한 후, 커스텀 bbcode 태그를 통해 이를 호출할 수 있다는 뜻이죠?
[blah]content[/blah]?

그렇다면 이 경우, 저희가 가진 것 중 일부를 다음과 같이 재현할 수 있을 것 같습니다:

[wrap=bg bg=blue] 또는 [wrap=random-name newspaper=1]

아마도 플러그인 형식과 같은 것을 사용하는 것이 더 나을 수도 있습니다. 그렇게 해야 대량의 콘텐츠가 포맷을 잃지 않을 테니까요. 또한 여러 개의 선택적 인자도 필요합니다.

Discourse BBCode 를 참고해 보시는 게 좋을 것 같습니다. 다른 코드에 대한 지원을 추가하는 것은 비교적 쉬울 것 같지만, 솔직히 말하면 어떻게 해야 할지 파악하는 데 어려움을 겪었습니다…

그 가이드를 전부 하나의 게시물에 올리고, 더 추가하고 싶을 때 위키로 전환하지는 못했나요? 여러 게시물에 나누어 올려두면 읽기와 이해하기가 훨씬 어렵고, 불필요한 공간을 많이 차지한다고 생각합니다.

정말 멋진데요, 너무 좋아해요!

또한 Discourse는 특수 래퍼 내부가 아닌 게시물 내용의 어디에서나 제한된 HTML을 기본적으로 지원합니다. 예를 들어, 이 게시물은 <div align=justify> 안에 감싸져 있습니다. 불행히도 이는 인라인 서식을 일부 혼란스럽게 하여, 해당 문단 내의 모든 것에 대해 HTML을 강제합니다.

https://meta.discourse.org/raw/148941/8

그 bbcode 가이드는 다른 포럼 소프트웨어에 있는 것이며, 위키 게시물이 없는 소프트웨어입니다.

훌륭하네요. 다만, 모든 사용자에게 더 많은 HTML을 허용하고 우리가 안전성을 확보해야 하는 방법을 찾는 것보다는, 그 하나의 플러그인을 확장하여 bbcode로 추가하는 방식을 유지하는 편이 나을 것 같습니다.

저희는 공식 Discourse BBCode 플러그인을 수정하는 것(저희의 낮은 Discourse 플러그인 개발 기술 때문에)이 이 플러그인보다 더 어렵다는 것을 발견했습니다:

Awesome BBCodes Plugin

Awesome BBCodes Plugin: multi-paragraph, nestable, with auto-complete

"Awesome BBCodes Plugin"은 포크, 클론 및 해킹/수정이 비교적 쉬웠습니다. “Discourse BBCode” 플러그인보다 훨씬 쉬웠습니다.

커스텀 BBCODE를 만들려는 모든 분( @TheDarkWizard )에게 "Awesome BBCodes Plugin"을 시작점으로 삼고 거기서부터 수정해 나가기를 제안합니다.

아, 미안해요. 이거야말로 마이그레이션을 해야 할 이유가 더 확실해지는군요! :slight_smile:

괜찮습니다 :slight_smile:

한번 살펴보겠습니다. 감사합니다!