diff --git a/src/common/proxy-manager.js b/src/common/proxy-manager.js index 7191fc1aa..d235e653a 100644 --- a/src/common/proxy-manager.js +++ b/src/common/proxy-manager.js @@ -541,7 +541,7 @@ const factory = (UserObject, Util, Hash, if (copy) { return; } - if (resolved.main.length) { + if (resolved.main.length && !moveError) { // Remove the elements from the old location (without unpinning) Env.user.userObject.delete(resolved.main, waitFor()); // FIXME waitFor() is called synchronously } @@ -580,7 +580,9 @@ const factory = (UserObject, Util, Hash, if (copy) { return; } // Remove the elements from the old location (without unpinning) - uoFrom.delete(paths, waitFor()); // FIXME waitFor() is called synchronously + if (!moveError) { + uoFrom.delete(paths, waitFor()); // FIXME waitFor() is called synchronously + } } }); } diff --git a/src/common/user-object-setter.js b/src/common/user-object-setter.js index 65cda4a28..84b12aadd 100644 --- a/src/common/user-object-setter.js +++ b/src/common/user-object-setter.js @@ -314,6 +314,14 @@ const factory = (Util, Hash, Realtime) => { // Copy file or folder var newParent = exp.find(path); var tempName = exp.isFile(element) ? Hash.createChannelId() : key; + if (exp.isFolder(element) && tempName !== Messages.fm_newFolder && + typeof(newParent[tempName]) !== "undefined") { + throw { + error: 'E_DUPLICATE_FOLDER_NAME', + folderName: tempName, + message: Messages.fo_unavailableName + }; + } var newName = exp.getAvailableName(newParent, tempName); if (Array.isArray(newParent)) { newParent.push(element); diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index aee412158..92a820f7f 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -124,8 +124,6 @@ define([ var $recentIcon = $(Icons.get('drive-recent')); var $trashIcon = $(Icons.get('trash-full')); var $trashEmptyIcon = $(Icons.get('trash-empty')); - var $expandIcon = $(Icons.get('chevron-right')); - var $expandedIcon = $(Icons.get('chevron-down')); var $sortAscIcon = $(Icons.get('sort-asc', {'class': 'sortasc'})); var $sortDescIcon = $(Icons.get('sort-desc', {'class': 'sortdesc'})); var $closeIcon = $(Icons.get('close')); @@ -2161,7 +2159,7 @@ define([ } } - var oldPaths = data && JSON.parse(data).path; + oldPaths = data && JSON.parse(data).path; if (!oldPaths) { return; } // A moved element should be removed from its previous location var movedPaths = []; @@ -4586,7 +4584,7 @@ define([ appStatus.ready(true); }; - var displayDirectory = APP.displayDirectory = function (path, force, cb, opt) { + APP.displayDirectory = function (path, force, cb, opt) { cb = Util.once(cb || function () {}); if (APP.closed || (APP.$content && !$.contains(document.documentElement, APP.$content[0]))) { return; } if (history.isHistoryMode) { @@ -4710,7 +4708,7 @@ define([ addDragAndDropHandlers: addDragAndDropHandlers }, events: { - onFolderClicked: function (clickedPath, event) { + onFolderClicked: function (clickedPath) { // Check for shared folder restrictions var sfId = manager.isInSharedFolder(clickedPath); if (sfId) { @@ -4726,7 +4724,7 @@ define([ APP.displayDirectory(clickedPath); }, onContextMenu: function (clickedPath, event) { - openContextMenu('tree')(event); + openContextMenu('tree')(event, clickedPath); }, onFolderExpanded: function (clickedPath, isOpen) { LS.setFolderOpened(clickedPath, isOpen); @@ -4770,7 +4768,7 @@ define([ addDragAndDropHandlers($row, elPath, true, droppable); } else if (sfId) { f = folders[sfId]; - var editable = !(f && f.readOnly); + editable = !(f && f.readOnly); droppable = editable; if (!editable) { $row.closest('li').attr('data-ro', true); @@ -4787,10 +4785,12 @@ define([ var $icon = manager.isFolderEmpty(files[TRASH]) ? $trashEmptyIcon.clone() : $trashIcon.clone(); var isOpened = manager.comparePath(path, currentPath); var $trashElement = UIElements.createTreeElement(TRASH_NAME, $icon, [TRASH], false, true, false, isOpened, { - onFolderClicked: function (clickedPath, event) { + onFolderClicked: function (clickedPath) { APP.displayDirectory(clickedPath); }, - onContextMenu: openContextMenu('trashtree') + onContextMenu: function (clickedPath, event) { + openContextMenu('trashtree')(event, clickedPath); + } }, [], currentPath, { addDragAndDropHandlers: addDragAndDropHandlers }); $trashElement.addClass('cp-app-drive-tree-root'); var $trashList = $('