From 22c0da5fa3f4c864c707416b586c8314b994514e Mon Sep 17 00:00:00 2001 From: Andreas Schenkel Date: Sat, 22 Oct 2022 17:45:18 +0200 Subject: [PATCH 1/3] CONTRIB-9114 add feature to order by name of activitys --- classes/completion_progress.php | 19 +++++++++++++++++++ edit_form.php | 2 ++ lang/en/block_completion_progress.php | 1 + 3 files changed, 22 insertions(+) diff --git a/classes/completion_progress.php b/classes/completion_progress.php index 8577795091..f2315430a0 100644 --- a/classes/completion_progress.php +++ b/classes/completion_progress.php @@ -49,6 +49,11 @@ class completion_progress implements \renderable { */ const ORDERBY_TIME = 'orderbytime'; + /** + * Sort activities by title. + */ + const ORDERBY_NAME = 'orderbyname'; + /** * The course. * @var object @@ -414,6 +419,20 @@ private function sorter_orderbytime($a, $b): int { } } + /** + * Used to compare two activity entries based on activityname. + * + * @param array $a + * @param array $b + * @return integer + */ + private function sorter_orderbyname($a, $b): int { + if ($a->section != $b->section) { + return $a->section <=> $b->section; + } else { + return $a->name <=> $b->name; + } + } /** * Loads activities with completion set in current course. diff --git a/edit_form.php b/edit_form.php index bbe1b9b259..c65caf92ba 100644 --- a/edit_form.php +++ b/edit_form.php @@ -62,6 +62,8 @@ protected function specific_definition($mform) { 'block_completion_progress', $expectedbystring), completion_progress::ORDERBY_COURSE => get_string('config_orderby_course_order', 'block_completion_progress'), + completion_progress::ORDERBY_NAME => get_string('config_orderby_name', + 'block_completion_progress'), ); $label = get_string('config_orderby', 'block_completion_progress'); $mform->addElement('select', 'config_orderby', $label, $options); diff --git a/lang/en/block_completion_progress.php b/lang/en/block_completion_progress.php index d20fdfedef..221434f01a 100644 --- a/lang/en/block_completion_progress.php +++ b/lang/en/block_completion_progress.php @@ -41,6 +41,7 @@ $string['config_orderby'] = 'Order bar by'; $string['config_orderby_course_order'] = 'Ordering in course'; $string['config_orderby_due_time'] = 'Time using "{$a}" date'; +$string['config_orderby_name'] = 'Name of activity'; $string['config_percentage'] = 'Show percentage to students'; $string['config_scroll'] = 'Scroll'; $string['config_selectactivities'] = 'Select activities'; From c01be1d4a29d858794a5e67260fa14aad79a1ffe Mon Sep 17 00:00:00 2001 From: Andreas Schenkel Date: Sat, 22 Oct 2022 18:11:00 +0200 Subject: [PATCH 2/3] not need to look for section if sorting by name --- classes/completion_progress.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/classes/completion_progress.php b/classes/completion_progress.php index f2315430a0..9afb5fd604 100644 --- a/classes/completion_progress.php +++ b/classes/completion_progress.php @@ -50,7 +50,7 @@ class completion_progress implements \renderable { const ORDERBY_TIME = 'orderbytime'; /** - * Sort activities by title. + * Sort activities by name. */ const ORDERBY_NAME = 'orderbyname'; @@ -427,11 +427,7 @@ private function sorter_orderbytime($a, $b): int { * @return integer */ private function sorter_orderbyname($a, $b): int { - if ($a->section != $b->section) { - return $a->section <=> $b->section; - } else { - return $a->name <=> $b->name; - } + return $a->name <=> $b->name; } /** From dada7bc69a9fc4017093b3c624f25931da436ba8 Mon Sep 17 00:00:00 2001 From: Andreas Schenkel Date: Sun, 23 Oct 2022 09:16:55 +0200 Subject: [PATCH 3/3] also be able to sort by idnumber --- edit_form.php | 2 ++ lang/en/block_completion_progress.php | 1 + 2 files changed, 3 insertions(+) diff --git a/edit_form.php b/edit_form.php index c65caf92ba..254fc7772a 100644 --- a/edit_form.php +++ b/edit_form.php @@ -64,6 +64,8 @@ protected function specific_definition($mform) { 'block_completion_progress'), completion_progress::ORDERBY_NAME => get_string('config_orderby_name', 'block_completion_progress'), + completion_progress::ORDERBY_IDNUMBER => get_string('config_orderby_idnumber', + 'block_completion_progress'), ); $label = get_string('config_orderby', 'block_completion_progress'); $mform->addElement('select', 'config_orderby', $label, $options); diff --git a/lang/en/block_completion_progress.php b/lang/en/block_completion_progress.php index 221434f01a..66158a109f 100644 --- a/lang/en/block_completion_progress.php +++ b/lang/en/block_completion_progress.php @@ -42,6 +42,7 @@ $string['config_orderby_course_order'] = 'Ordering in course'; $string['config_orderby_due_time'] = 'Time using "{$a}" date'; $string['config_orderby_name'] = 'Name of activity'; +$string['config_orderby_idnumber'] = 'IDNumber of activity'; $string['config_percentage'] = 'Show percentage to students'; $string['config_scroll'] = 'Scroll'; $string['config_selectactivities'] = 'Select activities';