안녕하세요 여러분,
다양한 이유로 현재 사용 중인 포럼 소프트웨어의 대안으로 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을 사용할 수 있게 한다는 생각만 해도 소름이 돋습니다.
사용자들이 게시글 서식을 자유롭게 꾸밀 수 있도록 하는 동시에, 모든 것이 안전하게 유지되도록 보장하고 싶습니다.
Falco
(Falco)
4월 23, 2020, 3:53오전
2
새로운 소프트웨어를 검토하고 계신 이유를 이해할 수 있습니다. 제 환경에서는 Making sure you're not a bot! 로딩에 2분이 걸리거든요
신문, 챌린지, 사이드와 같은 모든 커스텀 스타일은 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]
아마도 플러그인 형식과 같은 것을 사용하는 것이 더 나을 수도 있습니다. 그렇게 해야 대량의 콘텐츠가 포맷을 잃지 않을 테니까요. 또한 여러 개의 선택적 인자도 필요합니다.
pfaffman
(Jay Pfaffman)
4월 23, 2020, 7:34오후
4
Discourse BBCode 를 참고해 보시는 게 좋을 것 같습니다. 다른 코드에 대한 지원을 추가하는 것은 비교적 쉬울 것 같지만, 솔직히 말하면 어떻게 해야 할지 파악하는 데 어려움을 겪었습니다…
그 가이드를 전부 하나의 게시물에 올리고, 더 추가하고 싶을 때 위키로 전환하지는 못했나요? 여러 게시물에 나누어 올려두면 읽기와 이해하기가 훨씬 어렵고, 불필요한 공간을 많이 차지한다고 생각합니다.
riking
(Kane York)
4월 23, 2020, 8:58오후
8
또한 Discourse는 특수 래퍼 내부가 아닌 게시물 내용의 어디에서나 제한된 HTML을 기본적으로 지원합니다. 예를 들어, 이 게시물은 <div align=justify> 안에 감싸져 있습니다. 불행히도 이는 인라인 서식을 일부 혼란스럽게 하여, 해당 문단 내의 모든 것 에 대해 HTML을 강제합니다.
https://meta.discourse.org/raw/148941/8
그 bbcode 가이드는 다른 포럼 소프트웨어에 있는 것이며, 위키 게시물이 없는 소프트웨어입니다.
riking:
또한 Discourse는 기본적으로 특수 래퍼 내부뿐만 아니라 게시물 내용 어디에서나 제한된 HTML을 지원합니다. 예를 들어, 이 게시물은 <div align=justify> 안에 감싸져 있습니다. 불행히도 일부 인라인 포맷팅을 망가뜨려서, 단락 내의 모든 것에 대해 HTML을 사용하도록 강요합니다.
https://meta.discourse.org/raw/148941/8
훌륭하네요. 다만, 모든 사용자에게 더 많은 HTML을 허용하고 우리가 안전성을 확보해야 하는 방법을 찾는 것보다는, 그 하나의 플러그인을 확장하여 bbcode로 추가하는 방식을 유지하는 편이 나을 것 같습니다.
neounix
(Dark Matter)
4월 24, 2020, 1:58오전
10
저희는 공식 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"을 시작점으로 삼고 거기서부터 수정해 나가기를 제안합니다.
아, 미안해요. 이거야말로 마이그레이션을 해야 할 이유가 더 확실해지는군요!