diff options
| author | André Noack <noack@data-quest.de> | 2024-02-12 15:38:09 +0000 |
|---|---|---|
| committer | André Noack <noack@data-quest.de> | 2024-02-12 15:38:09 +0000 |
| commit | 014d8f4ed9fbf21229cac8517cf414b789a1042b (patch) | |
| tree | 56928a1cccf5dee14f9870eeaaf10c76db26904a | |
| parent | a02daa90ef7411285810fc241c68a3f1e7d15d0b (diff) | |
Resolve #3718 "Gradebook meldet beim Speichern "Die Noten wurden gespeichert." obwohl nicht alle Daten prozessiert wurden"
Closes #3718
Merge request studip/studip!2589
| -rw-r--r-- | app/controllers/course/gradebook/lecturers.php | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/app/controllers/course/gradebook/lecturers.php b/app/controllers/course/gradebook/lecturers.php index 2cba5f3..b3b1f82 100644 --- a/app/controllers/course/gradebook/lecturers.php +++ b/app/controllers/course/gradebook/lecturers.php @@ -164,33 +164,37 @@ class Course_Gradebook_LecturersController extends AuthenticatedController public function store_grades_action() { CSRFProtection::verifyUnsafeRequest(); - $course = \Context::get(); - $studentIds = $course->getMembersWithStatus('autor', true)->pluck('user_id'); - $definitionIds = \SimpleCollection::createFromArray( - Definition::findByCourse($course) - )->pluck('id'); - - $grades = \Request::getArray('grades'); - $passed = \Request::getArray('passed'); - $feedback = \Request::getArray('feedback'); - foreach ($grades as $studentId => $studentGrades) { - if (!in_array($studentId, $studentIds)) { - continue; - } - foreach ($studentGrades as $definitionId => $strGrade) { - if (!in_array($definitionId, $definitionIds)) { + if (Request::submitted('accept')) { + $course = \Context::get(); + $studentIds = $course->getMembersWithStatus('autor', true)->pluck('user_id'); + $definitionIds = \SimpleCollection::createFromArray( + Definition::findByCourse($course) + )->pluck('id'); + + $grades = \Request::getArray('grades'); + $passed = \Request::getArray('passed'); + $feedback = \Request::getArray('feedback'); + foreach ($grades as $studentId => $studentGrades) { + if (!in_array($studentId, $studentIds)) { continue; } - - $instance = new Instance([$definitionId, $studentId]); - $instance->rawgrade = ((int) $strGrade) / 100.0; - $instance->passed = $passed[$studentId][$definitionId] ?? 0; - $instance->feedback = $feedback[$studentId][$definitionId] ?? ''; - $instance->store(); + foreach ($studentGrades as $definitionId => $strGrade) { + if (!in_array($definitionId, $definitionIds)) { + continue; + } + + $instance = new Instance([$definitionId, $studentId]); + $instance->rawgrade = ((int)$strGrade) / 100.0; + $instance->passed = $passed[$studentId][$definitionId] ?? 0; + $instance->feedback = $feedback[$studentId][$definitionId] ?? ''; + $instance->store(); + } } - } - \PageLayout::postSuccess(_('Die Noten wurden gespeichert.')); + \PageLayout::postSuccess(_('Die Noten wurden gespeichert.')); + } else { + \PageLayout::postError(_('Beim Übermitteln der Daten trat ein Fehler auf.')); + } $this->redirect('course/gradebook/lecturers/custom_definitions'); } |
