aboutsummaryrefslogtreecommitdiff
path: root/resources/vue/mixins
diff options
context:
space:
mode:
Diffstat (limited to 'resources/vue/mixins')
-rw-r--r--resources/vue/mixins/QuestionnaireComponent.js24
-rw-r--r--resources/vue/mixins/courseware/import.js32
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