diff --git a/resources/vue/components/courseware/CoursewareStructuralElement.vue b/resources/vue/components/courseware/CoursewareStructuralElement.vue index 8922e58198b3fb5b34995dd0dd60b699faa02c8c..3a75a3e035918e17a14651543d401b48dcaeb65f 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 ee962da5889d7cf0741d5d73c4567ea1b16a0a77..0846edf52d802366b72dfea5cddeece7a1b62c34 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); }); },