aboutsummaryrefslogtreecommitdiff
path: root/resources/vue
diff options
context:
space:
mode:
Diffstat (limited to 'resources/vue')
-rw-r--r--resources/vue/mixins/courseware/export.js40
-rw-r--r--resources/vue/mixins/courseware/import.js38
2 files changed, 45 insertions, 33 deletions
diff --git a/resources/vue/mixins/courseware/export.js b/resources/vue/mixins/courseware/export.js
index e5c92ad..3d9e33a 100644
--- a/resources/vue/mixins/courseware/export.js
+++ b/resources/vue/mixins/courseware/export.js
@@ -134,7 +134,7 @@ export default {
root_element.children = children;
}
}
- root_element.imageId = await this.exportStructuralElementImage(root_element);
+ [root_element.imageId, root_element.imageType ] = await this.exportStructuralElementImage(root_element);
delete root_element.relationships;
delete root_element.links;
@@ -236,7 +236,7 @@ export default {
}
// export file data (if any)
- content.imageId = await this.exportStructuralElementImage(element);
+ [content.imageId, content.imageType ] = await this.exportStructuralElementImage(element);
delete content.relationships;
content.children = new_childs;
@@ -249,25 +249,29 @@ export default {
},
async exportStructuralElementImage(element) {
- let fileId = element.relationships.image?.data?.id;
+ const fileId = element.relationships.image?.data?.id;
+ const fileType = element.relationships.image?.data?.type;
+
if (fileId) {
- await this.loadFileRefsById({id: fileId});
- let fileRef = this.fileRefsById({id: fileId});
-
- let fileRefData = {};
- fileRefData.id = fileRef.id;
- fileRefData.attributes = fileRef.attributes;
- fileRefData.related_element_id = element.id;
- fileRefData.folder = null;
-
- this.exportFiles.json.push(fileRefData);
- this.exportFiles.download[fileRef.id] = {
- folder: null,
- url: fileRef.meta['download-url']
- };
+ if (fileType === 'file-refs') {
+ await this.loadFileRefsById({id: fileId});
+ let fileRef = this.fileRefsById({id: fileId});
+
+ let fileRefData = {};
+ fileRefData.id = fileRef.id;
+ fileRefData.attributes = fileRef.attributes;
+ fileRefData.related_element_id = element.id;
+ fileRefData.folder = null;
+
+ this.exportFiles.json.push(fileRefData);
+ this.exportFiles.download[fileRef.id] = {
+ folder: null,
+ url: fileRef.meta['download-url']
+ };
+ }
}
- return fileId;
+ return [fileId, fileType];
},
async exportContainer(container_ref) {
diff --git a/resources/vue/mixins/courseware/import.js b/resources/vue/mixins/courseware/import.js
index 547280f..649a098 100644
--- a/resources/vue/mixins/courseware/import.js
+++ b/resources/vue/mixins/courseware/import.js
@@ -152,7 +152,7 @@ export default {
}
// compare image
if (element.imageId && root.relationships.image.data === null) {
- await this.setStructuralElementImage(root, element.imageId, files);
+ await this.setStructuralElementImage(root, element, files);
}
// add children
@@ -187,7 +187,7 @@ export default {
if (element[i].imageId) {
- await this.setStructuralElementImage(new_element, element[i].imageId, files);
+ await this.setStructuralElementImage(new_element, element[i], files);
}
@@ -205,19 +205,27 @@ export default {
}
},
- async setStructuralElementImage(new_element, imageId, files) {
- let imageFile = files.find((file) => { return file.id === imageId});
- let zip_filedata = await this.zip.file(imageFile.id).async('blob');
- // create new blob with correct type
- let filedata = zip_filedata.slice(0, zip_filedata.size, imageFile.attributes['mime-type']);
- this.setImportStructuresState(this.$gettext('Lade Vorschaubild hoch'));
- this.uploadImageForStructuralElement({
- structuralElement: new_element,
- file: filedata,
- }).catch((error) => {
- console.error(error);
- this.currentImportErrors.push(this.$gettext('Fehler beim Hochladen des Vorschaubildes.'));
- });
+ async setStructuralElementImage(new_element, element, files) {
+ const imageId = element.imageId;
+ const imageType = element.imageType ?? 'file-refs';
+ if (imageType === 'file-refs') {
+ const imageFile = files.find((file) => { return file.id === imageId});
+ if (!(imageFile)) {
+ this.currentImportErrors.push(this.$gettext('Fehler beim Laden des Vorschaubildes.'));
+ return;
+ }
+ let zip_filedata = await this.zip.file(imageFile.id).async('blob');
+ // create new blob with correct type
+ const filedata = zip_filedata.slice(0, zip_filedata.size, imageFile.attributes['mime-type']);
+ this.setImportStructuresState(this.$gettext('Lade Vorschaubild hoch'));
+ this.uploadImageForStructuralElement({
+ structuralElement: new_element,
+ file: filedata,
+ }).catch((error) => {
+ console.error(error);
+ this.currentImportErrors.push(this.$gettext('Fehler beim Hochladen des Vorschaubildes.'));
+ });
+ }
},
async importContainer(container, structuralElement, files) {