未定義の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サイトでテストしましたが、結果は同じでした。

「いいね!」 3

これはDaxにとって難しい問題で、私たちのパイプラインの副作用です。

日付のbbcodeはここで生成されます:

そしてここで調理されます:

そのため、調理されたHTMLチャンクのコンテキストでは、「ICSのダウンロード」は、それがどの投稿(またはイベント)にあるかを認識していません。

また、ICS生成のための別のパイプラインがここにあります:

したがって、エンジニアリングの観点から、次のいずれかを決定する必要があります。

  1. 「日付調理」にICS生成をDiscourse Calendarにリダイレクトする方法を教える。

または

  1. Discourse Local Datesに十分なコンテキストを提供し、ICSを独立して生成できるようにし、コードを断片化されたままにする。

どちらが正しいかはわかりませんが、チームがトリアージして解決できるように優先順位を付けました。

「いいね!」 5

こんにちは、両名へ。状況を補足しますと、イベントの3つの点をクリックすると「カレンダーに追加」オプションが表示され、これは機能します。この情報が調査の助けになるか分かりませんが、コードの他の場所で解決されているようです。

「いいね!」 6

かなりの量があります。

金曜日ですので(少なくともどこかでは ;p )、マージは月曜日まで待ちます。

この変更は信じられないほど広範囲に及び、ICSのサポートが大幅に向上するはずです。

  • ICS生成のパイプラインを統一 - カレンダーに追加する場合と日付をクリックする場合の両方で、1つのメカニズムのみを使用します。
  • ICSフォーマットの多くの小さなニュアンスを修正します。
    • RRULEを渡すため、繰り返しイベントを取得した場合
    • 正しいCRLF改行とICSフォーマットへの一般的な準拠
    • タイムゾーンサポート。イベントのICSを取得すると、UTCイベントではなく正しいタイムゾーンが通知されます。これにより、繰り返しが機能します。
  • ローカル日付フォーマットを拡張して、オプションでエンコードされたICSをサポートします。

未解決の質問は、はい、rruleいいえ、rrule かです。

ここをクリックすると:

繰り返しイベントをカレンダーに追加することを意図していますか?それともイベントの単一インスタンスのみですか?

同様に、ここはどうですか:

@lindsey どちらの意見も理解できるため、決めかねています。

  1. 繰り返しイベントをクリックし、繰り返しをカレンダーに追加したかった。

または

  1. 繰り返しのインスタンスをクリックし、それのみを追加したかった。

私は(1)を実装しました。より正しいと感じる傾向があるためですが、好む場合は(2)に変更することも可能です。

「いいね!」 7

投稿が既存のトピックにマージされました: Upcoming events page broken after recent update

どちらの方向の議論も理解できますが、私も (1) を好みます。それはより正確であり、ユーザーが望んだものではなかった場合に「修正」するのが簡単だと思います。なぜなら、ほとんどのカレンダーソフトウェアでは、(Googleカレンダーなど) 単一のアクションで余分なイベントを簡単に削除できるからです。

そのため、次のような手間は:

  • すべてのイベントに出席確認を返信したくなかったので、余分なものを削除する必要があります。

次のような手間よりもはるかに小さいです。

  • すべてのイベントに出席確認を返信したかったので、毎週ここに戻ってきて、カレンダーに追加し続けることを確認する必要があります。
「いいね!」 5

承知いたしました。すべてに出席確認を返信しておきます。

本日マージされました :confetti_ball:

「いいね!」 5

このトピックは4日後に自動的に閉じられました。返信はもう許可されていません。