From 2fa0109fbf29bca1c846fea3e01a49a068141658 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Fri, 10 Nov 2017 10:20:00 +0800 Subject: [PATCH] MDL-52838 workshop: Each criterion > 0 levels Add validation to the edit assessment form so each criterion in a rubric requires at least one level. --- mod/workshop/form/rubric/edit_form.php | 5 +++++ mod/workshop/form/rubric/lang/en/workshopform_rubric.php | 1 + 2 files changed, 6 insertions(+) diff --git a/mod/workshop/form/rubric/edit_form.php b/mod/workshop/form/rubric/edit_form.php index 85af10c6e59..5dcf4e1d441 100644 --- a/mod/workshop/form/rubric/edit_form.php +++ b/mod/workshop/form/rubric/edit_form.php @@ -126,11 +126,13 @@ class workshop_edit_rubric_strategy_form extends workshop_edit_strategy_form { } // Make sure the levels grades are unique within the criterion. + $atleastonelevel = false; for ($j = 0; isset($data['levelid__idx_'.$i.'__idy_'.$j]); $j++) { if (0 == strlen(trim($data['definition__idx_'.$i.'__idy_'.$j]))) { // The level definition is empty and will not be saved. continue; } + $atleastonelevel = true; $levelgrade = $data['grade__idx_'.$i.'__idy_'.$j]; @@ -143,6 +145,9 @@ class workshop_edit_rubric_strategy_form extends workshop_edit_strategy_form { $dimgrades[$levelgrade] = $j; } } + if (!$atleastonelevel) { + $errors['level__idx_'.$i.'__idy_0'] = get_string('mustdefinelevel', 'workshopform_rubric'); + } } return $errors; diff --git a/mod/workshop/form/rubric/lang/en/workshopform_rubric.php b/mod/workshop/form/rubric/lang/en/workshopform_rubric.php index 3785c4f94ad..d62860fc1c8 100644 --- a/mod/workshop/form/rubric/lang/en/workshopform_rubric.php +++ b/mod/workshop/form/rubric/lang/en/workshopform_rubric.php @@ -34,5 +34,6 @@ $string['layoutlist'] = 'List'; $string['levelgroup'] = 'Level grade and definition'; $string['levels'] = 'Levels'; $string['mustbeunique'] = 'Level grades must be unique within a criterion'; +$string['mustdefinelevel'] = 'At least one level is required'; $string['mustchooseone'] = 'You have to select one of these items'; $string['pluginname'] = 'Rubric';