📅 新しいカレンダー機能:定期的なイベントの終了日

Discourse Calendar で繰り返しイベントの終了日を設定できるようになりました!:sparkles:

この要望の多かった機能により、繰り返しイベントシリーズがいつ終了するかを指定できるようになり、イベントスケジューリングの制御が向上します。

毎日、毎週、または毎月繰り返されるイベントを作成し、それらがいつ終了するかを正確に決定できるようになりました。

Calendar プラグインとその機能の詳細については、公式 Calendar トピックをご覧ください。

将来的には、特定の曜日を除外する機能を追加する可能性があります。

「いいね!」 22

「Until」という言葉の扱いの難しい点は、それが含まれるのか除外されるのかが完全にはっきりしないことです。ここでより明確にするために何かできることはありますか?

「いいね!」 2

はい、Googleカレンダーも同じ問題を抱えています!彼らは「On」を使用していますが、それは同じ曖昧さの問題を抱えています。

しかし、ほとんどのユーザーは「Until」はその日付を含むと安全に想定すると思います。

「いいね!」 3

まで(含む):

編集:とりあえずこれをやりました UX: better copy by jjaffeux · Pull Request #737 · discourse/discourse-calendar · GitHub シンプルで良い変更のようです。


代替案としては、日付入力の横に実際の日時を表示することも考えられますが、おそらくやりすぎでしょうか?

「いいね!」 3

私が取り組んでいるeコマースの「新規バウチャー」ダイアログでのバウチャー開始/終了日の実装から、いくつかアイデアを拝借できるかもしれません。


UIで日付範囲の曖昧さを回避し、その柔軟性を示す別の例です。


技術的な詳細: 私たちのアプリケーションでは、日付は常に「タイムスタンプ(タイムゾーン付き)」(postgres)として保存されるため、データベースの設定や接続設定が実際に保存されるタイムスタンプに影響を与えることはありません。Postgresは推奨していませんが、これにより、どのような状況やSQLクエリでも日付の正確性が100%保証されるため、私たちはこの方法を採用しています。Postgresのdate/time/timezone関数を使用して、日付のタイムゾーンを直接操作でき、常に100%正確に機能することを確信できます。私たちはそれに依存しています。

そして、タイムゾーンが必要なすべてのエンティティ(ユーザープロファイル、マーケット、バウチャー、会計士向けのレポートなど)に対してタイムゾーン設定を用意しています。これにより、あらゆる日付をあらゆるタイムゾーンに、躊躇なくオンザフライで変換できます。

ここでの主なポイントは次のとおりです。

  1. 日付と時刻は常にタイムゾーンとともに保存する。
  2. タイムゾーンの選択は常に保存する。
  3. UIでは日付を非常に明確にし、魔法のような処理はしない。
  4. ユーザーが「保存」をクリックする前に、選択したタイムゾーンでの実際の日付を確認できるようにする。
「いいね!」 1

こんにちは、

セルフホスト環境(1か月前に新規作成)では、終了日を設定するオプションが見当たりません。

私のやり方に何か問題があるのでしょうか?

スクリーンショットは Insert date / time(日付/時刻を挿入)ダイアログを示しているように見えますが、Create event(イベントを作成)ダイアログではありません。

これらはDiscourse Calendarにおける2つの異なるワークフローです:

  • Insert date / time は、OP(最初の投稿)に [calendar] ブロックを含むトピックの返信で日付や時刻を挿入するために使用されます。
  • Create event は実際のイベント([event ...][/event])を作成するために使用され、繰り返しイベントの設定(繰り返し終了日を含む)がここで行えます。

したがって、このトピックで告知されている機能を使用するには、コンポーザーの + メニューを開き、Insert date / time ではなく Create event を選択してください。

最近、繰り返しイベントのフローをテストしていた際、有界な繰り返し(終了日が設定された繰り返し)が完全に期限切れになった後のエッジケースを発見しました。このための修正を以下のプルリクエストで提出しています:

「いいね!」 1

実際には、トピック内でカレンダー(イベントの収集)を管理しようとしていました。

誤解を招いてしまい、申し訳ありません。私はこの分野に慣れていません。

実際、イベントを作成する際は、動作しているようです。

残念なことに、Insert date / time については動作しません。

ご協力ありがとうございます!

「いいね!」 1

問題ありません :slightly_smiling_face:

補足として、これは「日付/時刻の挿入」機能が正常に動作していないというケースではないと思います。別のワークフローの話です。

日付/時刻の挿入 は、トピックの最初の投稿に [calendar] ブロックがあり、日付付きの返信がその特定のトピックのカレンダーに表示される場合に使用します。

一方、イベントの作成 は、実際の Discourse イベント([event ...][/event])を作成します。このトピックで議論されている繰り返しイベントの終了日は、そのイベントの繰り返しシステムに適用されます。

つまり、1つのトピックにローカルのカレンダーを維持したい場合、元のスクリーンショットに示されているワークフローが適切です。ただ、イベントと同じ有界繰り返し機能を使用するわけではありません。

はい、承知しました。

ユースケースは、学校のスケジュール管理です。常に新しい予定を入力する必要があり、保護者の誰かがトピックに返信することで新しい予定を追加できるようにしています。

しかし、ちょうど昨日、繰り返し予定(定期予定)を入力する必要が生じましたが、残念ながらこのワークフローにはそのオプションがありません。そのため、新しい日付を指定してトピックに何度も返信する形で手動対応しなければなりません(もっとスマートな方法があるかどうかわかりませんが…)。

手動返信を自動化しつつ、既存のトピックローカルの [calendar] ワークフローを維持する方法があるかもしれません。

一つの可能性として、Power AutomateAzure Logic App などのツールを使って、日付付きの個別返信を生成し、それらをメール経由でカレンダーのトピックに送信する方法があります。これには、返信メール機能が有効化された専用の Discourse ユーザーを使用します。

例えば、終了日付きの週次予定を、自動化処理によって必要な個々の返信に展開できます。これにより、保護者の方は別々のイベントトピックを見るのではなく、通常のトピックカレンダーを一つとして見続けることができます。

ただし、Discourse のユーザーごとの返信メールキーに関するいくつかの詳細な設定を慎重に行う必要があるため、このトピックで設定の詳細を説明する場所としては適切ではないかもしれません。

このアプローチが役立つと思われる場合は、別の Meta トピックで一緒に検討するお手伝いを喜んで行います。

現時点では一度しか起きていないので、次まで待ってみます(もう起きないことを願っています)。

メールでの返信機能は使っておきます。ありがとうございます。ただ、それだと1年間毎週あるイベントに対して、返信を52回も生成しなければならないということになりますか?トピックの可読性が悪くなりそうです…

それ以外では、管理者権限を持っているので、APIを使って予定を手動で追加することもできると思います。

貴重な情報ありがとうございました!

はい — 残念ながら、API を使っても返信の作成は自動化できますが、混雑の問題は根本的に解決されません。トピックカレンダーの場合、個々のカレンダーエントリは依然として個別の返信として表現されるためです。

ちょうど、あなたのユースケースとほぼ同じ内容の既存の機能リクエストを見つけました:

この例では、12 週連続の水曜日に開催されるコースが挙げられており、同じ点が指摘されています。つまり、各回の開催を個別に作成するのは面倒で、トピックを混雑させるということです。

彼らは、最終回の終了日とともに 日付/時刻の挿入 における再発(リカレンス)を許可することを提案しており、これはあなたの必要とするものと非常に近いものです。

したがって、52 件の投稿を生成する API や Power Automate のワークアラウンドを作成するのではなく、その機能リクエストにあなたの学校カレンダーのユースケースを追加する方が、おそらくより良い方法です。

「いいね!」 1

ありがとう、そうするよ!

ごちゃごちゃした表示が気になる場合は、トピックごとのカレンダーではなく、Events_calendar_categories 設定の使用をお勧めします。保護者の方は、以下にリンクする自動化機能を通じて Discourse にアクセスできます。