From 7b9593adffdfc97e007172b160905df8372b7b4c Mon Sep 17 00:00:00 2001 From: DegrangeM <53106394+DegrangeM@users.noreply.github.com> Date: Mon, 15 Jun 2020 19:18:38 +0200 Subject: [PATCH 1/2] Add section filter to overview Fix #59 --- edit_form.php | 2 +- lang/en/block_completion_progress.php | 1 + lib.php | 5 +++-- overview.php | 20 +++++++++++++++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/edit_form.php b/edit_form.php index a22765c40b4..d0273a9144b 100644 --- a/edit_form.php +++ b/edit_form.php @@ -37,7 +37,7 @@ class block_completion_progress_edit_form extends block_edit_form { protected function specific_definition($mform) { global $COURSE, $OUTPUT; - $activities = block_completion_progress_get_activities($COURSE->id, null, 'orderbycourse'); + $activities = block_completion_progress_get_activities($COURSE->id, null, null, 'orderbycourse'); $numactivies = count($activities); // The My home version is not configurable. diff --git a/lang/en/block_completion_progress.php b/lang/en/block_completion_progress.php index c95b4ae2d14..df59fa0adb2 100644 --- a/lang/en/block_completion_progress.php +++ b/lang/en/block_completion_progress.php @@ -22,6 +22,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ +$string['allsections'] = 'All sections'; $string['completed_colour'] = '#73A839'; $string['completed_colour_descr'] = 'HTML Colour code for elements that have been completed'; $string['completed_colour_title'] = 'Completed colour'; diff --git a/lib.php b/lib.php index fb80c652d9e..9e90185a1fa 100644 --- a/lib.php +++ b/lib.php @@ -169,7 +169,7 @@ function block_completion_progress_modules_with_alternate_links() { * @param string forceorder An override for the course order setting * @return array Activities with completion settings in the course */ -function block_completion_progress_get_activities($courseid, $config = null, $forceorder = null) { +function block_completion_progress_get_activities($courseid, $config = null, $section = null, $forceorder = null) { $modinfo = get_fast_modinfo($courseid, -1); $sections = $modinfo->get_sections(); $activities = array(); @@ -182,7 +182,8 @@ function block_completion_progress_get_activities($courseid, $config = null, $fo !isset($config->activitiesincluded) || ( $config->activitiesincluded != 'selectedactivities' || !empty($config->selectactivities) && - in_array($module.'-'.$cm->instance, $config->selectactivities)))) + in_array($module.'-'.$cm->instance, $config->selectactivities)))) && ( + empty($section) || $cm->section == $section) ) { $activities[] = array ( 'type' => $module, diff --git a/overview.php b/overview.php index 0ddb07fb453..9c898055762 100644 --- a/overview.php +++ b/overview.php @@ -40,6 +40,7 @@ $page = optional_param('page', 0, PARAM_INT); // Which page to show. $perpage = optional_param('perpage', DEFAULT_PAGE_SIZE, PARAM_INT); // How many per page. $group = optional_param('group', 0, PARAM_ALPHANUMEXT); // Group selected. +$section = optional_param('section', 0, PARAM_INT); // Section selected. // Determine course and context. $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST); @@ -83,6 +84,7 @@ 'page' => $page, 'perpage' => $perpage, 'group' => $group, + 'section' => $section, 'sesskey' => sesskey(), 'role' => $roleselected, ) @@ -105,7 +107,7 @@ echo $OUTPUT->container_start('block_completion_progress'); // Check if activities/resources have been selected in config. -$activities = block_completion_progress_get_activities($courseid, $config); +$activities = block_completion_progress_get_activities($courseid, $config, $section); if ($activities == null) { echo get_string('no_activities_message', 'block_completion_progress'); echo $OUTPUT->container_end(); @@ -169,6 +171,22 @@ } echo ' ' . get_string('role') . ' '; echo $OUTPUT->single_select($PAGE->url, 'role', $rolestodisplay, $roleselected); + +// Output the sections menu. +$sql = "SELECT DISTINCT s.id, s.section + FROM {course_sections} s + WHERE s.course = :courseid + AND s.sequence <> ''"; +$params = array('courseid' => $courseid); +$sectionrecords = $DB->get_records_sql($sql, $params); +$sections = array_values($sectionrecords); +$numberofsections = count($sections); +$sectionstodisplay = array(0 => get_string('allsections', 'block_completion_progress')); +for ($i = 0; $i < $numberofsections; $i++) { + $sectionstodisplay[$sections[$i]->id] = get_section_name($courseid, $sections[$i]->section); +} +echo ' ' .get_string('section') . ' '; +echo $OUTPUT->single_select($PAGE->url, 'section', $sectionstodisplay, $section); echo $OUTPUT->container_end(); // Apply group restrictions. From fc80065f422e46cdc34cd2965a5c35506e934785 Mon Sep 17 00:00:00 2001 From: DegrangeM <53106394+DegrangeM@users.noreply.github.com> Date: Mon, 15 Jun 2020 19:37:43 +0200 Subject: [PATCH 2/2] Fix case where section only contain filtered out activities This allow to still show the menu to switch section --- overview.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/overview.php b/overview.php index 9c898055762..84ceacd462e 100644 --- a/overview.php +++ b/overview.php @@ -108,13 +108,13 @@ // Check if activities/resources have been selected in config. $activities = block_completion_progress_get_activities($courseid, $config, $section); -if ($activities == null) { +if ($activities == null && empty($section)) { echo get_string('no_activities_message', 'block_completion_progress'); echo $OUTPUT->container_end(); echo $OUTPUT->footer(); die(); } -if (empty($activities)) { +if (empty($activities) && empty($section)) { echo get_string('no_visible_activities_message', 'block_completion_progress'); echo $OUTPUT->container_end(); echo $OUTPUT->footer();