Merge branch 'MDL-48165-master-dimgrades' of git://github.com/mudrd8mz/moodle
This commit is contained in:
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user