diff --git a/resources/vue/components/courseware/CoursewareStructuralElement.vue b/resources/vue/components/courseware/CoursewareStructuralElement.vue index 137c84fbd17ee2323e8171ef8968c257257fb9d7..06c05ee856fcb37a4e321f17459816065fa852d3 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 8c73de002c2cddd2fa696d2e2b619170e7474e2f..f15c314ecb50a6f5b2ff33be07bc31600c9f02c3 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); }); },