| [ Index ] |
PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008] |
[Summary view] [Print] [Text view]
1 <?php // $Id: view.php,v 1.95.2.7 2008/04/22 06:08:47 dongsheng Exp $ 2 3 ///////////////////////////////////////////////////////////////////////////// 4 // // 5 // NOTICE OF COPYRIGHT // 6 // // 7 // Moodle - Calendar extension // 8 // // 9 // Copyright (C) 2003-2004 Greek School Network www.sch.gr // 10 // // 11 // Designed by: // 12 // Avgoustos Tsinakos (tsinakos@teikav.edu.gr) // 13 // Jon Papaioannou (pj@moodle.org) // 14 // // 15 // Programming and development: // 16 // Jon Papaioannou (pj@moodle.org) // 17 // // 18 // For bugs, suggestions, etc contact: // 19 // Jon Papaioannou (pj@moodle.org) // 20 // // 21 // The current module was developed at the University of Macedonia // 22 // (www.uom.gr) under the funding of the Greek School Network (www.sch.gr) // 23 // The aim of this project is to provide additional and improved // 24 // functionality to the Asynchronous Distance Education service that the // 25 // Greek School Network deploys. // 26 // // 27 // This program is free software; you can redistribute it and/or modify // 28 // it under the terms of the GNU General Public License as published by // 29 // the Free Software Foundation; either version 2 of the License, or // 30 // (at your option) any later version. // 31 // // 32 // This program is distributed in the hope that it will be useful, // 33 // but WITHOUT ANY WARRANTY; without even the implied warranty of // 34 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // 35 // GNU General Public License for more details: // 36 // // 37 // http://www.gnu.org/copyleft/gpl.html // 38 // // 39 ///////////////////////////////////////////////////////////////////////////// 40 41 // Display the calendar page. 42 43 require_once ('../config.php'); 44 require_once($CFG->dirroot.'/course/lib.php'); 45 require_once($CFG->dirroot.'/calendar/lib.php'); 46 47 $courseid = optional_param('course', 0, PARAM_INT); 48 $view = optional_param('view', 'upcoming', PARAM_ALPHA); 49 $day = optional_param('cal_d', 0, PARAM_INT); 50 $mon = optional_param('cal_m', 0, PARAM_INT); 51 $yr = optional_param('cal_y', 0, PARAM_INT); 52 53 if(!$site = get_site()) { 54 redirect($CFG->wwwroot.'/'.$CFG->admin.'/index.php'); 55 } 56 57 if ($courseid) { 58 require_login($courseid); 59 } else if ($CFG->forcelogin) { 60 require_login(); 61 } 62 63 // Initialize the session variables 64 calendar_session_vars(); 65 66 //add_to_log($course->id, "course", "view", "view.php?id=$course->id", "$course->id"); 67 $now = usergetdate(time()); 68 $pagetitle = ''; 69 70 $strcalendar = get_string('calendar', 'calendar'); 71 $navlinks = array(); 72 $navlinks[] = array('name' => $strcalendar, 73 'link' =>calendar_get_link_href(CALENDAR_URL.'view.php?view=upcoming&course='.$courseid.'&', 74 $now['mday'], $now['mon'], $now['year']), 75 'type' => 'misc'); 76 77 78 if(!checkdate($mon, $day, $yr)) { 79 $day = intval($now['mday']); 80 $mon = intval($now['mon']); 81 $yr = intval($now['year']); 82 } 83 $time = make_timestamp($yr, $mon, $day); 84 85 switch($view) { 86 case 'day': 87 $navlinks[] = array('name' => userdate($time, get_string('strftimedate')), 'link' => null, 'type' => 'misc'); 88 $pagetitle = get_string('dayview', 'calendar'); 89 break; 90 case 'month': 91 $navlinks[] = array('name' => userdate($time, get_string('strftimemonthyear')), 'link' => null, 'type' => 'misc'); 92 $pagetitle = get_string('detailedmonthview', 'calendar'); 93 break; 94 case 'upcoming': 95 $pagetitle = get_string('upcomingevents', 'calendar'); 96 break; 97 } 98 99 // If a course has been supplied in the URL, change the filters to show that one 100 if (!empty($courseid)) { 101 if ($course = get_record('course', 'id', $courseid)) { 102 if ($course->id == SITEID) { 103 // If coming from the home page, show all courses 104 $SESSION->cal_courses_shown = calendar_get_default_courses(true); 105 calendar_set_referring_course(0); 106 107 } else { 108 // Otherwise show just this one 109 $SESSION->cal_courses_shown = $course->id; 110 calendar_set_referring_course($SESSION->cal_courses_shown); 111 } 112 } 113 } else { 114 $course = null; 115 } 116 117 if (empty($USER->id) or isguest()) { 118 $defaultcourses = calendar_get_default_courses(); 119 calendar_set_filters($courses, $groups, $users, $defaultcourses, $defaultcourses); 120 121 } else { 122 calendar_set_filters($courses, $groups, $users); 123 } 124 125 // Let's see if we are supposed to provide a referring course link 126 // but NOT for the "main page" course 127 if ($SESSION->cal_course_referer != SITEID && 128 ($shortname = get_field('course', 'shortname', 'id', $SESSION->cal_course_referer)) !== false) { 129 require_login(); 130 if (empty($course)) { 131 $course = get_record('course', 'id', $SESSION->cal_course_referer); // Useful to have around 132 } 133 } 134 135 $strcalendar = get_string('calendar', 'calendar'); 136 $prefsbutton = calendar_preferences_button(); 137 138 // Print title and header 139 $navigation = build_navigation($navlinks); 140 print_header("$site->shortname: $strcalendar: $pagetitle", $strcalendar, $navigation, 141 '', '', true, $prefsbutton, user_login_string($site)); 142 143 echo calendar_overlib_html(); 144 145 // Layout the whole page as three big columns. 146 echo '<table id="calendar" style="height:100%;">'; 147 echo '<tr>'; 148 149 // START: Main column 150 151 echo '<td class="maincalendar">'; 152 echo '<div class="heightcontainer">'; 153 154 switch($view) { 155 case 'day': 156 calendar_show_day($day, $mon, $yr, $courses, $groups, $users, $courseid); 157 break; 158 case 'month': 159 calendar_show_month_detailed($mon, $yr, $courses, $groups, $users, $courseid); 160 break; 161 case 'upcoming': 162 calendar_show_upcoming_events($courses, $groups, $users, get_user_preferences('calendar_lookahead', CALENDAR_UPCOMING_DAYS), get_user_preferences('calendar_maxevents', CALENDAR_UPCOMING_MAXEVENTS), $courseid); 163 break; 164 } 165 166 //Link to calendar export page 167 echo '<div class="bottom">'; 168 print_single_button('export.php', array('course'=>$courseid), get_string('exportcalendar', 'calendar')); 169 170 if (!empty($USER->id)) { 171 $authtoken = sha1($USER->username . $USER->password); 172 $usernameencoded = urlencode($USER->username); 173 174 echo "<a href=\"export_execute.php?preset_what=all&preset_time=recentupcoming&username=$usernameencoded&authtoken=$authtoken\">" 175 .'<img src="'.$CFG->pixpath.'/i/ical.gif" height="14" width="36" ' 176 .'alt="'.get_string('ical', 'calendar').'" ' 177 .'title="'.get_string('quickdownloadcalendar', 'calendar').'" />' 178 .'</a>'; 179 } 180 181 echo '</div>'; 182 echo '</div>'; 183 echo '</td>'; 184 185 // END: Main column 186 187 // START: Last column (3-month display) 188 echo '<td class="sidecalendar">'; 189 list($prevmon, $prevyr) = calendar_sub_month($mon, $yr); 190 list($nextmon, $nextyr) = calendar_add_month($mon, $yr); 191 $getvars = 'id='.$courseid.'&cal_d='.$day.'&cal_m='.$mon.'&cal_y='.$yr; // For filtering 192 193 echo '<div class="sideblock">'; 194 echo '<div class="header"><h2>'.get_string('eventskey', 'calendar').'</h2></div>'; 195 echo '<div class="filters">'; 196 echo calendar_filter_controls($view, $getvars, NULL, $courses); 197 echo '</div>'; 198 echo '</div>'; 199 200 echo '<div class="sideblock">'; 201 echo '<div class="header"><h2>'.get_string('monthlyview', 'calendar').'</h2></div>'; 202 203 echo '<div class="minicalendarblock minicalendartop">'; 204 echo calendar_top_controls('display', array('id' => $courseid, 'm' => $prevmon, 'y' => $prevyr)); 205 echo calendar_get_mini($courses, $groups, $users, $prevmon, $prevyr); 206 echo '</div><div class="minicalendarblock">'; 207 echo calendar_top_controls('display', array('id' => $courseid, 'm' => $mon, 'y' => $yr)); 208 echo calendar_get_mini($courses, $groups, $users, $mon, $yr); 209 echo '</div><div class="minicalendarblock">'; 210 echo calendar_top_controls('display', array('id' => $courseid, 'm' => $nextmon, 'y' => $nextyr)); 211 echo calendar_get_mini($courses, $groups, $users, $nextmon, $nextyr); 212 echo '</div>'; 213 echo '</div>'; 214 215 echo '</td>'; 216 217 echo '</tr></table>'; 218 219 print_footer(); 220 221 222 223 function calendar_show_day($d, $m, $y, $courses, $groups, $users, $courseid) { 224 global $CFG, $USER; 225 226 if (!checkdate($m, $d, $y)) { 227 $now = usergetdate(time()); 228 list($d, $m, $y) = array(intval($now['mday']), intval($now['mon']), intval($now['year'])); 229 } 230 231 $getvars = 'from=day&cal_d='.$d.'&cal_m='.$m.'&cal_y='.$y; // For filtering 232 233 $starttime = make_timestamp($y, $m, $d); 234 $endtime = make_timestamp($y, $m, $d + 1) - 1; 235 236 $events = calendar_get_upcoming($courses, $groups, $users, 1, 100, $starttime); 237 238 $text = ''; 239 if (!isguest() && !empty($USER->id) && calendar_user_can_add_event()) { 240 $text.= '<div class="buttons">'; 241 $text.= '<form action="'.CALENDAR_URL.'event.php" method="get">'; 242 $text.= '<div>'; 243 $text.= '<input type="hidden" name="action" value="new" />'; 244 $text.= '<input type="hidden" name="course" value="'.$courseid.'" />'; 245 $text.= '<input type="hidden" name="cal_d" value="'.$d.'" />'; 246 $text.= '<input type="hidden" name="cal_m" value="'.$m.'" />'; 247 $text.= '<input type="hidden" name="cal_y" value="'.$y.'" />'; 248 $text.= '<input type="submit" value="'.get_string('newevent', 'calendar').'" />'; 249 $text.= '</div></form></div>'; 250 } 251 252 $text .= get_string('dayview', 'calendar').': '.calendar_course_filter_selector($getvars); 253 254 echo '<div class="header">'.$text.'</div>'; 255 256 echo '<div class="controls">'.calendar_top_controls('day', array('id' => $courseid, 'd' => $d, 'm' => $m, 'y' => $y)).'</div>'; 257 258 if (empty($events)) { 259 // There is nothing to display today. 260 echo '<h3>'.get_string('daywithnoevents', 'calendar').'</h3>'; 261 262 } else { 263 264 echo '<div class="eventlist">'; 265 266 $underway = array(); 267 268 // First, print details about events that start today 269 foreach ($events as $event) { 270 271 $event->calendarcourseid = $courseid; 272 273 if ($event->timestart >= $starttime && $event->timestart <= $endtime) { // Print it now 274 275 276 /* 277 $dayend = calendar_day_representation($event->timestart + $event->timeduration); 278 $timeend = calendar_time_representation($event->timestart + $event->timeduration); 279 $enddate = usergetdate($event->timestart + $event->timeduration); 280 // Set printable representation 281 echo calendar_get_link_tag($dayend, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']).' ('.$timeend.')'; 282 */ 283 //unset($event->time); 284 285 $event->time = calendar_format_event_time($event, time(), '', false, $starttime); 286 calendar_print_event($event); 287 288 } else { // Save this for later 289 $underway[] = $event; 290 } 291 } 292 293 // Then, show a list of all events that just span this day 294 if (!empty($underway)) { 295 echo '<h3>'.get_string('spanningevents', 'calendar').':</h3>'; 296 foreach ($underway as $event) { 297 $event->time = calendar_format_event_time($event, time(), '', false, $starttime); 298 calendar_print_event($event); 299 } 300 } 301 302 echo '</div>'; 303 304 } 305 } 306 307 function calendar_show_month_detailed($m, $y, $courses, $groups, $users, $courseid) { 308 global $CFG, $SESSION, $USER, $CALENDARDAYS; 309 global $day, $mon, $yr; 310 311 $getvars = 'from=month&cal_d='.$day.'&cal_m='.$mon.'&cal_y='.$yr; // For filtering 312 313 $display = &New stdClass; 314 $display->minwday = get_user_preferences('calendar_startwday', CALENDAR_STARTING_WEEKDAY); 315 $display->maxwday = $display->minwday + 6; 316 317 if(!empty($m) && !empty($y)) { 318 $thisdate = usergetdate(time()); // Time and day at the user's location 319 if($m == $thisdate['mon'] && $y == $thisdate['year']) { 320 // Navigated to this month 321 $date = $thisdate; 322 $display->thismonth = true; 323 } 324 else { 325 // Navigated to other month, let's do a nice trick and save us a lot of work... 326 if(!checkdate($m, 1, $y)) { 327 $date = array('mday' => 1, 'mon' => $thisdate['mon'], 'year' => $thisdate['year']); 328 $display->thismonth = true; 329 } 330 else { 331 $date = array('mday' => 1, 'mon' => $m, 'year' => $y); 332 $display->thismonth = false; 333 } 334 } 335 } 336 else { 337 $date = usergetdate(time()); 338 $display->thismonth = true; 339 } 340 341 // Fill in the variables we 're going to use, nice and tidy 342 list($d, $m, $y) = array($date['mday'], $date['mon'], $date['year']); // This is what we want to display 343 $display->maxdays = calendar_days_in_month($m, $y); 344 345 $startwday = 0; 346 if (get_user_timezone_offset() < 99) { 347 // We 'll keep these values as GMT here, and offset them when the time comes to query the db 348 $display->tstart = gmmktime(0, 0, 0, $m, 1, $y); // This is GMT 349 $display->tend = gmmktime(23, 59, 59, $m, $display->maxdays, $y); // GMT 350 $startwday = gmdate('w', $display->tstart); // $display->tstart is already GMT, so don't use date(): messes with server's TZ 351 } else { 352 // no timezone info specified 353 $display->tstart = mktime(0, 0, 0, $m, 1, $y); 354 $display->tend = mktime(23, 59, 59, $m, $display->maxdays, $y); 355 $startwday = date('w', $display->tstart); // $display->tstart not necessarily GMT, so use date() 356 } 357 358 // Align the starting weekday to fall in our display range 359 if($startwday < $display->minwday) { 360 $startwday += 7; 361 } 362 363 // Get events from database 364 $events = calendar_get_events(usertime($display->tstart), usertime($display->tend), $users, $groups, $courses); 365 if (!empty($events)) { 366 foreach($events as $eventid => $event) { 367 if (!empty($event->modulename)) { 368 $cm = get_coursemodule_from_instance($event->modulename, $event->instance); 369 if (!groups_course_module_visible($cm)) { 370 unset($events[$eventid]); 371 } 372 } 373 } 374 } 375 376 // Extract information: events vs. time 377 calendar_events_by_day($events, $m, $y, $eventsbyday, $durationbyday, $typesbyday, $courses); 378 379 $text = ''; 380 if(!isguest() && !empty($USER->id) && calendar_user_can_add_event()) { 381 $text.= '<div class="buttons"><form action="'.CALENDAR_URL.'event.php" method="get">'; 382 $text.= '<div>'; 383 $text.= '<input type="hidden" name="action" value="new" />'; 384 $text.= '<input type="hidden" name="course" value="'.$courseid.'" />'; 385 $text.= '<input type="hidden" name="cal_m" value="'.$m.'" />'; 386 $text.= '<input type="hidden" name="cal_y" value="'.$y.'" />'; 387 $text.= '<input type="submit" value="'.get_string('newevent', 'calendar').'" />'; 388 $text.= '</div></form></div>'; 389 } 390 391 $text .= get_string('detailedmonthview', 'calendar').': '.calendar_course_filter_selector($getvars); 392 393 echo '<div class="header">'.$text.'</div>'; 394 395 echo '<div class="controls">'; 396 echo calendar_top_controls('month', array('id' => $courseid, 'm' => $m, 'y' => $y)); 397 echo '</div>'; 398 399 // Start calendar display 400 echo '<table class="calendarmonth"><tr class="weekdays">'; // Begin table. First row: day names 401 402 // Print out the names of the weekdays 403 for($i = $display->minwday; $i <= $display->maxwday; ++$i) { 404 // This uses the % operator to get the correct weekday no matter what shift we have 405 // applied to the $display->minwday : $display->maxwday range from the default 0 : 6 406 echo '<th scope="col">'.get_string($CALENDARDAYS[$i % 7], 'calendar').'</th>'; 407 } 408 409 echo '</tr><tr>'; // End of day names; prepare for day numbers 410 411 // For the table display. $week is the row; $dayweek is the column. 412 $week = 1; 413 $dayweek = $startwday; 414 415 // Paddding (the first week may have blank days in the beginning) 416 for($i = $display->minwday; $i < $startwday; ++$i) { 417 echo '<td class="nottoday"> </td>'."\n"; 418 } 419 420 // Now display all the calendar 421 for($day = 1; $day <= $display->maxdays; ++$day, ++$dayweek) { 422 if($dayweek > $display->maxwday) { 423 // We need to change week (table row) 424 echo "</tr>\n<tr>"; 425 $dayweek = $display->minwday; 426 ++$week; 427 } 428 429 // Reset vars 430 $cell = ''; 431 $dayhref = calendar_get_link_href(CALENDAR_URL.'view.php?view=day&course='.$courseid.'&', $day, $m, $y); 432 433 if(CALENDAR_WEEKEND & (1 << ($dayweek % 7))) { 434 // Weekend. This is true no matter what the exact range is. 435 $class = 'weekend'; 436 } 437 else { 438 // Normal working day. 439 $class = ''; 440 } 441 442 // Special visual fx if an event is defined 443 if(isset($eventsbyday[$day])) { 444 if(count($eventsbyday[$day]) == 1) { 445 $title = get_string('oneevent', 'calendar'); 446 } 447 else { 448 $title = get_string('manyevents', 'calendar', count($eventsbyday[$day])); 449 } 450 $cell = '<div class="day"><a href="'.$dayhref.'" title="'.$title.'">'.$day.'</a></div>'; 451 } 452 else { 453 $cell = '<div class="day">'.$day.'</div>'; 454 } 455 456 // Special visual fx if an event spans many days 457 if(isset($typesbyday[$day]['durationglobal'])) { 458 $class .= ' duration_global'; 459 } 460 else if(isset($typesbyday[$day]['durationcourse'])) { 461 $class .= ' duration_course'; 462 } 463 else if(isset($typesbyday[$day]['durationgroup'])) { 464 $class .= ' duration_group'; 465 } 466 else if(isset($typesbyday[$day]['durationuser'])) { 467 $class .= ' duration_user'; 468 } 469 470 // Special visual fx for today 471 if($display->thismonth && $day == $d) { 472 $class .= ' today'; 473 } else { 474 $class .= ' nottoday'; 475 } 476 477 // Just display it 478 if(!empty($class)) { 479 $class = ' class="'.trim($class).'"'; 480 } 481 echo '<td'.$class.'>'.$cell; 482 483 if(isset($eventsbyday[$day])) { 484 echo '<ul class="events-new">'; 485 foreach($eventsbyday[$day] as $eventindex) { 486 487 // If event has a class set then add it to the event <li> tag 488 $eventclass = ''; 489 if (!empty($events[$eventindex]->class)) { 490 $eventclass = ' class="'.$events[$eventindex]->class.'"'; 491 } 492 493 echo '<li'.$eventclass.'><a href="'.$dayhref.'#event_'.$events[$eventindex]->id.'">'.format_string($events[$eventindex]->name, true).'</a></li>'; 494 } 495 echo '</ul>'; 496 } 497 if(isset($durationbyday[$day])) { 498 echo '<ul class="events-underway">'; 499 foreach($durationbyday[$day] as $eventindex) { 500 echo '<li>['.format_string($events[$eventindex]->name,true).']</li>'; 501 } 502 echo '</ul>'; 503 } 504 echo "</td>\n"; 505 } 506 507 // Paddding (the last week may have blank days at the end) 508 for($i = $dayweek; $i <= $display->maxwday; ++$i) { 509 echo '<td class="nottoday"> </td>'; 510 } 511 echo "</tr>\n"; // Last row ends 512 513 echo "</table>\n"; // Tabular display of days ends 514 515 // OK, now for the filtering display 516 echo '<div class="filters"><table><tr>'; 517 518 // Global events 519 if($SESSION->cal_show_global) { 520 echo '<td class="event_global" style="width: 8px;"></td><td><strong>'.get_string('globalevents', 'calendar').':</strong> '; 521 echo get_string('shown', 'calendar').' (<a href="'.CALENDAR_URL.'set.php?var=showglobal&'.$getvars.'">'.get_string('clickhide', 'calendar').'</a>)</td>'."\n"; 522 } 523 else { 524 echo '<td style="width: 8px;"></td><td><strong>'.get_string('globalevents', 'calendar').':</strong> '; 525 echo get_string('hidden', 'calendar').' (<a href="'.CALENDAR_URL.'set.php?var=showglobal&'.$getvars.'">'.get_string('clickshow', 'calendar').'</a>)</td>'."\n"; 526 } 527 528 // Course events 529 if(!empty($SESSION->cal_show_course)) { 530 echo '<td class="event_course" style="width: 8px;"></td><td><strong>'.get_string('courseevents', 'calendar').':</strong> '; 531 echo get_string('shown', 'calendar').' (<a href="'.CALENDAR_URL.'set.php?var=showcourses&'.$getvars.'">'.get_string('clickhide', 'calendar').'</a>)</td>'."\n"; 532 } 533 else { 534 echo '<td style="width: 8px;"></td><td><strong>'.get_string('courseevents', 'calendar').':</strong> '; 535 echo get_string('hidden', 'calendar').' (<a href="'.CALENDAR_URL.'set.php?var=showcourses&'.$getvars.'">'.get_string('clickshow', 'calendar').'</a>)</td>'."\n"; 536 } 537 538 echo "</tr>\n"; 539 540 if(!empty($USER->id) && !isguest()) { 541 echo '<tr>'; 542 // Group events 543 if($SESSION->cal_show_groups) { 544 echo '<td class="event_group" style="width: 8px;"></td><td><strong>'.get_string('groupevents', 'calendar').':</strong> '; 545 echo get_string('shown', 'calendar').' (<a href="'.CALENDAR_URL.'set.php?var=showgroups&'.$getvars.'">'.get_string('clickhide', 'calendar').'</a>)</td>'."\n"; 546 } 547 else { 548 echo '<td style="width: 8px;"></td><td><strong>'.get_string('groupevents', 'calendar').':</strong> '; 549 echo get_string('hidden', 'calendar').' (<a href="'.CALENDAR_URL.'set.php?var=showgroups&'.$getvars.'">'.get_string('clickshow', 'calendar').'</a>)</td>'."\n"; 550 } 551 // User events 552 if($SESSION->cal_show_user) { 553 echo '<td class="event_user" style="width: 8px;"></td><td><strong>'.get_string('userevents', 'calendar').':</strong> '; 554 echo get_string('shown', 'calendar').' (<a href="'.CALENDAR_URL.'set.php?var=showuser&'.$getvars.'">'.get_string('clickhide', 'calendar').'</a>)</td>'."\n"; 555 } 556 else { 557 echo '<td style="width: 8px;"></td><td><strong>'.get_string('userevents', 'calendar').':</strong> '; 558 echo get_string('hidden', 'calendar').' (<a href="'.CALENDAR_URL.'set.php?var=showuser&'.$getvars.'">'.get_string('clickshow', 'calendar').'</a>)</td>'."\n"; 559 } 560 echo "</tr>\n"; 561 } 562 563 echo '</table></div>'; 564 } 565 566 function calendar_show_upcoming_events($courses, $groups, $users, $futuredays, $maxevents, $courseid) { 567 global $USER; 568 569 $events = calendar_get_upcoming($courses, $groups, $users, $futuredays, $maxevents); 570 571 $text = ''; 572 573 if(!isguest() && !empty($USER->id) && calendar_user_can_add_event()) { 574 $text.= '<div class="buttons">'; 575 $text.= '<form action="'.CALENDAR_URL.'event.php" method="get">'; 576 $text.= '<div>'; 577 $text.= '<input type="hidden" name="action" value="new" />'; 578 $text.= '<input type="hidden" name="course" value="'.$courseid.'" />'; 579 /* 580 $text.= '<input type="hidden" name="cal_m" value="'.$m.'" />'; 581 $text.= '<input type="hidden" name="cal_y" value="'.$y.'" />'; 582 */ 583 $text.= '<input type="submit" value="'.get_string('newevent', 'calendar').'" />'; 584 $text.= '</div></form></div>'; 585 } 586 587 $text .= get_string('upcomingevents', 'calendar').': '.calendar_course_filter_selector('from=upcoming'); 588 589 echo '<div class="header">'.$text.'</div>'; 590 591 if ($events) { 592 593 echo '<div class="eventlist">'; 594 foreach ($events as $event) { 595 $event->calendarcourseid = $courseid; 596 calendar_print_event($event); 597 } 598 echo '</div>'; 599 } else { 600 print_heading(get_string('noupcomingevents', 'calendar')); 601 } 602 } 603 604 function calendar_course_filter_selector($getvars = '') { 605 global $USER, $SESSION; 606 607 if (empty($USER->id) or isguest()) { 608 return ''; 609 } 610 611 if (has_capability('moodle/calendar:manageentries', get_context_instance(CONTEXT_SYSTEM)) && !empty($CFG->calendar_adminseesall)) { 612 $courses = get_courses('all', 'c.shortname','c.id,c.shortname'); 613 } else { 614 $courses = get_my_courses($USER->id, 'shortname'); 615 } 616 617 unset($courses[SITEID]); 618 619 $courseoptions[SITEID] = get_string('fulllistofcourses'); 620 foreach ($courses as $course) { 621 $courseoptions[$course->id] = format_string($course->shortname); 622 } 623 624 if (is_numeric($SESSION->cal_courses_shown)) { 625 $selected = $SESSION->cal_courses_shown; 626 } else { 627 $selected = ''; 628 } 629 630 return popup_form(CALENDAR_URL.'set.php?var=setcourse&'.$getvars.'&id=', 631 $courseoptions, 'cal_course_flt', $selected, '', '', '', true); 632 } 633 634 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Wed Jan 14 11:33:29 2009 | Cross-referenced by PHPXref 0.7 |