diff --git a/www/drive/inner.js b/www/drive/inner.js index b8a95d8b0..59db8824b 100644 --- a/www/drive/inner.js +++ b/www/drive/inner.js @@ -1153,7 +1153,10 @@ define([ var getElementName = function (path) { var file = manager.find(path); - if (!file || !manager.isFile(file)) { return '???'; } + if (!file) { return; } + if (manager.isSharedFolder(file)) { + return manager.getSharedFolderData(file).title; + } return manager.getTitle(file); }; // manager.moveElements is able to move several paths to a new location, including @@ -1169,6 +1172,22 @@ define([ } andThenMove(); }; + // Delete paths from the drive and/or shared folders (without moving them to the trash) + var deletePaths = function (paths, pathsList) { + pathsList = pathsList || []; + if (paths) { + paths.forEach(function (p) { pathsList.push(p.path); }); + } + var msg = Messages._getKey("fm_removeSeveralPermanentlyDialog", [pathsList.length]); + if (pathsList.length === 1) { + msg = Messages.fm_removePermanentlyDialog; + } + UI.confirm(msg, function(res) { + $(window).focus(); + if (!res) { return; } + manager.delete(pathsList, refresh); + }); + }; // Drag & drop: // The data transferred is a stringified JSON containing the path of the dragged element var onDrag = function (ev, path) { @@ -1180,7 +1199,7 @@ define([ var ePath = $(elmt).data('path'); if (ePath) { var val = manager.find(ePath); - if (!val) { return; } // Error? A ".selected" element in not in the object + if (!val) { return; } // Error? A ".selected" element is not in the object paths.push({ path: ePath, value: { @@ -1194,7 +1213,7 @@ define([ removeSelected(); $element.addClass('cp-app-drive-element-selected'); var val = manager.find(path); - if (!val) { return; } // The element in not in the object + if (!val) { return; } // The element is not in the object paths = [{ path: path, value: { @@ -1240,21 +1259,22 @@ define([ var oldPaths = JSON.parse(data).path; if (!oldPaths) { return; } - // Dropped elements can be moved from the same file manager or imported from another one. // A moved element should be removed from its previous location var movedPaths = []; - var importedElements = []; + var sharedF = false; oldPaths.forEach(function (p) { - var el = manager.find(p.path); - if (el && (stringify(el) === stringify(p.value.el) || !p.value || !p.value.el)) { - movedPaths.push(p.path); - } else { - importedElements.push(p.value); + movedPaths.push(p.path); + if (!sharedF && manager.isInSharedFolder(p.path)) { + sharedF = true; } }); var newPath = findDropPath(ev.target); if (!newPath) { return; } + if (sharedF && manager.isPathIn(newPath, [TRASH])) { + deletePaths(null, movedPaths); + return; + } if (movedPaths && movedPaths.length) { moveElements(movedPaths, newPath, null, refresh); } @@ -2888,21 +2908,6 @@ define([ $contextMenu.find('.cp-app-drive-context-delete').text(Messages.fc_remove) .attr('data-icon', 'fa-eraser'); } - var deletePaths = function (paths, pathsList) { - pathsList = pathsList || []; - if (paths) { - paths.forEach(function (p) { pathsList.push(p.path); }); - } - var msg = Messages._getKey("fm_removeSeveralPermanentlyDialog", [pathsList.length]); - if (pathsList.length === 1) { - msg = Messages.fm_removePermanentlyDialog; - } - UI.confirm(msg, function(res) { - $(window).focus(); - if (!res) { return; } - manager.delete(pathsList, refresh); - }); - }; var deleteOwnedPaths = function (paths, pathsList) { pathsList = pathsList || []; if (paths) { @@ -3096,7 +3101,9 @@ define([ if (!paths.length) { return; } // If we are in the trash or anon pad or if we are holding the "shift" key, // delete permanently - if (!APP.loggedIn || isTrash || e.shiftKey) { + // Or if we are in a shared folder + if (!APP.loggedIn || isTrash || manager.isInSharedFolder(currentPath) + || e.shiftKey) { deletePaths(null, paths); return; }