From 014d8f4ed9fbf21229cac8517cf414b789a1042b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de> Date: Mon, 12 Feb 2024 15:38:09 +0000 Subject: [PATCH] Resolve #3718 "Gradebook meldet beim Speichern "Die Noten wurden gespeichert." obwohl nicht alle Daten prozessiert wurden" Closes #3718 Merge request studip/studip!2589 --- .../course/gradebook/lecturers.php | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/app/controllers/course/gradebook/lecturers.php b/app/controllers/course/gradebook/lecturers.php index 2cba5f3bfc0..b3b1f820e9e 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'); } -- GitLab