MDL-82090 completion: account for alternate gradepass form fields.

Some modules (e.g. Workshop) have "*gradepass" fields for each grade
item, which should be accounted for when trying to freeze them.
This commit is contained in:
Paul Holden
2024-07-04 10:00:32 +01:00
parent 5aef789ac6
commit ec57300048
+13 -2
View File
@@ -484,9 +484,20 @@ trait form_trait {
$mform->freeze($completionpassgradeel);
// Has the completion pass grade completion criteria been set? If it has, then we shouldn't change
// the gradepass field.
// any of the modules "gradepass" type fields.
if ($mform->exportValue($completionpassgradeel)) {
$mform->freeze('gradepass');
// Some modules define separate "gradepass" fields for each of their grade items.
$gradepassfieldels = array_merge(['gradepass'], array_map(
fn(string $gradeitem) => "{$gradeitem}gradepass",
component_gradeitems::get_itemname_mapping_for_component("mod_{$this->_modname}"),
));
foreach ($gradepassfieldels as $gradepassfieldel) {
if ($mform->elementExists($gradepassfieldel)) {
$mform->freeze($gradepassfieldel);
}
}
}
}
$completiongradeitemnumberel = 'completiongradeitemnumber' . $suffix;