diff --git a/course/format/renderer.php b/course/format/renderer.php index 8de249c6286..b7c0e21a5a6 100644 --- a/course/format/renderer.php +++ b/course/format/renderer.php @@ -296,7 +296,7 @@ abstract class format_section_renderer_base extends plugin_renderer_base { $o.= html_writer::start_tag('div', array('class' => 'summarytext')); $o.= $this->format_summary_text($section); $o.= html_writer::end_tag('div'); - $o.= $this->section_activity_summary($section, $mods); + $o.= $this->section_activity_summary($section, $course, $mods); $o.= $this->section_availability_message($section); @@ -310,16 +310,21 @@ abstract class format_section_renderer_base extends plugin_renderer_base { * Generate a summary of the activites in a section * * @param stdClass $section The course_section entry from DB + * @param stdClass $course the course record from DB * @param array $mods course modules indexed by id (from get_all_mods) * @return string HTML to output. */ - private function section_activity_summary($section, $mods) { + private function section_activity_summary($section, $course, $mods) { if (empty($section->sequence)) { return ''; } // Generate array with count of activities in this section: $sectionmods = array(); + $total = 0; + $complete = 0; + $cancomplete = isloggedin() && !isguestuser(); + $completioninfo = new completion_info($course); $modsequence = explode(',', $section->sequence); foreach ($modsequence as $cmid) { $thismod = $mods[$cmid]; @@ -336,6 +341,13 @@ abstract class format_section_renderer_base extends plugin_renderer_base { $sectionmods[$thismod->modname]['name'] = $thismod->modplural; $sectionmods[$thismod->modname]['count'] = 1; } + if ($cancomplete && $completioninfo->is_enabled($thismod) != COMPLETION_TRACKING_NONE) { + $total++; + $completiondata = $completioninfo->get_data($thismod, true); + if ($completiondata->completionstate == COMPLETION_COMPLETE) { + $complete++; + } + } } } @@ -353,6 +365,18 @@ abstract class format_section_renderer_base extends plugin_renderer_base { $o.= html_writer::end_tag('span'); } $o.= html_writer::end_tag('div'); + + // Output section completion data + if ($total > 0) { + $a = new stdClass; + $a->complete = $complete; + $a->total = $total; + + $o.= html_writer::start_tag('div', array('class' => 'section-summary-activities mdl-right')); + $o.= html_writer::tag('span', get_string('progresstotal', 'completion', $a), array('class' => 'activity-count')); + $o.= html_writer::end_tag('div'); + } + return $o; } diff --git a/lang/en/completion.php b/lang/en/completion.php index f1de5c03037..0683c79b85b 100644 --- a/lang/en/completion.php +++ b/lang/en/completion.php @@ -78,6 +78,7 @@ $string['err_system'] = 'An internal error occurred in the completion system. (S $string['excelcsvdownload'] = 'Download in Excel-compatible format (.csv)'; $string['progress'] = 'Student progress'; $string['progress-title'] = '{$a->user}, {$a->activity}: {$a->state} {$a->date}'; +$string['progresstotal'] = 'Progress: {$a->complete} / {$a->total}'; $string['reportpage'] = 'Showing users {$a->from} to {$a->to} of {$a->total}.'; $string['restoringcompletiondata'] = 'Writing completion data'; $string['saved'] = 'Saved';