aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Noack <noack@data-quest.de>2024-02-12 15:38:09 +0000
committerAndré Noack <noack@data-quest.de>2024-02-12 15:38:09 +0000
commit014d8f4ed9fbf21229cac8517cf414b789a1042b (patch)
tree56928a1cccf5dee14f9870eeaaf10c76db26904a
parenta02daa90ef7411285810fc241c68a3f1e7d15d0b (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.php50
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');
}