dax
(Daniela)
11월 5, 2025, 5:55오후
1
개요
이벤트 미리보기 모달(이벤트 날짜를 클릭하면 나타나는 모달)에서 "캘린더에 추가"를 클릭하면 다운로드되는 .ics 파일의 이름이 undefined.ics로 설정되며, 캘린더 파일 내부의 이벤트 제목도 SUMMARY:undefined로 설정됩니다. 그러나 이벤트의 3점 메뉴에서 “캘린더에 추가” 옵션을 통해 캘린더를 다운로드하면 예상대로 작동하며, 파일명과 캘린더 요약 모두 이벤트 제목이 사용됩니다.
재현 단계
이벤트가 있는 주제를 생성하거나 열기
게시물에 표시된 이벤트 날짜 를 클릭하여 미리보기 모달을 확장:
모달에서 캘린더에 추가 를 클릭
생성된 .ics 파일을 저장
(선택 사항) 이벤트의 3점 메뉴를 클릭하고 거기서 캘린더에 추가를 사용하여 비교
예상 결과
다운로드되는 .ics 파일은 이벤트 제목으로 명명되어야 함
캘린더 파일 내용은 이벤트 제목이 포함된 올바른 SUMMARY:를 가져야 함
관찰된 결과
다운로드된 파일의 이름은 undefined.ics임
캘린더 파일의 이벤트 제목은 SUMMARY:undefined임
(3점 메뉴에서 다운로드할 경우, 파일명과 요약 모두 정확함.)
추가 정보
Meta 및 기타 여러 Discourse 사이트에서 테스트했으며, 동일한 결과가 나타났습니다.
4개의 좋아요
sam
(Sam Saffron)
11월 6, 2025, 1:24오전
3
이것은 Dax에게 까다로운 문제입니다. 이는 우리의 파이프라인에서 발생하는 부수적 현상이에요.
날짜에 대한 bbcode는 여기서 생성됩니다:
get datesBBCode() {
const dates = [];
const startDate = this.buildDateBBCode({
date: this.startsAt,
format: this.startsAtFormat,
range: !!this.endsAt && "from",
});
dates.push(startDate);
if (this.endsAt) {
const endDate = this.buildDateBBCode({
date: this.endsAt,
format: this.endsAtFormat,
range: "to",
});
dates.push(endDate);
}
This file has been truncated. show original
그리고 여기서 cook(처리)됩니다:
따라서 cook된 HTML 청크의 컨텍스트에서는 "ics 다운로드"가 실제 해당 포스트(또는 이벤트)에 대해 인지하지 못합니다.
또한 ics 생성을 위한 다른 파이프라인이 여기에 있습니다:
따라서 엔지니어링 관점에서 다음 중 무엇을 해야 할지 결정해야 합니다:
“날짜 cook” 프로세스가 ics 생성을 Discourse Calendar로 다시 라우팅하도록 가르치는 것.
또는
Discourse Local Dates에 충분한 컨텍스트를 제공하여, ics를 독립적으로 생성할 수 있게 하되 코드가 분리된 상태를 유지하는 것.
여기서 올바른 해결책이 무엇인지 확신은 없지만, 우선순위를 설정해 두었으므로 팀이 분류하고 해결할 수 있도록 했습니다.
5개의 좋아요
Ric
(Ric Harvey)
11월 6, 2025, 1:45오후
5
두 분께 맥락을 조금 더 추가하자면, 이벤트의 세 점 메뉴를 클릭하면 일정에 추가 옵션이 있으며, 이 기능은 정상적으로 작동합니다. 이 정보가 문제를 조사하는 데 도움이 될지는 모르겠지만, 코드 다른 부분에서는 이미 해결된 것 같습니다.
수정: 물론 @dax가 이미 이렇게 말씀하셨는데, 제가 제대로 읽지 못했네요!
6개의 좋아요
sam
(Sam Saffron)
11월 7, 2025, 5:13오전
7
여기에는 정말 많은 내용이 포함되어 있습니다:
main ← cal-ics
merged 03:51AM - 10 Nov 25 UTC
Our "Download to calendar" button in local dates needed more guidance from
disco… urse calendar ics is not generated by the calendar plugin
오늘은 금요일이니까 (적어도 어딘가에서는 ;p) 머지를 월요일까지 기다릴 예정입니다.
이 변경 사항은 매우 광범위하며 ICS 지원이 훨씬 더 좋아질 것입니다.
ICS 생성 파이프라인을 통합했습니다 - 캘린더에 추가하고 날짜를 클릭할 때 모두 하나의 메커니즘만 사용합니다.
ICS 형식의 많은 세부 사항을 수정했습니다
반복 이벤트를 가져오도록 RRULE을 전달합니다
적절한 CRLF 줄바꿈 및 ICS 형식 준수
이벤트의 ICS를 가져올 때 UTC 이벤트가 아니라 올바른 시간대를 표시하도록 시간대 지원을 추가했습니다 - 이를 통해 반복이 작동합니다.
로컬 날짜 형식을 확장하여 선택적으로 인코딩된 ICS를 지원하도록 했습니다.
제가 가지고 있는 미해결 질문은 예, rrule 또는 아니오, rrule 입니다.
여기를 클릭하면:
반복 이벤트를 추가하려는 건가요? 아니면 이벤트의 단일 인스턴스만 추가하려는 건가요?
마찬가지로, 여기는 어떻게 할까요:
@lindsey 저는 여기서 고민 중입니다. 양쪽 모두 논리적으로 설득력이 있어 보입니다.
반복 이벤트를 클릭했고 캘린더에 반복을 추가하고 싶었습니다.
또는
반복의 인스턴스를 클릭했고 해당 인스턴스만 추가하고 싶었습니다.
(1)을 구현했는데, 더 정확하다고 느껴서입니다. 하지만 선호하신다면 (2)로 변경하는 데도 열려 있습니다.
7개의 좋아요
nat
(Natalie T)
이 글을 에 분리
11월 7, 2025, 8:22오전
8
lindsey
(Lindsey Fogle)
11월 7, 2025, 2:42오후
10
sam:
반복 이벤트를 클릭하여 해당 반복 설정을 캘린더에 추가하고 싶었습니다
어떤 방향의 논리든 이해할 수 있지만, 저도 1번 방식을 선호합니다. (1)번 방식이 더 정확할 뿐만 아니라, 사용자가 원하지 않는 경우였을 때 수정하기가 더 쉽다고 생각합니다. 대부분의 캘린더 소프트웨어(구글 캘린더 등)에서는 단일 작업으로 불필요한 이벤트를 삭제하는 것이 매우 쉽기 때문입니다:
따라서 다음과 같은 번거로움:
모든 이벤트에 참석 확인(RSVP)을 하고 싶지 않았는데, 추가된 이벤트를 삭제해야 합니다.
는 다음과 같은 번거로움보다 훨씬 적습니다:
모든 이벤트에 참석 확인을 하고 싶었는데, 매주 이곳에 다시 와서 캘린더에 계속 추가해야 합니다.
5개의 좋아요
sam
(Sam Saffron)
11월 10, 2025, 4:06오전
11
좋아요, 전 그냥 모두에게 RSVP를 유지했어요.
오늘 병합되었습니다
5개의 좋아요
sam
(Sam Saffron)
에 닫힘
11월 14, 2025, 9:00오후
12
이 주제는 4일 후 자동으로 닫혔습니다. 더 이상 새로운 답변을 게시할 수 없습니다.