diff --git a/admin/settings/courses.php b/admin/settings/courses.php index cf9b286ea8ccf..40063a6d2fe34 100644 --- a/admin/settings/courses.php +++ b/admin/settings/courses.php @@ -121,6 +121,9 @@ $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 @@ $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 163e3d89671fd..2a4bb15f62a22 100644 --- a/lang/en/moodle.php +++ b/lang/en/moodle.php @@ -327,6 +327,7 @@ $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'; @@ -1822,6 +1823,8 @@ $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 c57dcf877de32..a8bc03c014edb 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2666,5 +2666,11 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2018102900.00); } + if ($oldversion < 2018102900.01) { + // Show course images by default. + set_config('showcourseimages', 1, 'moodlecourse'); + upgrade_main_savepoint(true, 2018102900.01); + } + return true; } diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php index 3db13c777cc06..c3fd597f3f577 100644 --- a/lib/outputrenderers.php +++ b/lib/outputrenderers.php @@ -4153,7 +4153,7 @@ public function render_preferences_group(preferences_group $renderable) { } 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; @@ -4164,6 +4164,14 @@ public function context_header($headerinfo = null, $headinglevel = 1) { 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 0000000000000..52ab679b12654 --- /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 . +}} +{{! + @template core/course_header_image + + Example context (json): + { + "courseimage": "http://domain.name/pluginfile.php/123/course/overviewfiles/kitten.jpg" + } +}} +
+
+
{{#str}}courseheaderimage, core{{/str}}
+
+
\ No newline at end of file diff --git a/theme/boost/scss/moodle/course.scss b/theme/boost/scss/moodle/course.scss index 0bc6d4ca78a1a..00cc1e6b69ce4 100644 --- a/theme/boost/scss/moodle/course.scss +++ b/theme/boost/scss/moodle/course.scss @@ -1139,6 +1139,15 @@ span.editinstructions { opacity: 0.5; } +.course-header-image-wrapper { + width: 100px; + height: 100px; + .course-header-image { + background-size: cover; + background-position: center; + } +} + /** * Display sizes: * Large displays 1200 + diff --git a/theme/boost/style/moodle.css b/theme/boost/style/moodle.css index f57b313e34062..a0e4db7f0062b 100644 --- a/theme/boost/style/moodle.css +++ b/theme/boost/style/moodle.css @@ -12342,6 +12342,13 @@ span.editinstructions { .course-being-dragged { opacity: 0.5; } +.course-header-image-wrapper { + width: 100px; + height: 100px; } + .course-header-image-wrapper .course-header-image { + background-size: cover; + background-position: center; } + /** * Display sizes: * Large displays 1200 + diff --git a/theme/bootstrapbase/less/moodle/course.less b/theme/bootstrapbase/less/moodle/course.less index 9c26f9a228f44..0b0dcebc05e64 100644 --- a/theme/bootstrapbase/less/moodle/course.less +++ b/theme/bootstrapbase/less/moodle/course.less @@ -1124,6 +1124,17 @@ span.editinstructions { .opacity(50); } +.course-header-image-wrapper { + width: 100px; + height: 100px; + .course-header-image { + width: 100%; + height: 100%; + background-size: cover; + background-position: center; + } +} + /** * Display sizes: * Large displays 1200 + diff --git a/theme/bootstrapbase/style/moodle.css b/theme/bootstrapbase/style/moodle.css index addbb44b864d8..2fd008a28561e 100644 --- a/theme/bootstrapbase/style/moodle.css +++ b/theme/bootstrapbase/style/moodle.css @@ -7004,6 +7004,16 @@ span.editinstructions { opacity: 0.5; filter: alpha(opacity=50); } +.course-header-image-wrapper { + width: 100px; + height: 100px; +} +.course-header-image-wrapper .course-header-image { + width: 100%; + height: 100%; + background-size: cover; + background-position: center; +} /** * Display sizes: * Large displays 1200 + diff --git a/version.php b/version.php index a9deb92823aaa..ddcf92156c9e1 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2018102900.00; // YYYYMMDD = weekly release date of this DEV branch. +$version = 2018102900.01; // YYYYMMDD = weekly release date of this DEV branch. // RR = release increments - 00 in DEV branches. // .XX = incremental changes.