diff --git a/blocks/calendar_upcoming/block_calendar_upcoming.php b/blocks/calendar_upcoming/block_calendar_upcoming.php index 1655178a097..a3872948b8d 100644 --- a/blocks/calendar_upcoming/block_calendar_upcoming.php +++ b/blocks/calendar_upcoming/block_calendar_upcoming.php @@ -60,7 +60,9 @@ class block_calendar_upcoming extends block_base { $events = calendar_get_upcoming($courses, $group, $user, $lookahead, $maxevents); if (!empty($this->instance)) { - $this->content->text = calendar_get_block_upcoming($events, 'view.php?view=day&course='.$courseshown.'&'); + $link = 'view.php?view=day&course='.$courseshown.'&'; + $showcourselink = ($this->page->course->id == SITEID); + $this->content->text = calendar_get_block_upcoming($events, $link, $showcourselink); } if (empty($this->content->text)) { diff --git a/calendar/lib.php b/calendar/lib.php index 50ef3a6877e..56bca141657 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -607,6 +607,29 @@ function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxeve return $output; } + +/** + * Get a HTML link to a course + * + * @param int $courseid the course id + * @return string a link to the course (as HTML); empty if the course id is invalid + */ +function calendar_get_courselink($courseid) { + + if (!$courseid) { + return ''; + } + + calendar_get_course_cached($coursecache, $courseid); + $context = context_course::instance($courseid); + $fullname = format_string($coursecache[$courseid]->fullname, true, array('context' => $context)); + $url = new moodle_url('/course/view.php', array('id' => $courseid)); + $link = html_writer::link($url, $fullname); + + return $link; +} + + /** * Add calendar event metadata * @@ -638,29 +661,21 @@ function calendar_add_event_metadata($event) { } $icon = $OUTPUT->pix_url('icon', $event->modulename) . ''; - $context = context_course::instance($module->course); - $fullname = format_string($coursecache[$module->course]->fullname, true, array('context' => $context)); - $event->icon = ''.$eventtype.''; $event->referer = ''.$event->name.''; - $event->courselink = ''.$fullname.''; + $event->courselink = calendar_get_courselink($module->course); $event->cmid = $module->id; - } else if($event->courseid == SITEID) { // Site event $event->icon = ''.get_string('globalevent', 'calendar').''; $event->cssclass = 'calendar_event_global'; } else if($event->courseid != 0 && $event->courseid != SITEID && $event->groupid == 0) { // Course event - calendar_get_course_cached($coursecache, $event->courseid); - - $context = context_course::instance($event->courseid); - $fullname = format_string($coursecache[$event->courseid]->fullname, true, array('context' => $context)); - $event->icon = ''.get_string('courseevent', 'calendar').''; - $event->courselink = ''.$fullname.''; + $event->courselink = calendar_get_courselink($event->courseid); $event->cssclass = 'calendar_event_course'; } else if ($event->groupid) { // Group event $event->icon = ''.get_string('groupevent', 'calendar').''; + $event->courselink = calendar_get_courselink($event->courseid); $event->cssclass = 'calendar_event_group'; } else if($event->userid) { // User event $event->icon = ''.get_string('userevent', 'calendar').''; @@ -1193,9 +1208,10 @@ function calendar_days_in_month($month, $year) { * * @param array $events list of events * @param moodle_url|string $linkhref link to event referer + * @param boolean $showcourselink whether links to courses should be shown * @return string|null $content html block content */ -function calendar_get_block_upcoming($events, $linkhref = NULL) { +function calendar_get_block_upcoming($events, $linkhref = NULL, $showcourselink = false) { $content = ''; $lines = count($events); if (!$lines) { @@ -1223,6 +1239,9 @@ function calendar_get_block_upcoming($events, $linkhref = NULL) { } } $events[$i]->time = str_replace('»', '
»', $events[$i]->time); + if ($showcourselink && !empty($events[$i]->courselink)) { + $content .= html_writer::div($events[$i]->courselink, 'course'); + } $content .= '
'.$events[$i]->time.'
'; if ($i < $lines - 1) $content .= '
'; }