一覧表示で超過した期限日を赤く表示する

出典: SugarForum.jp

標準モジュールのTasksやCallsのように、設定された期限日が過ぎていたら赤く表示したい、というケースがあります。その場合、Beanクラスの、get_list_view_data() をオーバーライドします。

function get_list_view_data(){
  global $timedate;
  $fields = $this->get_list_view_array();
  if (isset($fields['DEAD_LINE'])){
    $today = date($timedate->dbDayFormat, time());
    $deadline = $timedate->to_db_date($fields['DEAD_LINE']);
    if ($today >= $deadline)
      $fields['DEAD_LINE'] = '<span class="overdueTask">'.$fields['DEAD_LINE'].'</span>';
  }
  return $fields;
}

$timedate はSugarで日時を扱うためのTimeDateクラスのインスタンスです。get_list_view_array() で、デフォルトの配列を受け取ります。この例では、DEAD_LINE(締切)フィールドが存在するかチェックし、今日($today)と締切($deadline)の比較をします。超過している場合は、<span class="overdueTask"> を付加します。CSSのoverdueTaskクラスは赤色に設定されています。(使用中のテーマに依存します)

$timedate->dbDayFormat

このクラス変数は、DBの日付表現を示します。MySQLであれば「Y-m-d」です。

$timedate->to_db_date($str)

この関数は、受け取った文字列(日付表現)を、DBの日付表現に変換します。


最終更新 11:46, 2010年4月15日 (木)。   このページは 1,153 回アクセスされました。