| 요약 | 승인된 사용자가 캘린더 이벤트/토픽(Discourse Events 을 통해 생성된 것)을 새로운 시간대로 복제할 수 있도록 합니다. 단일 토픽 또는 태그가 지정된 전체 시리즈(예: grand-prix 태그가 지정된 모든 토픽)에 적용되며, 커밋하기 전에 제안된 날짜를 편집할 수 있는 검토 단계를 제공합니다. |
|
| 리포지토리 링크 | GitHub - louking/discourse-event-duplicator: discourse plugin to duplicate events · GitHub | |
| 설치 가이드 | Discourse에 플러그인 설치 방법 |
요약
이 플러그인은 매년 날짜가 조금씩 이동하지만 대체로 동일한 이벤트가 반복되는 러닝 클럽 커뮤니티를 위해 제작되었습니다. 매 시즌마다 수동으로 각 이벤트의 토픽을 다시 만드는 것은 [event ...] 블록을 복제하고, 제목을 수정하고, 이미 다시 만든 것인지 확인하는 것을 의미했으며, 이는 지루하고 오류가 발생하기 쉬웠습니다. Event Duplicator는 이를 자동화합니다: 소스 이벤트 또는 태그가 지정된 전체 시리즈를 선택하고, 제안된 새 날짜를 받아 검토하거나 편집한 후 확인하면 됩니다.
사용자 지향 전체 가이드라인(누가 사용할 수 있는지, 시리즈 복제와 단일 토픽 복제의 차이, 검토 단계 작동 방식)은 docs/USAGE.md를 참고하세요.
기능
- 시리즈 복제: 카테고리와 하나 이상의 태그(예:
grand-prix,signature-race; 매치는 OR로 처리되며 중복이 제거되므로 여러 매칭 태그가 있는 토픽은 한 번만 표시됨)를 선택하고, 원본 날짜 범위로 제한할 수 있으며, 확인하기 전에 제안된 다음 발생 날짜를 검토합니다. - 단일 이벤트 복제: 해당 토픽의 관리자 메뉴(렌치 아이콘)에서 한 번에 하나의 토픽에 대해 동일한 검토 및 확인 흐름을 제공합니다.
- 편집 가능한 검토 단계: 각 행은 원본 시작 날짜 옆에 편집할 수 있는 제안된 새 날짜(날 단위)와 편집 가능한 제목을 표시합니다. 종료 날짜는 항상 소스 이벤트 자체의 지속 시간에서 자동으로 유도되므로, 편집된 시작 날짜와 동기화가 어긋나지 않습니다.
- 두 가지 플러가블한 날짜 이동 전략: 실행별로 선택 가능하며 기본값을 구성할 수 있습니다:
- 동일한 캘린더 날짜: 구성된 월 수만큼 앞으로 이동합니다.
- 월의 N번째 요일: 이동이 다른 월에 해당하더라도 예를 들어 "그 달의 3번째 토요일"과 같은 패턴을 유지합니다.
- 구성 가능한 이동량: 월 단위로(기본값은 12개월, 즉 1년) 임의의 월 수만큼 앞으로 이동할 수 있으며, 연 단위만 가능합니다. 월별, 분기별 또는 기타 반복 주기에도 유용합니다. 실행별로 재정의할 수 있으며, 새로운 설정(아래 참조)을 통해 사이트 전체 기본값을 지정할 수 있습니다.
- “날짜 미정” 플래깅: 실제 날짜가 아직 확정되지 않은 이벤트의 경우 행에 플래그를 지정합니다. 구성 가능한 주석(기본값
(date TBD))이 토픽 제목과 이벤트 이름 모두에 추가됩니다. - 복제 추적: 동일한 이벤트를 두 번 복제하는 것을 방지합니다(토픽에 여러 시리즈 태그가 있을 수 있으므로 관련됨). 이미 복제된 토픽은 검토에서 기본적으로 플래그가 지정되고 선택 해제되며, 강제로 실행하려면 명시적으로 다시 선택하는 오버라이드가 있습니다. 복제된 토픽을 삭제하면 자동으로 소스가 재복제 가능 상태가 되며, 삭제 취소 시 다시 잠금 처리됩니다.
- 복제 후 피드백: 성공적으로 복제된 행은 검토 테이블에서 바로 새 토픽으로의 링크로 변환됩니다. 진정한 실패는 전체 배치 중단을 대신하여 행별로 보고됩니다.
요구 사항
- discourse-calendar가 설치되고 활성화되어 있어야 합니다. 이 플러그인은 별도의 날짜 저장소를 발명하는 대신 discourse-calendar 자체의
[event ...]게시물 마크업과DiscoursePostEvent::Event모델을 통해 이벤트를 복제합니다. - Discourse 2026.7.0에서 테스트되었습니다. 이전 릴리스에서는 검증되지 않았습니다.
구성
모든 설정은 관리자 → 설정 → 플러그인 아래에 있으며, event_duplicator를 검색하세요:
| 설정 | 기본값 | 설명 |
|---|---|---|
event_duplicator_enabled |
off | 플러그인을 활성화합니다. |
event_duplicator_allowed_groups |
staff | 이벤트 복제가 허용되는 그룹(일반 카테고리별 토픽 생성 권한 외에). 참고: 빈 목록은 아무도 허용되지 않음을 의미하며, 모두 허용을 의미하지 않습니다. 이 기능을 완전히 개방하려면 “everyone” 그룹을 추가하세요. |
event_duplicator_default_date_strategy |
Same calendar date | 기본 날짜 이동 규칙; 실행별로 재정의할 수 있습니다. |
event_duplicator_default_shift_months |
12 | 기본 이동량(월 단위); 실행별로 재정의할 수 있습니다. |
event_duplicator_tbd_annotation |
(date TBD) |
검토에서 TBD로 플래그가 지정되었을 때 복제된 토픽의 제목/이벤트 이름에 추가되는 텍스트. 주석 기능을 완전히 비활성화하려면 비워 두세요. |
권한은 세 가지 확인의 AND입니다: 일반 Discourse 카테고리 권한, event_duplicator_allowed_groups 멤버십, 그리고 discourse-calendar 자체의 [event] 게시물 생성 권한.
알려진 제한 사항
- 검토 단계의 날짜 편집은 날 단위만 지원됩니다(시간대 편집 불가). 이는 의도된 범위 결정입니다: 대상 사용 사례는 시간대가 아닌 반복되는 레이스/이벤트 날짜입니다.
소스 / 이슈
- GitHub: GitHub - louking/discourse-event-duplicator: discourse plugin to duplicate events · GitHub
- 이슈/기능 요청: Issues · louking/discourse-event-duplicator · GitHub
- 백엔드(RSpec) 및 프론트엔드(QUnit) 테스트 스위트가 모두 포함되어 있으며 모든 push/PR에서 CI에서 실행됩니다.
2026-08-01 업데이트: v1.1.0에서 구성 가능한 월 기반 이동이 추가되었습니다, 아래를 참고하세요

