0

私は完全なカレンダーに慣れていないので、問題のコードにどこから侵入すればよいか本当にわかりません.

まず、フル カレンダーは素晴らしいです。すごい時間の節約になります。素晴らしい作品です。次に、Paul the Dutchman の修正版を使用しています。ここからダウンロード: http://www.paulthedutchman.nl/portfolio/?mi=113

複数日のイベントが、イベントが設定されている日の列の高さにまたがる週ビューで、デフォルトではなく、それらの日の複数のイベントとして表示する必要があります。

このように考えるのが一番です。3 日間の仕事とは、詳細が異なる 3 つの勤務シフトです。

月: 1/3 | 火: 2/3 | 水曜日: 3/3

  • イベントの「ピース」を永続化するために ID は必要ありません。それらは実際には別個のイベントです。
  • 私は、ユーザーが新しいイベントを作成するときに複数の勤務シフトを設定できるようにすることだけを試みています
  • なんで?= ユーザーは 3 日間連続して勤務している可能性があります..しかし、1 つのシフト/チームが移動するため、既定のイベント動作 (および別の ID) が最適なソリューションです

addEvent 関数のサーバー側コードで、次のような単純なものを想像しました。

  1. 開始終了日を確認し、差額を引きます
  2. php "while" $i <= date diff - 個別のイベントを作成し、名前のみを渡します

    $ck_str= date("d",$frm_submitted['date_start'] );
    $ck_end= date("d",$frm_submitted['date_end'] ); <br/>
    
    if( $ck_str != $ck_end){ // are the day the same? if not do this
    
    $ck_diff = $ck_end - $ck_str; // subtract days  for events needed
     $i = 1;
    while ($i <= $ck_diff) {
    // add event or modify array if already inside the add function
    // customize the name "Day1: Job Name"
    
    }}
    

最終結果、同じ名前で作成する複数のイベント

そんなに単純なことでしょうか?

以下は、Pauls Modified Calendar の addEvent 関数です。

function addEvent() {

global $error;

$arr_submit         = array(
    array('cal_id',         'int',          false,  ''),
    array('color',          'varchar',      false,  ''),
    array('date_end',       'int',          false,  ''),
    array('date_start',     'int',          false,  ''),
    array('title',          'varchar',      false,  ''),
    array('location',       'varchar',      false,  ''),
    array('description',    'varchar',      false,  ''),
    array('cal_type',       'varchar',      false,  ''),
    array('interval',       'varchar',      false,  ''),
    array('weekdays',       'varchar',      false,  ''),
    array('monthday',       'varchar',      false,  ''),
);

$frm_submitted      = validate_var($arr_submit);
    $frm_submitted['title'] = stripslashes($frm_submitted['title']);
    $frm_submitted['cal_id'] = 1;  // for this test there is only one calendar

// time offset
$frm_submitted['date_start'] -= TIME_OFFSET;
if(empty($frm_submitted['date_end'])) {
    $frm_submitted['date_end'] = $frm_submitted['date_start'];
} else {
    $frm_submitted['date_end'] -= TIME_OFFSET;
}
if($frm_submitted['title'] == 'undefined') {
    echo json_encode(array('success'=>false));exit;
}

//if(USE_CALENDAR_COLOR_FOR_EVENT) {
if(empty($frm_submitted['color']) || $frm_submitted['color'] == 'undefined') {
    $frm_submitted['color'] = Calendar::getColor($frm_submitted['cal_id']);
}
//}
if(empty($error)) {

    // check if repeating event
    if(isset($frm_submitted['interval']) && ($frm_submitted['interval'] == 'W' ||
                $frm_submitted['interval'] == '2W' ||
                $frm_submitted['interval'] == 'M' ||
                $frm_submitted['interval'] == 'Y')) {
        // weekday

        $arr_days = Utils::getDaysInPattern($frm_submitted);
        $arr_event = Events::insertRepeatingEvent($arr_days, $frm_submitted);

        echo json_encode(array('success'=>true));exit;
    } else {
        // check if this calendar allows overlapping
        //if(!CalendarOwners::allowOverlapping($frm_submitted['cal_id'])) {
            if(Events::isTimeAvailable($frm_submitted) || $frm_submitted['date_end'] != $frm_submitted['date_start']) {
                $arr_event = Events::insertEvent($frm_submitted);
                echo json_encode(array('success'=>true, 'event'=>$arr_event ));exit;
            } else {
                echo json_encode(array('success'=>false, 'error'=>'Overlapping'));exit;
            }
        //} else {
            //$arr_event = Events::insertEvent($frm_submitted);
            //echo json_encode(array('success'=>true, 'event'=>$arr_event   ));exit;
        //}
    }
}
echo json_encode(array('success'=>false));exit;
}
4

1 に答える 1