From 7db0ed6082c9db1452b2383e1d738de7eacc95af 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   | 16 ++++++++++++++--
 resources/vue/mixins/courseware/export.js        |  3 +++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/resources/vue/components/courseware/CoursewareStructuralElement.vue b/resources/vue/components/courseware/CoursewareStructuralElement.vue
index 8922e58198b..3a75a3e0359 100755
--- a/resources/vue/components/courseware/CoursewareStructuralElement.vue
+++ b/resources/vue/components/courseware/CoursewareStructuralElement.vue
@@ -381,7 +381,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>
@@ -419,6 +419,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
@@ -520,6 +525,7 @@ export default {
             },
             exportRunning: false,
             exportChildren: false,
+            oerExportRunning: false,
             oerChildren: true,
             containerList: [],
             consumModeTrap: false,
@@ -1062,7 +1068,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 ee962da5889..0846edf52d8 100755
--- a/resources/vue/mixins/courseware/export.js
+++ b/resources/vue/mixins/courseware/export.js
@@ -187,6 +187,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