MDL-48165 workshop: Validate the rubric editing form

This commit is contained in:
David Mudrák
2015-09-01 23:37:20 +02:00
parent b962ae1f41
commit eb013fc8bf
2 changed files with 45 additions and 0 deletions
+44
View File
@@ -103,4 +103,48 @@ class workshop_edit_rubric_strategy_form extends workshop_edit_strategy_form {
$mform->setDefault('config_layout', 'list');
$this->set_data($current);
}
/**
* Provide validation rules for the rubric editor form.
*
* @param array $data
* @param array $files
* @return array
*/
protected function validation_inner($data, $files) {
$errors = array();
// Iterate over all submitted dimensions (criteria).
for ($i = 0; isset($data['dimensionid__idx_'.$i]); $i++) {
$dimgrades = array();
if (0 == strlen(trim($data['description__idx_'.$i.'_editor']['text']))) {
// The description text is empty and this criterion will be deleted.
continue;
}
// Make sure the levels grades are unique within the criterion.
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;
}
$levelgrade = $data['grade__idx_'.$i.'__idy_'.$j];
if (isset($dimgrades[$levelgrade])) {
// This grade has already been set for another level.
$k = $dimgrades[$levelgrade];
$errors['level__idx_'.$i.'__idy_'.$j] = $errors['level__idx_'.$i.'__idy_'.$k] = get_string('mustbeunique',
'workshopform_rubric');
} else {
$dimgrades[$levelgrade] = $j;
}
}
}
return $errors;
}
}
@@ -33,5 +33,6 @@ $string['layoutgrid'] = 'Grid';
$string['layoutlist'] = 'List';
$string['levelgroup'] = 'Level grade and definition';
$string['levels'] = 'Levels';
$string['mustbeunique'] = 'Level grades must be unique within a criterion';
$string['mustchooseone'] = 'You have to select one of these items';
$string['pluginname'] = 'Rubric';