diff --git a/app/adapters/document.js b/app/adapters/document.js index f0b1aabd8c68e7a957b86eecd92fba1cab82165c..f5ec3ecd2d92379d7a6080554d9282e74675a117 100644 --- a/app/adapters/document.js +++ b/app/adapters/document.js @@ -14,4 +14,20 @@ export default class NodeAdapter extends ApplicationAdapter { return ret; }); } + + uploadFile({doc, file}) { + let build_url, url, headers; + + headers = this.headers; + headers['Content-Disposition'] = `attachment; filename=${file.name}`; + + build_url = this.buildURL('documents', doc.id); + url = `${build_url}upload/${file.name}`; + + return fetch(url, { + method: 'PUT', + body: file, + headers: headers + }); + } } diff --git a/app/components/button/upload.js b/app/components/button/upload.js index 764508629dd6e2f39a834c99a3b497f7740991a0..2f10ec2b18e846d8cf2d5f191c5088629d5de1d9 100644 --- a/app/components/button/upload.js +++ b/app/components/button/upload.js @@ -30,8 +30,6 @@ export default class UploadButtonComponent extends Component { @action onUploadChange(event) { let files; - console.log(this.args.node.id); - console.log(event.target.files); files = event.target.files; @@ -41,22 +39,22 @@ export default class UploadButtonComponent extends Component { } Array.from(files, (file) => { - let new_doc; - /* Upload of documents to the server side is two stage process: (1.) create document model on the server side (2.) upload file and associated it with model created in (1.) */ - new_doc = this._createDocumentModel({ + this._createDocumentModel({ file: file, node: this.args.node, lang: "deu" + }).then((doc) => { + this._uploadFile({doc, file}); }); - this._uploadFile({doc: new_doc, file: file}); + }); } - _createDocumentModel({file, node, lang}) { + async _createDocumentModel({file, node, lang}) { /* Creates document model on the server side. @@ -78,9 +76,7 @@ export default class UploadButtonComponent extends Component { new_doc.parent = node; new_doc.lang = lang; - new_doc.save(); - - return new_doc; + return new_doc.save(); } _uploadFile({file, doc}) { @@ -89,6 +85,10 @@ export default class UploadButtonComponent extends Component { Document model ``doc`` should exist on the server side. */ + let doc_adapter = this.store.adapterFor('document'); + + + doc_adapter.uploadFile({file, doc}); } } \ No newline at end of file diff --git a/app/routes/authenticated/document.js b/app/routes/authenticated/document.js index 1bb1975c67c4424ed67280dc7facd14be938f994..4695eb5721ecf844f25650f159f4ee6a8297440d 100644 --- a/app/routes/authenticated/document.js +++ b/app/routes/authenticated/document.js @@ -61,7 +61,7 @@ export default class DocumentRoute extends Route { return { 'document_version': document_version, 'pages': pages_with_url - } + }; } renderTemplate() {