diff --git a/resources/vue/components/courseware/CoursewareStructuralElement.vue b/resources/vue/components/courseware/CoursewareStructuralElement.vue
index 3afdac17404fe905675faf160547bdbc70eefbd8..6affaafdf40a69aaf3ce3b1ec427693832652af0 100755
--- a/resources/vue/components/courseware/CoursewareStructuralElement.vue
+++ b/resources/vue/components/courseware/CoursewareStructuralElement.vue
@@ -438,7 +438,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>
@@ -476,6 +476,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
@@ -581,7 +586,7 @@ export default {
             },
             exportRunning: false,
             exportChildren: false,
-            pdfExportChildren: false,
+            oerExportRunning: false,
             oerChildren: true,
             containerList: [],
             isDragging: false,
@@ -1250,7 +1255,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 1eab732a951a676908c18cf97b4a3a1813fe00c2..ac325b8f839394901605597ada04d60172fc0ff8 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);
             });
         },