diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 2981fb64c1..ef29551c59 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -648,6 +648,10 @@ if (permissions & OC.PERMISSION_UPDATE) { actions = OC.dialogs.FILEPICKER_TYPE_COPY_MOVE; } + var dialogDir = context.dir; + if (typeof context.fileList.dirInfo.dirLastCopiedTo !== 'undefined') { + dialogDir = context.fileList.dirInfo.dirLastCopiedTo; + } OC.dialogs.filepicker(t('files', 'Choose target folder'), function(targetPath, type) { if (type === OC.dialogs.FILEPICKER_TYPE_COPY) { context.fileList.copy(filename, targetPath, false, context.dir); @@ -655,7 +659,8 @@ if (type === OC.dialogs.FILEPICKER_TYPE_MOVE) { context.fileList.move(filename, targetPath, false, context.dir); } - }, false, "httpd/unix-directory", true, actions); + context.fileList.dirInfo.dirLastCopiedTo = targetPath; + }, false, "httpd/unix-directory", true, actions, dialogDir); } }); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index bcecdb697f..29c5a49131 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -918,6 +918,10 @@ }; var actions = this.isSelectedMovable() ? OC.dialogs.FILEPICKER_TYPE_COPY_MOVE : OC.dialogs.FILEPICKER_TYPE_COPY; + var dialogDir = self.getCurrentDirectory(); + if (typeof self.dirInfo.dirLastCopiedTo !== 'undefined') { + dialogDir = self.dirInfo.dirLastCopiedTo; + } OC.dialogs.filepicker(t('files', 'Choose target folder'), function(targetPath, type) { self.fileMultiSelectMenu.toggleLoading('copyMove', true); if (type === OC.dialogs.FILEPICKER_TYPE_COPY) { @@ -926,7 +930,8 @@ if (type === OC.dialogs.FILEPICKER_TYPE_MOVE) { self.move(files, targetPath, disableLoadingState); } - }, false, "httpd/unix-directory", true, actions); + self.dirInfo.dirLastCopiedTo = targetPath; + }, false, "httpd/unix-directory", true, actions, dialogDir); event.preventDefault(); }, diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index ed09b4121a..3583019ef0 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -189,8 +189,9 @@ var OCdialogs = { * @param mimetypeFilter mimetype to filter by - directories will always be included * @param modal make the dialog modal * @param type Type of file picker : Choose, copy, move, copy and move + * @param path path to the folder that the the file can be picket from */ - filepicker:function(title, callback, multiselect, mimetypeFilter, modal, type) { + filepicker:function(title, callback, multiselect, mimetypeFilter, modal, type, path) { var self = this; this.filepicker.sortField = 'name'; @@ -214,6 +215,7 @@ var OCdialogs = { this.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList)? OCA.Sharing.PublicApp.fileList.filesClient: OC.Files.getClient(); this.filelist = null; + path = path || ''; $.when(this._getFilePickerTemplate()).then(function($tmpl) { self.filepicker.loading = false; @@ -234,7 +236,7 @@ var OCdialogs = { title: title, emptytext: emptyText, newtext: newText - }).data('path', '').data('multiselect', multiselect).data('mimetype', mimetypeFilter); + }).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter); if (modal === undefined) { modal = false; @@ -355,7 +357,7 @@ var OCdialogs = { self.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'; self._fillFilePicker(dir); }); - self._fillFilePicker(''); + self._fillFilePicker(path); }); // build buttons