diff --git a/admin/settings/courses.php b/admin/settings/courses.php
index cf9b286ea8c..40063a6d2fe 100644
--- a/admin/settings/courses.php
+++ b/admin/settings/courses.php
@@ -121,6 +121,9 @@ if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) {
$temp->add(new admin_setting_configselect('moodlecourse/showreports', new lang_string('showreports'), '', 0,
array(0 => new lang_string('no'), 1 => new lang_string('yes'))));
+ $temp->add(new admin_setting_configcheckbox('moodlecourse/showcourseimages', get_string('showcourseimages'),
+ get_string('showcourseimages_desc'), 1));
+
// Files and uploads.
$temp->add(new admin_setting_heading('filesanduploadshdr', new lang_string('filesanduploads'), ''));
@@ -155,7 +158,6 @@ if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) {
$ADMIN->add('courses', $temp);
-
// "courserequests" settingpage.
$temp = new admin_settingpage('courserequest', new lang_string('courserequest'));
$temp->add(new admin_setting_configcheckbox('enablecourserequests', new lang_string('enablecourserequests', 'admin'), new lang_string('configenablecourserequests', 'admin'), 0));
diff --git a/lang/en/moodle.php b/lang/en/moodle.php
index 6fbf005401e..b419eb6f148 100644
--- a/lang/en/moodle.php
+++ b/lang/en/moodle.php
@@ -326,6 +326,7 @@ $string['courseformatdata'] = 'Course format data';
$string['courseformats'] = 'Course formats';
$string['courseformatoptions'] = 'Formatting options for {$a}';
$string['courseformatudpate'] = 'Update format';
+$string['courseheaderimage'] = 'Course header image';
$string['courseprofiles'] = 'Course profiles';
$string['coursepreferences'] = 'Course preferences';
$string['coursegrades'] = 'Course grades';
@@ -1821,6 +1822,8 @@ $string['showallusers'] = 'Show all users';
$string['showblockcourse'] = 'Show list of courses containing block';
$string['showcategory'] = 'Show {$a}';
$string['showchartdata'] = 'Show chart data';
+$string['showcourseimages'] = 'Show course images';
+$string['showcourseimages_desc'] = 'Show the course image or image placeholder in the course header.';
$string['showcomments'] = 'Show/hide comments';
$string['showcommentsnonjs'] = 'Show comments';
$string['showdescription'] = 'Display description on course page';
diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php
index 6ec46a8b503..c51d19403a7 100644
--- a/lib/db/upgrade.php
+++ b/lib/db/upgrade.php
@@ -2565,5 +2565,11 @@ function xmldb_main_upgrade($oldversion) {
upgrade_main_savepoint(true, 2018101800.00);
}
+ if ($oldversion < 2018101900.01) {
+ // Show course images by default.
+ set_config('showcourseimages', 1, 'moodlecourse');
+ upgrade_main_savepoint(true, 2018101900.01);
+ }
+
return true;
}
diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php
index a0748576b64..1379d2c883b 100644
--- a/lib/outputrenderers.php
+++ b/lib/outputrenderers.php
@@ -4141,7 +4141,7 @@ EOD;
}
public function context_header($headerinfo = null, $headinglevel = 1) {
- global $DB, $USER, $CFG;
+ global $DB, $USER, $CFG, $COURSE;
require_once($CFG->dirroot . '/user/lib.php');
$context = $this->page->context;
$heading = null;
@@ -4152,6 +4152,14 @@ EOD;
if (isset($headerinfo['heading'])) {
$heading = $headerinfo['heading'];
}
+
+ // Show a course image if enabled.
+ if ($context->contextlevel == CONTEXT_COURSE && get_config('moodlecourse', 'showcourseimages')) {
+ $exporter = new core_course\external\course_summary_exporter($COURSE, ['context' => $context]);
+ $courseinfo = $exporter->export($this);
+ $imagedata = $this->render_from_template('core/course_header_image', $courseinfo);
+ }
+
// The user context currently has images and buttons. Other contexts may follow.
if (isset($headerinfo['user']) || $context->contextlevel == CONTEXT_USER) {
if (isset($headerinfo['user'])) {
diff --git a/lib/templates/course_header_image.mustache b/lib/templates/course_header_image.mustache
new file mode 100644
index 00000000000..52ab679b126
--- /dev/null
+++ b/lib/templates/course_header_image.mustache
@@ -0,0 +1,29 @@
+{{!
+ This file is part of Moodle - http://moodle.org/
+
+ Moodle is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Moodle is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Moodle. If not, see