Skip to content

Commit

Permalink
MDL-48165 workshop: Validate the rubric editing form
Browse files Browse the repository at this point in the history
  • Loading branch information
mudrd8mz committed Sep 1, 2015
1 parent 95778c3 commit a0c74d2
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
44 changes: 44 additions & 0 deletions mod/workshop/form/rubric/edit_form.php
Expand Up @@ -103,4 +103,48 @@ protected function definition_inner(&$mform) {
$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;
}
}
1 change: 1 addition & 0 deletions mod/workshop/form/rubric/lang/en/workshopform_rubric.php
Expand Up @@ -33,5 +33,6 @@
$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';

0 comments on commit a0c74d2

Please sign in to comment.