diff options
| author | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
|---|---|---|
| committer | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
| commit | 4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch) | |
| tree | 5c07151ae61276d334e88f6309c30d439a85c12e /resources/vue/mixins | |
| parent | da0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff) | |
| parent | 97a188592c679890a25c37ab78463add76a52ff7 (diff) | |
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'resources/vue/mixins')
| -rw-r--r-- | resources/vue/mixins/QuestionnaireComponent.js | 24 | ||||
| -rw-r--r-- | resources/vue/mixins/courseware/import.js | 32 |
2 files changed, 46 insertions, 10 deletions
diff --git a/resources/vue/mixins/QuestionnaireComponent.js b/resources/vue/mixins/QuestionnaireComponent.js new file mode 100644 index 0000000..277f21c --- /dev/null +++ b/resources/vue/mixins/QuestionnaireComponent.js @@ -0,0 +1,24 @@ +export const QuestionnaireComponent = { + props: { + value: Object + }, + data () { + return {val_clone: this.value}; + }, + methods: { + setDefaultValues(value) { + this.val_clone = Object.assign(value, this.value); + } + }, + watch: { + val_clone: { + handler(current) { + this.$emit('input', current); + }, + deep: true + }, + value (new_val) { + this.val_clone = new_val; + } + } +}; diff --git a/resources/vue/mixins/courseware/import.js b/resources/vue/mixins/courseware/import.js index a7c9420..547280f 100644 --- a/resources/vue/mixins/courseware/import.js +++ b/resources/vue/mixins/courseware/import.js @@ -53,7 +53,6 @@ export default { this.elementCounter = await this.countImportElements([element]); this.setImportStructuresState(''); this.importElementCounter = 0; - this.setImportErrors([]); if (importBehavior === 'default') { await this.importStructuralElement([element], rootId, files); @@ -286,8 +285,14 @@ export default { let new_file = this.file_mapping[files[i].id].new; let payload = JSON.stringify(block.attributes.payload); - payload = payload.replaceAll(old_file.id, new_file.id); - payload = payload.replaceAll(old_file.folder.id, new_file.relationships.parent.data.id); + if (new_file) { + payload = payload.replaceAll(old_file.id, new_file.id); + payload = payload.replaceAll(old_file.folder.id, new_file.relationships.parent.data.id); + } else { + payload = payload.replaceAll(old_file.id, ''); + payload = payload.replaceAll(old_file.folder.id, ''); + } + block.attributes.payload = JSON.parse(payload); } @@ -395,13 +400,20 @@ export default { // create new blob with correct type let filedata = zip_filedata.slice(0, zip_filedata.size, files[i].attributes['mime-type']); - - let file = await this.createFile({ - file: files[i], - filedata: filedata, - folder: folders[files[i].folder.id] - }); - this.setImportFilesState(this.$gettext('Erzeuge Datei') + ': ' + files[i].attributes.name); + let file = null; + try { + file = await this.createFile({ + file: files[i], + filedata: filedata, + folder: folders[files[i].folder.id] + }); + } catch (error) { + this.currentImportErrors.push(this.$gettext('Import einer Datei fehlgeschlagen.')); + this.setImportFilesState(this.$gettext('Fehler beim Anlegen der Datei')); + } + if (file !== null) { + this.setImportFilesState(this.$gettext('Erzeuge Datei') + ': ' + files[i].attributes.name); + } this.setImportFilesProgress(parseInt(i / files.length * 100)); //file mapping |
