From f7fabdd95ab1ef7371919c51ad08674a367ea84d Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Fri, 25 Mar 2022 14:38:54 +0100
Subject: [PATCH] fix #826

---
 .../courseware/CoursewareDownloadBlock.vue    | 41 ++++++++++++++++++-
 1 file changed, 39 insertions(+), 2 deletions(-)

diff --git a/resources/vue/components/courseware/CoursewareDownloadBlock.vue b/resources/vue/components/courseware/CoursewareDownloadBlock.vue
index 238e005bafe..2094cfa7133 100755
--- a/resources/vue/components/courseware/CoursewareDownloadBlock.vue
+++ b/resources/vue/components/courseware/CoursewareDownloadBlock.vue
@@ -5,6 +5,7 @@
             :canEdit="canEdit"
             :isTeacher="isTeacher"
             :preview="true"
+            :defaultGrade="false"
             @storeEdit="storeBlock"
             @closeEdit="initCurrentData"
         >
@@ -18,7 +19,7 @@
                         {{ currentSuccess }}
                     </div>
                     <div class="cw-block-download-file-item">
-                        <a target="_blank" :download="currentFile.name" :href="currentFile.download_url">
+                        <a target="_blank" :download="currentFile.name" :href="currentFile.download_url" @click="handleDownload">
                             <span class="cw-block-file-info" :class="['cw-block-file-icon-' + currentFile.icon]">
                                 {{ currentFile.name }}
                             </span>
@@ -93,7 +94,6 @@ export default {
             currentGrade: '',
             currentFileId: '',
             currentFile: null,
-            userHasDownloaded: false, // Todo set and get user_data
         };
     },
     computed: {
@@ -101,6 +101,7 @@ export default {
             fileRefById: 'file-refs/byId',
             urlHelper: 'urlHelper',
             relatedTermOfUse: 'terms-of-use/related',
+            getUserDataById: 'courseware-user-data-fields/byId',
         }),
         title() {
             return this.block?.attributes?.payload?.title;
@@ -117,9 +118,24 @@ export default {
         fileId() {
             return this.block?.attributes?.payload?.file_id;
         },
+        userData() {
+            return this.getUserDataById({ id: this.block.relationships['user-data-field'].data.id });
+        },
+        userHasDownloaded() {
+            let downloaded = this.userData?.attributes?.payload?.downloaded;
+
+            if (downloaded === undefined) {
+                return false;
+            }
+
+            return downloaded;
+        }
     },
     mounted() {
         this.initCurrentData();
+        if (this.userProgress && this.userProgress.attributes.grade === 0 && !this.grade) {
+            this.userProgress = 1;
+        }
     },
     methods: {
         ...mapActions({
@@ -220,6 +236,27 @@ export default {
                 containerId: this.block.relationships.container.data.id,
             });
         },
+        handleDownload() {
+            let data = {
+                id: this.userData.id,
+                type: 'courseware-user-data-fields',
+                relationships: {
+                    block: {
+                        data: {
+                            id: this.block.id,
+                            type: this.block.type
+                        }
+                    }
+                },
+                attributes: {
+                    payload: {
+                        downloaded: true
+                    }
+                }
+            };
+            this.$store.dispatch('courseware-user-data-fields/update', data);
+            this.userProgress = 1;
+        },
     },
 };
 </script>
-- 
GitLab