From a8be22e908b4256d3729369027d3e88fba000e2a Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Tue, 17 Sep 2024 09:40:11 +0000
Subject: [PATCH] Courseware: Arbeitsplatz->Courseware->Meine Veranstaltungen
 zeigt nur ein Lernmaterial pro VA an

Closes #4590

Merge request studip/studip!3402
---
 app/controllers/contents/courseware.php       | 42 +++++--------------
 .../contents/courseware/courses_overview.php  |  7 ++--
 2 files changed, 14 insertions(+), 35 deletions(-)

diff --git a/app/controllers/contents/courseware.php b/app/controllers/contents/courseware.php
index 2a99c0880fe..0337e6a2fa2 100644
--- a/app/controllers/contents/courseware.php
+++ b/app/controllers/contents/courseware.php
@@ -252,37 +252,15 @@ class Contents_CoursewareController extends CoursewareController
         if ($sem_key !== 'all') {
             $semester = Semester::find($sem_key);
 
-            $courses = $courses->filter(function ($a) use ($semester) {
-                if ($a->isInSemester($semester)) {
-                    return true;
-                }
-                return false;
+            $courses = $courses->filter(function (Course $course) use ($semester) {
+                return $course->isInSemester($semester);
             });
-
-            $coursewares = [];
-
-            foreach ($courses as $course) {
-                $element = StructuralElement::getCoursewareCourse($course->id);
-                if (!$element || !$element->canRead(User::findCurrent())) {
-                    continue;
-                }
-
-                $element['payload'] = json_decode($element['payload'], true);
-                $coursewares[] = $element;
-            }
-
-            if (!$coursewares) {
-                return [];
-            }
-
-            return [$semester->id => [
-                'semester_name' => $semester->name,
-                'coursewares'   => $coursewares
-            ]];
-        } else {
-            $sem_courses = [];
-            foreach ($courses as $course) {
-                $element = StructuralElement::getCoursewareCourse($course->id);
+        } 
+        $sem_courses = [];
+        foreach ($courses as $course) {
+            $units = Unit::findCoursesUnits($course);
+            foreach ($units as $unit) {
+                $element = $unit->structural_element;
                 if (!$element || !$element->canRead(User::findCurrent())) {
                     continue;
                 }
@@ -296,9 +274,9 @@ class Contents_CoursewareController extends CoursewareController
                     $sem_courses[$end_semester->id]['coursewares'][] = $element;
                 }
             }
-
-            return $sem_courses;
         }
+
+        return $sem_courses;
     }
 
     /**
diff --git a/app/views/contents/courseware/courses_overview.php b/app/views/contents/courseware/courses_overview.php
index f6a3d98816f..61fba028b3d 100644
--- a/app/views/contents/courseware/courses_overview.php
+++ b/app/views/contents/courseware/courses_overview.php
@@ -25,7 +25,8 @@
                 <li class="tile <?= htmlReady($element['payload']['color'])?>">
                     <a href="<?= URLHelper::getLink('dispatch.php/course/courseware/?cid='.$element['range_id'].'#/structural_element/'.$element['id']) ?>">
                         <? if ($element->getImageUrl() === null) : ?>
-                            <div class="preview-image default-image"></div>
+                            <div class="preview-image default-image" style="<?= Icon::create('courseware')->asCSS(112) ?>">
+                            </div>
                         <? else : ?>
                             <div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div>
                         <? endif; ?>
@@ -36,7 +37,7 @@
                                     <?= htmlReady($element['payload']['description']) ?>
                                 </p>
                             </div>
-                            <footer>
+                            <footer style="margin-top: 24px;">
                                 <?= Icon::create('seminar', Icon::ROLE_INFO_ALT)?> <?= htmlReady($element['course']['name'])?>
                             </footer>
                         </div>
@@ -47,4 +48,4 @@
         <? endif; ?>
     <? endforeach; ?>
     <? endif; ?>
-</div>
+</div>
\ No newline at end of file
-- 
GitLab