デバッグ中の作業メモ

カレンダーへの予定の追加が面倒くさい

 
Picture of 達也 白井
カレンダーへの予定の追加が面倒くさい
by 達也 白井 - Thursday, 24 April 2014, 9:35 PM (ID:19521)
 

日付をクリックして入力画面にするために,Moodle1では以下のような手を使っていた.

https://www.suzuka-ct.ac.jp/mech/moodle2/mod/wiki/view.php?pageid=2434

https://www.suzuka-ct.ac.jp/mech/moodle2/mod/wiki/view.php?pageid=2435

さすがにMoodle2.6では構造が大きく変わっている.いわゆるrendererの概念が入っている.

たとえば(Shirai024)はcalendar/view.php内のfunction calendar_show_month_detailed()に細工を行っている.Moodle2.6では,calendar/view.phpはあるが,function calendar_show_month_detailed()のような関数は一切存在しない.これに相当すると思われるのが,calendar/renderer.phpの中のfunction show_month_detailed()だろう.

予想以上に長いぞ.

Picture of 達也 白井
Re: カレンダーへの予定の追加が面倒くさい
by 達也 白井 - Thursday, 24 April 2014, 9:37 PM (ID:19522)
 

多分,これだ.イベントの入力済みの日の場合はリンクが表示される.そしてイベントの無い日は単に文字だけ表示する.

            // Special visual fx if an event is defined
            if (isset($eventsbyday[$day])) {
                if(count($eventsbyday[$day]) == 1) {
                    $title = get_string('oneevent', 'calendar');
                } else {
                    $title = get_string('manyevents', 'calendar', count($eventsbyday[$day]));
                }
                $cell->text = html_writer::tag('div', html_writer::link($dayhref, $day, array('title'=>$title)), array('class'=>'day'));
            } else {
                $cell->text = html_writer::tag('div', $day, array('class'=>'day'));
            }

 

Picture of 達也 白井
Re: カレンダーへの予定の追加が面倒くさい
by 達也 白井 - Friday, 25 April 2014, 1:43 PM (ID:19523)
 

イベント追加ボタンは,

function add_event_button()

で表示される.

        $output = html_writer::start_tag('div', array('class'=>'buttons'));
        $output .= html_writer::start_tag('form', array('action' => CALENDAR_URL . 'event.php', 'method' => 'get'));
        $output .= html_writer::start_tag('div');
        $output .= html_writer::empty_tag('input', array('type'=>'hidden', 'name' => 'action', 'value' => 'new'));
        $output .= html_writer::empty_tag('input', array('type'=>'hidden', 'name' => 'course', 'value' => $courseid));
        $output .= html_writer::empty_tag('input', array('type'=>'hidden', 'name' => 'time', 'value' => $time));
        $output .= html_writer::empty_tag('input', array('type'=>'submit', 'value' => get_string('newevent', 'calendar')));
        $output .= html_writer::end_tag('div');
        $output .= html_writer::end_tag('form');
        $output .= html_writer::end_tag('div');

さりとて特別に難しいことはしていない.

Picture of 達也 白井
Re: カレンダーへの予定の追加が面倒くさい
by 達也 白井 - Friday, 25 April 2014, 2:32 PM (ID:19524)
 

ミニカレンダーはblocks/calendar_month/block_calendar_month.phpで表示されていると考えられる.

その中で,function calendar_get_mini()を呼んでいる.これはcalendar/lib.phpの中にある.

 

 

Picture of 達也 白井
Re: カレンダーへの予定の追加が面倒くさい
by 達也 白井 - Friday, 25 April 2014, 5:45 PM (ID:19525)
 

いずれのカレンダーでも用いる function calendar_get_link_href($linkbase, $d, $m, $y, $time = 0) は,

$day, $month, $yearで指定するか,time()形式で与えるか.time()形式の場合は$d, $m, $yには0を指定する.

$timeに,+60*60*9 と秒単位で指定するとお9時から,と時間も指定できるが,$d, $m, $yでは時間は指定できない,のかな.

指定が0時0分からだと気持ちが悪いならば9時からにしても良いが,”終日”は00:00から23:55までを指定した時なので,敢えてこのままにして終日指定が可能な設定の方に備えるか?