From 3c11ec27e8183d500270662efecac07cdc7438b9 Mon Sep 17 00:00:00 2001 From: Tamara Steinwender <tamara.steinwender@tugraz.at> Date: Wed, 22 Jul 2020 16:53:28 +0200 Subject: [PATCH] Added upload in current directory function --- .../src/dbp-nextcloud-file-picker.js | 32 ++++++++++++++++--- packages/file-handling/src/file-sink.js | 1 + .../src/i18n/de/translation.json | 4 ++- .../src/i18n/en/translation.json | 4 ++- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/packages/file-handling/src/dbp-nextcloud-file-picker.js b/packages/file-handling/src/dbp-nextcloud-file-picker.js index 146f7488..5018f1ac 100644 --- a/packages/file-handling/src/dbp-nextcloud-file-picker.js +++ b/packages/file-handling/src/dbp-nextcloud-file-picker.js @@ -35,6 +35,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.loading = false; this._onReceiveWindowMessage = this.onReceiveWindowMessage.bind(this); + this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder'); } static get scopedElements() { @@ -55,11 +56,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { nextcloudName: { type: String, attribute: 'nextcloud-name' }, isPickerActive: { type: Boolean, attribute: false }, statusText: { type: String, attribute: false }, + folderIsSelected: { type: String, attribute: false }, directoryPath: { type: String, attribute: false }, allowedMimeTypes: { type: String, attribute: 'allowed-mime-types' }, directoriesOnly: { type: Boolean, attribute: 'directories-only' }, maxSelectedItems: { type: Number, attribute: 'max-selected-items' }, - }; } @@ -140,6 +141,14 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { {column:"type", dir:"asc"}, ], + rowSelectionChanged: (data, rows) => { + if( data.length > 0 && this.directoriesOnly) { + this.folderIsSelected = i18n.t('nextcloud-file-picker.load-to-folder'); + } + else { + this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder'); + } + }, rowClick: (e, row) => { const data = row.getData(); @@ -160,6 +169,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { if (this.directoriesOnly) { const data = row.getData(); this.directoryClicked(e, data); + this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder'); } } }); @@ -325,11 +335,21 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } sendDirectory(directory) { + + let path; + + if(!directory[0]) + { + path = this.directoryPath; + } + else { + path = directory[0].filename; + } this.loading = true; - this.statusText = "Uploading to " + directory[0].filename + "..."; + this.statusText = "Uploading to " + path + " ..."; const event = new CustomEvent("dbp-nextcloud-file-picker-file-uploaded", - { "detail": directory[0].filename, bubbles: true, composed: true }); + { "detail": path, bubbles: true, composed: true }); this.dispatchEvent(event); } @@ -361,7 +381,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { let ret = false; try{ let contents = await this.webDavClient - .putFileContents(path, file, { onUploadProgress: progress => { + .putFileContents(path, file, { overwrite: false, onUploadProgress: progress => { console.log(`Uploaded ${progress.loaded} bytes of ${progress.total}`); }}); this.loading = false; @@ -782,9 +802,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <div class="nextcloud-footer ${classMap({hidden: !this.isPickerActive})}"> <div class="nextcloud-footer-grid"> <button class="button select-button is-primary ${classMap({hidden: !this.directoriesOnly})}" - @click="${() => { this.sendDirectory(this.tabulatorTable.getSelectedData()); }}">${i18n.t('nextcloud-file-picker.select-folder')}</button> + @click="${() => { this.sendDirectory(this.tabulatorTable.getSelectedData()); }}">${this.folderIsSelected}</button> <button class="button select-button is-primary ${classMap({hidden: this.directoriesOnly})}" @click="${() => { this.downloadFiles(this.tabulatorTable.getSelectedData()); }}">${i18n.t('nextcloud-file-picker.select-files')}</button> + + <div class="block info-box ${classMap({hidden: this.statusText === ""})}"> <dbp-mini-spinner style="font-size: 0.7em" class="${classMap({hidden: this.loading === false})}"></dbp-mini-spinner> ${this.statusText} diff --git a/packages/file-handling/src/file-sink.js b/packages/file-handling/src/file-sink.js index e7c4a214..5f1b4244 100644 --- a/packages/file-handling/src/file-sink.js +++ b/packages/file-handling/src/file-sink.js @@ -46,6 +46,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { */ static get properties() { return { + context: { type: String, attribute: 'context'}, lang: { type: String }, filename: { type: String }, files: { type: Array, attribute: false }, diff --git a/packages/file-handling/src/i18n/de/translation.json b/packages/file-handling/src/i18n/de/translation.json index 936fd36f..296d3bbe 100644 --- a/packages/file-handling/src/i18n/de/translation.json +++ b/packages/file-handling/src/i18n/de/translation.json @@ -47,6 +47,8 @@ "select-folder": "In diesem Ordner hochladen", "webdav-error": "Etwas ist schief gelaufen", "add-folder": "Neuen Ordner erstellen", - "new-folder-placeholder": "Neuer Ordner" + "new-folder-placeholder": "Neuer Ordner", + "load-in-folder": "Ins aktuelle Verzeichnis laden", + "load-to-folder": "Im ausgewählten Ordner hochladen" } } diff --git a/packages/file-handling/src/i18n/en/translation.json b/packages/file-handling/src/i18n/en/translation.json index 07746e84..d8873c29 100644 --- a/packages/file-handling/src/i18n/en/translation.json +++ b/packages/file-handling/src/i18n/en/translation.json @@ -47,6 +47,8 @@ "select-folder": "Upload in selected folder", "webdav-error": "Something went wrong", "add-folder": "Add new folder", - "new-folder-placeholder": "New folder" + "new-folder-placeholder": "New folder", + "load-in-folder": "Load into the current directory", + "load-to-folder": "Upload to the selected folder" } } -- GitLab