From 1033990264128c41a79c3d590ac211020f774083 Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Tue, 18 Jan 2022 07:15:48 +0000
Subject: [PATCH] biest #537

---
 app/views/contents/courseware/bookmarks.php       |  9 +++++++--
 .../contents/courseware/courses_overview.php      |  6 +++++-
 app/views/contents/courseware/index.php           | 15 +++++++++------
 resources/assets/stylesheets/scss/courseware.scss |  5 ++++-
 .../courseware/CoursewareTableOfContentsBlock.vue |  6 +++++-
 5 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/app/views/contents/courseware/bookmarks.php b/app/views/contents/courseware/bookmarks.php
index 9543faf8127..14975e57f3f 100755
--- a/app/views/contents/courseware/bookmarks.php
+++ b/app/views/contents/courseware/bookmarks.php
@@ -4,7 +4,12 @@
         <? foreach($bookmarks as $bookmark) :?>
             <li class="tile <?= htmlReady($bookmark['element']['payload']['color'])?>">
                 <a href="<?= htmlReady($bookmark['url'])?>">
-                    <div class="preview-image" style="background-image: url(<?= htmlReady($bookmark['element']->getImageUrl()) ?>)" ></div>
+                    <? if ($element->getImageUrl() === null) : ?>
+                        <div class="preview-image default-image"></div>
+                    <? else : ?>
+                        <div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div>
+                    <? endif; ?>
+
                     <div class="description">
                         <header><?= htmlReady($bookmark['element']['title']) ?></header>
                         <div class="description-text-wrapper">
@@ -26,4 +31,4 @@
     <? else: ?>
         <?= MessageBox::info(_('Sie haben noch keine Lesezeichen angelegt.')); ?>
     <? endif; ?>
-</div>
\ No newline at end of file
+</div>
diff --git a/app/views/contents/courseware/courses_overview.php b/app/views/contents/courseware/courses_overview.php
index 7ae6cadd4ae..4786af7a110 100644
--- a/app/views/contents/courseware/courses_overview.php
+++ b/app/views/contents/courseware/courses_overview.php
@@ -24,7 +24,11 @@
             <? foreach($sem_courses[$semester->id]['coursewares'] as $element) :?>
                 <li class="tile <?= htmlReady($element['payload']['color'])?>">
                     <a href="<?= URLHelper::getLink('dispatch.php/course/courseware/?cid='.$element['range_id'].'#/structural_element/'.$element['id']) ?>">
-                        <div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div>
+                        <? if ($element->getImageUrl() === null) : ?>
+                            <div class="preview-image default-image"></div>
+                        <? else : ?>
+                            <div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div>
+                        <? endif; ?>
                         <div class="description">
                             <header><?= htmlReady($element['title']) ?></header>
                             <div class="description-text-wrapper">
diff --git a/app/views/contents/courseware/index.php b/app/views/contents/courseware/index.php
index 4ebc595bf7e..5682e67e5cb 100755
--- a/app/views/contents/courseware/index.php
+++ b/app/views/contents/courseware/index.php
@@ -1,11 +1,14 @@
-
 <div class="cw-content-projects">
-    <? if(!empty($elements)): ?>
+    <? if (!empty($elements)): ?>
         <ul class="cw-tiles">
-            <? foreach($elements as $element) :?>
+            <? foreach ($elements as $element) :?>
                 <li class="tile <?= htmlReady($element['payload']['color'])?>">
                     <a href="<?= URLHelper::getLink('dispatch.php/contents/courseware/courseware#/structural_element/'.$element['id']) ?>">
-                        <div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div>
+                        <? if ($element->getImageUrl() === null) : ?>
+                            <div class="preview-image default-image"></div>
+                        <? else : ?>
+                            <div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div>
+                        <? endif; ?>
                         <div class="description">
                             <header><?= htmlReady($element['title']) ?></header>
                             <div class="description-text-wrapper">
@@ -21,7 +24,7 @@
                 </li>
             <? endforeach; ?>
         </ul>
-    <? else: ?>
+    <? else : ?>
         <div class="cw-contents-overview-teaser">
             <div class="cw-contents-overview-teaser-content">
                 <header><?= _('Ihre persönlichen Lernmaterialien')?></header>
@@ -37,4 +40,4 @@
             </div>
         </div>
     <? endif; ?> 
-</div>
\ No newline at end of file
+</div>
diff --git a/resources/assets/stylesheets/scss/courseware.scss b/resources/assets/stylesheets/scss/courseware.scss
index ae3b841be92..0c008694329 100755
--- a/resources/assets/stylesheets/scss/courseware.scss
+++ b/resources/assets/stylesheets/scss/courseware.scss
@@ -4113,8 +4113,11 @@ cw tiles
         width: 100%;
         background-size: auto 180px;
         background-repeat: no-repeat;
-        background-color: $black;
+        background-color: $content-color-20;
         background-position: center;
+        &.default-image {
+                @include background-icon(courseware, clickable, 128);
+        }
     }
     .description {
         height: 220px;
diff --git a/resources/vue/components/courseware/CoursewareTableOfContentsBlock.vue b/resources/vue/components/courseware/CoursewareTableOfContentsBlock.vue
index ce860c4c14c..9440eb17355 100755
--- a/resources/vue/components/courseware/CoursewareTableOfContentsBlock.vue
+++ b/resources/vue/components/courseware/CoursewareTableOfContentsBlock.vue
@@ -37,6 +37,7 @@
                         <router-link :to="'/structural_element/' + child.id" :title="child.attributes.title">
                             <div
                                 class="preview-image"
+                                :class="[hasImage(child) ? '' : 'default-image']"
                                 :style="getChildStyle(child)"
                             ></div>
                             <div class="description">
@@ -170,7 +171,10 @@ export default {
             } else {
                 return {};
             }
-        }
+        },
+        hasImage(child) {
+            return child.relationships?.image?.data !== null;
+        },
     },
 };
 </script>
-- 
GitLab