Date All Day

Drupal CoreのDatetime Rangeフィールドを拡張し、「終日」オプションを提供します。これにより、エディターは特定の時刻を指定せずに1日中続くイベントをマークできます。

date_all_day
4,766 sites
20
drupal.org

インストール

Drupal 11, 10, 9, 8 v2.1.0
composer require 'drupal/date_all_day:^2.1'

概要

Date All Dayモジュールは、DrupalのDatetime Rangeフィールドに「終日」機能を追加して強化します。これは、特定の時間枠ではなく丸一日を表す日付を持つイベント、スケジュール、コンテンツタイプに特に便利です。

「終日」チェックボックスが有効になると、モジュールはエディターから時刻入力フィールドを自動的に非表示にし、開始時刻を深夜(00:00:00)、終了時刻を1日の終わり(23:59:59)に設定して日付を保存します。その後、フォーマッターがこのパターンを検出し、時刻情報なしで日付部分のみを表示することで、終日イベントをよりきれいに表示します。

このモジュールは、データ入力用のウィジェットと日付を表示するための複数のフォーマッターを提供し、すべてが終日ステータスを認識して出力を適切にフォーマットします。

Features

  • Datetime Rangeフィールドウィジェットに「終日」チェックボックスを追加し、時刻入力の表示/非表示を切り替え
  • 終日がチェックされると、開始時刻を00:00:00、終了時刻を23:59:59に自動設定
  • 終日の日付に対して日付のみのフォーマットで表示する3つのフィールドフォーマッター(Default、Custom、Plain)を提供
  • チェックボックスの状態に基づいて時刻フィールドを動的に表示/非表示にするJavaScript動作
  • 終日の日付の表示方法を制御するためのフォーマッター用日付のみフォーマット設定
  • 日付範囲でのオプションの終了日のサポート
  • 日付範囲が終日イベントを表すかどうかをプログラムで検出するヘルパーユーティリティクラス

Use Cases

終日イベントを含むイベントカレンダー

イベントコンテンツタイプを構築する際、このモジュールを使用することで、エディターは特定の開始時刻と終了時刻を必要とせずに、イベント(祝日、カンファレンス、締め切りなど)を「終日」イベントとしてマークできます。イベントは「December 25, 2024 00:00 - December 25, 2024 23:59」ではなく、単純に「December 25, 2024」と表示されます。

カンファレンスやワークショップのスケジュール管理

複数日にわたるカンファレンスやワークショップでは、エディターは複数の丸一日にわたるイベントを作成できます。「終日」オプションをチェックすることで、時刻情報で出力を煩雑にすることなく、「January 15, 2024 - January 17, 2024」と表示されます。

締め切りと期限の管理

プロジェクト管理や教育システム用のコンテンツタイプを作成する際、締め切りは特定の時刻ではなく1日全体に適用されることが多いです。終日機能は、任意の時刻を指定せずに「12月31日の終わりまで」をきれいに表現する方法を提供します。

祝日や休業日のお知らせ

組織はこのモジュールを使用して、オフィスの休業日や祝日を告知できます。「終日」の日付範囲は、休業が1日全体または複数日に適用されることをきれいに伝えます。

Tips

  • フォーマッターの「date_only_format」設定を使用して、終日の日付の表示方法をカスタマイズできます。「December 25, 2024」のようなより読みやすい出力には、「F j, Y」のようなカスタム日付フォーマットを作成できます。
  • DateRangeAllDayHelper::isAllDay()ユーティリティメソッドは、カスタムコードで日付フィールド値が終日イベントを表すかどうかをプログラム的にチェックするために使用できます。
  • 日付出力をテーマ設定する際、終日の日付はISO 8601のdatetime属性を持つ「time」テーマを使用することを覚えておいてください。これはSEOとアクセシビリティに有効です。
  • モジュールは終日イベントを00:00:00から23:59:59の時刻でデータベースに保存するため、時刻でフィルタリングする既存のクエリやViewsは引き続き正しく動作します。
  • オプションの終了日を使用する場合、終了日フィールドはフォームでオプションとしてマークされ、終了日を必要としない単一日の終日イベントが可能になります。

Technical Details

Troubleshooting 3
「終日」にチェックしても時刻フィールドが表示されたままになる

JavaScriptライブラリが正しく読み込まれていることを確認してください。「date_all_day/date_all_day」ライブラリがフォームにアタッチされていること、およびブラウザコンソールにJavaScriptエラーがないことを確認してください。

終日の日付が時刻付きで表示される

表示の管理設定で「All day」フォーマッター(Default All day、Custom All day)のいずれかを使用していることを確認してください。標準のCoreフォーマッターは終日パターンを認識せず、時刻を表示します。

「date_all_day」日付フォーマットがフォーマッター設定で利用できない

日付フォーマットはモジュールが有効化されたときにインストールされます。モジュールをアンインストールして再インストールするか、管理 > 環境設定 > 地域と言語 > 日付と時刻のフォーマットで手動で日付フォーマットを作成してください。