Browse Source

Merge pull request #12381 from rummatee/master

Move/copy file picker: Remeber last destination and start in current folder
Morris Jobke 5 years ago
parent
commit
743323ee48
3 changed files with 17 additions and 5 deletions
  1. 6 1
      apps/files/js/fileactions.js
  2. 6 1
      apps/files/js/filelist.js
  3. 5 3
      core/js/oc-dialogs.js

+ 6 - 1
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);
 				}
 			});
 

+ 6 - 1
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();
 		},
 

+ 5 - 3
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