정의되지 않은 ICS 파일 이름

:information_source: 개요

이벤트 미리보기 모달(이벤트 날짜를 클릭하면 나타나는 모달)에서 "캘린더에 추가"를 클릭하면 다운로드되는 .ics 파일의 이름이 undefined.ics로 설정되며, 캘린더 파일 내부의 이벤트 제목도 SUMMARY:undefined로 설정됩니다. 그러나 이벤트의 3점 메뉴에서 “캘린더에 추가” 옵션을 통해 캘린더를 다운로드하면 예상대로 작동하며, 파일명과 캘린더 요약 모두 이벤트 제목이 사용됩니다.

:walking_woman: 재현 단계

  1. 이벤트가 있는 주제를 생성하거나 열기

  2. 게시물에 표시된 이벤트 날짜를 클릭하여 미리보기 모달을 확장:

  3. 모달에서 캘린더에 추가를 클릭

  4. 생성된 .ics 파일을 저장

  5. (선택 사항) 이벤트의 3점 메뉴를 클릭하고 거기서 캘린더에 추가를 사용하여 비교

:white_check_mark: 예상 결과

  • 다운로드되는 .ics 파일은 이벤트 제목으로 명명되어야 함
  • 캘린더 파일 내용은 이벤트 제목이 포함된 올바른 SUMMARY:를 가져야 함

:x: 관찰된 결과

  • 다운로드된 파일의 이름은 undefined.ics임
  • 캘린더 파일의 이벤트 제목은 SUMMARY:undefined임
  • (3점 메뉴에서 다운로드할 경우, 파일명과 요약 모두 정확함.)

:books: 추가 정보

  • 잘못된 형식의 ICS 콘텐츠 예시:
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:-//Discourse//EN
    BEGIN:VEVENT
    UID:1762794000000_1762801200000
    DTSTAMP:20251105T173754Z
    DTSTART:20251110T170000Z
    DTEND:20251110T190000Z
    SUMMARY:undefined
    END:VEVENT
    END:VCALENDAR
    

Meta 및 기타 여러 Discourse 사이트에서 테스트했으며, 동일한 결과가 나타났습니다.

4개의 좋아요

이것은 Dax에게 까다로운 문제입니다. 이는 우리의 파이프라인에서 발생하는 부수적 현상이에요.

날짜에 대한 bbcode는 여기서 생성됩니다:

그리고 여기서 cook(처리)됩니다:

따라서 cook된 HTML 청크의 컨텍스트에서는 "ics 다운로드"가 실제 해당 포스트(또는 이벤트)에 대해 인지하지 못합니다.

또한 ics 생성을 위한 다른 파이프라인이 여기에 있습니다:

따라서 엔지니어링 관점에서 다음 중 무엇을 해야 할지 결정해야 합니다:

  1. “날짜 cook” 프로세스가 ics 생성을 Discourse Calendar로 다시 라우팅하도록 가르치는 것.

또는

  1. Discourse Local Dates에 충분한 컨텍스트를 제공하여, ics를 독립적으로 생성할 수 있게 하되 코드가 분리된 상태를 유지하는 것.

여기서 올바른 해결책이 무엇인지 확신은 없지만, 우선순위를 설정해 두었으므로 팀이 분류하고 해결할 수 있도록 했습니다.

5개의 좋아요

두 분께 맥락을 조금 더 추가하자면, 이벤트의 세 점 메뉴를 클릭하면 일정에 추가 옵션이 있으며, 이 기능은 정상적으로 작동합니다. 이 정보가 문제를 조사하는 데 도움이 될지는 모르겠지만, 코드 다른 부분에서는 이미 해결된 것 같습니다.

수정: 물론 @dax가 이미 이렇게 말씀하셨는데, 제가 제대로 읽지 못했네요!

6개의 좋아요

여기에는 정말 많은 내용이 포함되어 있습니다:

오늘은 금요일이니까 (적어도 어딘가에서는 ;p) 머지를 월요일까지 기다릴 예정입니다.

이 변경 사항은 매우 광범위하며 ICS 지원이 훨씬 더 좋아질 것입니다.

  • ICS 생성 파이프라인을 통합했습니다 - 캘린더에 추가하고 날짜를 클릭할 때 모두 하나의 메커니즘만 사용합니다.
  • ICS 형식의 많은 세부 사항을 수정했습니다
    • 반복 이벤트를 가져오도록 RRULE을 전달합니다
    • 적절한 CRLF 줄바꿈 및 ICS 형식 준수
    • 이벤트의 ICS를 가져올 때 UTC 이벤트가 아니라 올바른 시간대를 표시하도록 시간대 지원을 추가했습니다 - 이를 통해 반복이 작동합니다.
  • 로컬 날짜 형식을 확장하여 선택적으로 인코딩된 ICS를 지원하도록 했습니다.

제가 가지고 있는 미해결 질문은 예, rrule 또는 아니오, rrule입니다.

여기를 클릭하면:

반복 이벤트를 추가하려는 건가요? 아니면 이벤트의 단일 인스턴스만 추가하려는 건가요?

마찬가지로, 여기는 어떻게 할까요:

@lindsey 저는 여기서 고민 중입니다. 양쪽 모두 논리적으로 설득력이 있어 보입니다.

  1. 반복 이벤트를 클릭했고 캘린더에 반복을 추가하고 싶었습니다.

또는

  1. 반복의 인스턴스를 클릭했고 해당 인스턴스만 추가하고 싶었습니다.

(1)을 구현했는데, 더 정확하다고 느껴서입니다. 하지만 선호하신다면 (2)로 변경하는 데도 열려 있습니다.

7개의 좋아요

게시물이 기존 토픽에 병합되었습니다: 최근 업데이트 후 다가오는 행사 페이지 오류

어떤 방향의 논리든 이해할 수 있지만, 저도 1번 방식을 선호합니다. (1)번 방식이 더 정확할 뿐만 아니라, 사용자가 원하지 않는 경우였을 때 수정하기가 더 쉽다고 생각합니다. 대부분의 캘린더 소프트웨어(구글 캘린더 등)에서는 단일 작업으로 불필요한 이벤트를 삭제하는 것이 매우 쉽기 때문입니다:

따라서 다음과 같은 번거로움:

  • 모든 이벤트에 참석 확인(RSVP)을 하고 싶지 않았는데, 추가된 이벤트를 삭제해야 합니다.

는 다음과 같은 번거로움보다 훨씬 적습니다:

  • 모든 이벤트에 참석 확인을 하고 싶었는데, 매주 이곳에 다시 와서 캘린더에 계속 추가해야 합니다.
5개의 좋아요

좋아요, 전 그냥 모두에게 RSVP를 유지했어요.

오늘 병합되었습니다 :confetti_ball:

5개의 좋아요

이 주제는 4일 후 자동으로 닫혔습니다. 더 이상 새로운 답변을 게시할 수 없습니다.