From 83fc7ce5aac7b0824f19508c73f7688ff7cee91c Mon Sep 17 00:00:00 2001 From: Ron Lucke <lucke@elan-ev.de> Date: Wed, 10 May 2023 13:51:24 +0000 Subject: [PATCH] fix #2619 Closes #2619 Merge request studip/studip!1770 --- .../CoursewareShelfDialogImport.vue | 4 +++- ...oursewareStructuralElementDialogImport.vue | 4 +++- resources/vue/mixins/courseware/import.js | 22 +++++++++++-------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/resources/vue/components/courseware/CoursewareShelfDialogImport.vue b/resources/vue/components/courseware/CoursewareShelfDialogImport.vue index 171f34dfc48..cc8e1001f28 100644 --- a/resources/vue/components/courseware/CoursewareShelfDialogImport.vue +++ b/resources/vue/components/courseware/CoursewareShelfDialogImport.vue @@ -115,7 +115,9 @@ {{ importStructuresState }} </div> </fieldset> - <fieldset v-show="importErrors.length > 0"> + </form> + <form v-if="importErrors.length > 0" class="default" @submit.prevent=""> + <fieldset> <legend>{{$gettext('Fehlermeldungen')}}</legend> <ul> <li v-for="(error, index) in importErrors" :key="index"> {{error}} </li> diff --git a/resources/vue/components/courseware/CoursewareStructuralElementDialogImport.vue b/resources/vue/components/courseware/CoursewareStructuralElementDialogImport.vue index 4ce202eb0b6..3c3974dbe5c 100644 --- a/resources/vue/components/courseware/CoursewareStructuralElementDialogImport.vue +++ b/resources/vue/components/courseware/CoursewareStructuralElementDialogImport.vue @@ -61,7 +61,9 @@ {{ importStructuresState }} </div> </fieldset> - <fieldset v-show="importErrors.length > 0"> + </form> + <form v-if="importErrors.length > 0" class="default" @submit.prevent=""> + <fieldset> <legend>{{$gettext('Fehlermeldungen')}}</legend> <ul> <li v-for="(error, index) in importErrors" :key="index"> {{error}} </li> diff --git a/resources/vue/mixins/courseware/import.js b/resources/vue/mixins/courseware/import.js index 4b46ab89dae..a7c94201dff 100644 --- a/resources/vue/mixins/courseware/import.js +++ b/resources/vue/mixins/courseware/import.js @@ -168,22 +168,24 @@ export default { if (element.length) { for (var i = 0; i < element.length; i++) { this.setImportStructuresState(this.$gettext('Lege Seite an:') + ' ' + element[i].attributes.title); + let new_element = null; try { await this.createStructuralElement({ attributes: element[i].attributes, parentId: parent_id, currentId: parent_id, }); + new_element = this.lastCreatedElements; } catch(error) { this.currentImportErrors.push(this.$gettext('Seite konnte nicht erstellt werden') + ': ' + element.attributes.title); - - continue; } this.importElementCounter++; - - let new_element = this.lastCreatedElements; + if (new_element === null) { + continue; + } + if (element[i].imageId) { await this.setStructuralElementImage(new_element, element[i].imageId, files); @@ -221,30 +223,32 @@ export default { async importContainer(container, structuralElement, files) { this.setImportStructuresState(this.$gettext('Lege Abschnitt an:') + ' ' + container.attributes.title); + let new_container = null; try { await this.createContainer({ attributes: container.attributes, structuralElementId: structuralElement.id, }); - + new_container = this.lastCreatedContainers; } catch(error) { this.currentImportErrors.push(this.$gettext('Abschnitt konnte nicht erstellt werden') + ': ' + structuralElement.attributes.title + '→' + container.attributes.title); - - return null; } this.importElementCounter++; - let new_container = this.lastCreatedContainers; + if (new_container === null) { + return null; + } + await this.unlockObject({ id: new_container.id, type: 'courseware-containers' }); if (container.blocks?.length) { let new_block = null; for (var k = 0; k < container.blocks.length; k++) { new_block = await this.importBlock(container.blocks[k], new_container, files, structuralElement); + this.importElementCounter++; if (new_block !== null) { - this.importElementCounter++; try { await this.updateContainerPayload(new_container, structuralElement.id, container.blocks[k].id, new_block.id); } catch(error) { -- GitLab