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 = '';
$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 = '
';
$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 = '
';
- $event->courselink = ''.$fullname.'';
+ $event->courselink = calendar_get_courselink($event->courseid);
$event->cssclass = 'calendar_event_course';
} else if ($event->groupid) { // Group event
$event->icon = '
';
+ $event->courselink = calendar_get_courselink($event->courseid);
$event->cssclass = 'calendar_event_group';
} else if($event->userid) { // User event
$event->icon = '
';
@@ -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 .= '