Commit 0dbd2594 authored by Dan Poltawski's avatar Dan Poltawski
Browse files

Merge branch 'MDL-48165-28-dimgrades' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE

parents 0c73e533 fa36f1d1
......@@ -80,6 +80,23 @@ class workshop_edit_strategy_form extends moodleform {
$mform->closeHeaderBefore('buttonar');
}
/**
* Validate the submitted form data.
*
* Grading strategy plugins can provide their own validation rules by
* overriding the {@link self::validation_inner()} method.
*
* @param array $data
* @param array $files
* @return array
*/
final public function validation($data, $files) {
return array_merge(
parent::validation($data, $files),
$this->validation_inner($data, $files)
);
}
/**
* Add any strategy specific form fields.
*
......@@ -89,4 +106,14 @@ class workshop_edit_strategy_form extends moodleform {
// By default, do nothing.
}
/**
* Add strategy specific validation rules.
*
* @param array $data
* @param array $files
* @return array
*/
protected function validation_inner($data, $files) {
return array();
}
}
......@@ -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';
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment