diff --git a/course/classes/output/cm_format.php b/course/classes/output/cm_format.php index 1ae369554b4..1cd35a7f1ef 100644 --- a/course/classes/output/cm_format.php +++ b/course/classes/output/cm_format.php @@ -24,13 +24,14 @@ namespace core_course\output; -use core_course\course_format; -use section_info; -use completion_info; -use renderable; -use templatable; use cm_info; +use core\activity_dates; +use core_completion\cm_completion_details; +use core_course\course_format; +use renderable; +use section_info; use stdClass; +use templatable; /** * Base class to render a course module inside a course format. @@ -82,20 +83,26 @@ class cm_format implements renderable, templatable { * @return stdClass data context for a mustache template */ public function export_for_template(\renderer_base $output): stdClass { + global $USER; + $format = $this->format; - $course = $format->get_course(); $mod = $this->mod; $displayoptions = $this->displayoptions; + $course = $mod->get_course(); + $completiondetails = cm_completion_details::get_instance($mod, $USER->id, $course->showcompletionconditions); + $activitydates = []; + if ($course->showactivitydates) { + $activitydates = activity_dates::get_dates_for_module($mod, $USER->id); + } + $activityinfo = new activity_information($mod, $completiondetails, $activitydates); $data = (object)[ 'cmname' => $output->course_section_cm_name($mod, $displayoptions), 'afterlink' => $mod->afterlink, 'altcontent' => $output->course_section_cm_text($mod, $displayoptions), 'availability' => $output->course_section_cm_availability($mod, $displayoptions), 'url' => $mod->url, - 'completion' => $output->course_section_cm_completion( - $course, $this->completioninfo, $mod, $displayoptions - ), + 'activityinfo' => $activityinfo->export_for_template($output), ]; if (!empty($mod->indent)) { @@ -125,7 +132,7 @@ class cm_format implements renderable, templatable { $data->moveicon = course_get_cm_move($mod, $returnsection); } - if (!empty($data->completion) || !empty($data->extras)) { + if (!empty($data->extras)) { $data->hasextras = true; } diff --git a/course/classes/output/section_format/cmitem.php b/course/classes/output/section_format/cmitem.php index 6a6bc5eb3a7..07b43152984 100644 --- a/course/classes/output/section_format/cmitem.php +++ b/course/classes/output/section_format/cmitem.php @@ -89,12 +89,19 @@ class cmitem implements renderable, templatable { $data = new stdClass(); $data->cms = []; + $showactivityconditions = $course->showcompletionconditions == COMPLETION_SHOW_CONDITIONS; + $showactivitydates = !empty($course->showactivitydates); + + // This will apply styles to the course homepage when the activity information output component is displayed. + $hasinfo = $showactivityconditions || $showactivitydates; + $item = new $this->cmclass($format, $this->section, $completioninfo, $mod, $this->displayoptions); return (object)[ 'id' => $mod->id, 'module' => $mod->modname, 'extraclasses' => $mod->extraclasses, 'cmformat' => $item->export_for_template($output), + 'hasinfo' => $hasinfo, ]; } } diff --git a/course/renderer.php b/course/renderer.php index fce2e5ff714..e40d95d8698 100644 --- a/course/renderer.php +++ b/course/renderer.php @@ -848,14 +848,6 @@ class core_course_renderer extends plugin_renderer_base { * * @deprecated since 4.0 - use core_course output components instead. * - * This function calls: - * {@link core_course_renderer::course_section_cm_name()} - * {@link core_course_renderer::course_section_cm_text()} - * {@link core_course_renderer::course_section_cm_availability()} - * {@link core_course_renderer::course_section_cm_completion()} - * {@link course_get_cm_edit_actions()} - * {@link core_course_renderer::course_section_cm_edit_actions()} - * * @param stdClass $course * @param completion_info $completioninfo * @param cm_info $mod diff --git a/course/templates/local/cm_format.mustache b/course/templates/local/cm_format.mustache index 0e905d36d55..78fa35ad901 100644 --- a/course/templates/local/cm_format.mustache +++ b/course/templates/local/cm_format.mustache @@ -28,9 +28,17 @@ "afterlink": "30 unread messages", "hasextras": true, "extras": ["[extras]"], - "completion": "Completed!", + "activityinfo": { + "activityname": "Activity example", + "hascompletion": true, + "uservisible": true, + "hasdates": true, + "isautomatic": true, + "istrackeduser": true, + "activitydates": [{ "label": "Opens:", "timestamp": 1293876000 }], + "completiondetails": [{ "statusincomplete": 1, "description": "Receive a grade" }] + }, "availability": "