From 1ce77342b3fcaf4d016943c9416484647a3cde41 Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Thu, 12 May 2022 09:42:45 +0000
Subject: [PATCH] fix #960

Closes #960

Merge request studip/studip!555
---
 .../courseware/CoursewareStructuralElement.vue  | 17 ++++++++++++++---
 resources/vue/mixins/courseware/export.js       |  3 +++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/resources/vue/components/courseware/CoursewareStructuralElement.vue b/resources/vue/components/courseware/CoursewareStructuralElement.vue
index 137c84fbd17..06c05ee856f 100755
--- a/resources/vue/components/courseware/CoursewareStructuralElement.vue
+++ b/resources/vue/components/courseware/CoursewareStructuralElement.vue
@@ -440,7 +440,7 @@
                     @confirm="publishCurrentElement"
                 >
                     <template v-slot:dialogContent>
-                        <form class="default" @submit.prevent="">
+                        <form v-show="!oerExportRunning" class="default" @submit.prevent="">
                             <fieldset>
                                 <legend><translate>Grunddaten</translate></legend>
                                 <label>
@@ -478,6 +478,11 @@
                                 </label>
                             </fieldset>
                         </form>
+                        <courseware-companion-box
+                            v-show="oerExportRunning"
+                            :msgCompanion="$gettext('Export läuft, bitte haben sie einen Moment Geduld...')"
+                            mood="pointing"
+                        />
                     </template>
                 </studip-dialog>
                 <studip-dialog
@@ -621,7 +626,7 @@ export default {
             },
             exportRunning: false,
             exportChildren: false,
-            pdfExportChildren: false,
+            oerExportRunning: false,
             oerChildren: true,
             containerList: [],
             isDragging: false,
@@ -1305,7 +1310,13 @@ export default {
         },
 
         async publishCurrentElement() {
-            this.exportToOER(this.currentElement, { withChildren: this.oerChildren });
+            if (this.oerExportRunning) {
+                return;
+            }
+            this.oerExportRunning = true;
+            await this.exportToOER(this.currentElement, { withChildren: this.oerChildren });
+            this.oerExportRunning = false;
+            this.showElementOerDialog(false);
         },
 
         async closeDeleteDialog() {
diff --git a/resources/vue/mixins/courseware/export.js b/resources/vue/mixins/courseware/export.js
index 8c73de002c2..f15c314ecb5 100755
--- a/resources/vue/mixins/courseware/export.js
+++ b/resources/vue/mixins/courseware/export.js
@@ -188,6 +188,9 @@ export default {
                 headers: { "Content-Type": "multipart/form-data"}
             }).then( () => {
                 this.companionInfo({ info: this.$gettextInterpolate('Die Seite wurde an %{ oerTitle } gesendet.', {oerTitle: this.oerTitle}) });
+            }).catch(error => {
+                this.companionError({ info: this.$gettext('Beim Veröffentlichen der Seite ist ein Fehler aufgetreten.') });
+                console.debug(error);
             });
         },
 
-- 
GitLab