diff options
| author | Ron Lucke <lucke@elan-ev.de> | 2023-05-10 13:51:24 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2023-05-10 13:51:24 +0000 |
| commit | 83fc7ce5aac7b0824f19508c73f7688ff7cee91c (patch) | |
| tree | b000b161bc66f7d452f4358077a3e9ec2364b380 | |
| parent | 72b851c45cbe4e4508ee990b65e427acb44f88ad (diff) | |
fix #2619
Closes #2619
Merge request studip/studip!1770
3 files changed, 19 insertions, 11 deletions
diff --git a/resources/vue/components/courseware/CoursewareShelfDialogImport.vue b/resources/vue/components/courseware/CoursewareShelfDialogImport.vue index 171f34d..cc8e100 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 4ce202e..3c3974d 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 4b46ab8..a7c9420 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) { |
