Compare commits

...

3 commits

Author SHA1 Message Date
ClemDee
f719ea53ac Fix copy bug from drive to drive 2019-07-04 11:02:16 +02:00
ClemDee
28d8f447d0 Add pasting but copy cuts 2019-07-03 16:05:30 +02:00
ClemDee
2f5072e4e0 Add dummy cut-copy-paste in drive context menu 2019-07-03 15:06:40 +02:00
3 changed files with 75 additions and 10 deletions

View file

@ -314,7 +314,7 @@ define([
// Move from the main drive
if (!newResolved.id) {
// Move from the main drive to the main drive
Env.user.userObject.move(resolved.main, newResolved.path, waitFor());
Env.user.userObject.move(resolved.main, newResolved.path, copy, waitFor());
} else {
// Move from the main drive to a shared folder
@ -354,7 +354,7 @@ define([
var paths = resolved.folders[fId];
if (newResolved.id === fId) {
// Move to the same shared folder
newResolved.userObject.move(paths, newResolved.path, waitFor());
newResolved.userObject.move(paths, newResolved.path, copy, waitFor());
} else {
// Move to a different shared folder or to main drive
var uoFrom = Env.folders[fId].userObject;

View file

@ -582,7 +582,7 @@ define([
};
// MOVE
var move = exp.move = function (paths, newPath, cb) {
var move = exp.move = function (paths, newPath, copy, cb) {
if (sframeChan) {
return void sframeChan.query("Q_DRIVE_USEROBJECT", {
cmd: "move",
@ -607,6 +607,7 @@ define([
toRemove.push(p);
}
});
if (copy) { return void cb(); }
exp.delete(toRemove, cb);
};
exp.restore = function (path, cb) {

View file

@ -92,6 +92,9 @@ define([
var $folderIcon = $('<span>', {
"class": faFolder + " cptools cp-app-drive-icon-folder cp-app-drive-content-icon"
});
var faCut = 'fa-scissors';
var faCopy = 'fa-files-o';
var faPaste = 'fa-clipboard';
//var $folderIcon = $('<img>', {src: "/customize/images/icons/folder.svg", "class": "folder icon"});
var $folderEmptyIcon = $folderIcon.clone();
var $folderOpenedIcon = $('<span>', {"class": faFolderOpen + " cptools cp-app-drive-icon-folder"});
@ -130,6 +133,8 @@ define([
var LS_OPENED = "app-drive-openedFolders";
var LS_VIEWMODE = "app-drive-viewMode";
var LS_SEARCHCURSOR = "app-drive-searchCursor";
var LS_CUT_CONTENT = "app-drive-cutContent";
var LS_COPIED_CONTENT = "app-drive-copiedContent";
var FOLDER_CONTENT_ID = "cp-app-drive-content-folder";
var config = {};
@ -387,6 +392,19 @@ define([
'data-icon': faRestore,
}, Messages.fc_restore)),
$separator.clone()[0],
h('li', h('a.cp-app-drive-context-cut.dropdown-item.cp-app-drive-context-editable', {
'tabindex': '-1',
'data-icon': faCut,
}, Messages.fc_cut || "Cut")),
h('li', h('a.cp-app-drive-context-copy.dropdown-item.cp-app-drive-context-editable', {
'tabindex': '-1',
'data-icon': faCopy,
}, Messages.fc_copy || "Copy")),
h('li', h('a.cp-app-drive-context-paste.dropdown-item.cp-app-drive-context-editable', {
'tabindex': '-1',
'data-icon': faPaste,
}, Messages.fc_paste || "Paste")),
$separator.clone()[0],
h('li', h('a.cp-app-drive-context-rename.dropdown-item.cp-app-drive-context-editable', {
'tabindex': '-1',
'data-icon': faRename,
@ -975,7 +993,10 @@ define([
// Hide the new shared folder menu if we're already in a shared folder
return manager.isInSharedFolder(currentPath) || APP.disableSF;
}
return AppConfig.availablePadTypes.indexOf($el.attr('data-type')) === -1;
if (className === 'newdoc') {
return AppConfig.availablePadTypes.indexOf($el.attr('data-type')) === -1;
}
if (className === 'paste') { return; }
};
} else {
// In case of multiple selection, we must hide the option if at least one element
@ -1084,10 +1105,10 @@ define([
switch(type) {
case 'content':
show = ['newfolder', 'newsharedfolder', 'newdoc'];
show = ['newfolder', 'newsharedfolder', 'newdoc', 'paste'];
break;
case 'tree':
show = ['open', 'openro', 'expandall', 'collapseall', 'color', 'download', 'share', 'rename', 'delete', 'deleteowned', 'removesf', 'properties', 'hashtag'];
show = ['open', 'openro', 'expandall', 'collapseall', 'color', 'download', 'share', 'rename', 'delete', 'deleteowned', 'removesf', 'properties', 'hashtag', 'cut', 'copy'];
break;
case 'default':
show = ['open', 'openro', 'share', 'openparent', 'delete', 'deleteowned', 'properties', 'hashtag'];
@ -1296,6 +1317,12 @@ define([
}
});
});
// enable / disable paste
localStore.get(LS_CUT_CONTENT, function (cut) {
localStore.get(LS_COPIED_CONTENT, function (copied) {
$menu.find(".cp-app-drive-context-paste").toggleClass("disabled", !cut && !copied);
});
});
$menu.css({ display: "block" });
if (APP.mobile()) { return; }
var h = $menu.outerHeight();
@ -1394,9 +1421,11 @@ define([
return;
}
var newCb = function () {
paths.forEach(function (path) {
moveFoldersOpened(path, newPath);
});
if (!copy) {
paths.forEach(function (path) {
moveFoldersOpened(path, newPath);
});
}
cb();
};
if (paths.some(function (p) { return manager.comparePath(newPath, p); })) { return void cb(); }
@ -3470,7 +3499,7 @@ define([
if (paths.length !== 1) { return; }
displayRenameInput(paths[0].element, paths[0].path);
}
if ($(this).hasClass("cp-app-drive-context-color")) {
else if ($(this).hasClass("cp-app-drive-context-color")) {
var currentColor = getFolderColor(paths[0].path);
pickFolderColor(paths[0].element, currentColor, function (color) {
paths.forEach(function (p) {
@ -3479,6 +3508,41 @@ define([
refresh();
});
}
else if ($(this).hasClass("cp-app-drive-context-cut")) {
console.log("%cCUT", "color: green");
var pathsToCut = paths.map(function (p) { return p.path; });
console.log("pathsToCut: ", pathsToCut);
localStore.put(LS_CUT_CONTENT, pathsToCut);
localStore.put(LS_COPIED_CONTENT, null);
}
else if ($(this).hasClass("cp-app-drive-context-copy")) {
console.log("%cCOPY", "color: green");
var pathsToCopy = paths.map(function (p) { return p.path; });
console.log("pathsToCopy: ", pathsToCopy);
localStore.put(LS_CUT_CONTENT, null);
localStore.put(LS_COPIED_CONTENT, pathsToCopy);
}
else if ($(this).hasClass("cp-app-drive-context-paste")) {
console.log("%cPASTE", "color: green");
localStore.get(LS_CUT_CONTENT, function (cut) {
localStore.get(LS_COPIED_CONTENT, function (copied) {
console.log("cut: ", cut);
console.log("copied: ", copied);
if (!cut && !copied || cut && copied) { return; }
if (cut) {
localStore.put(LS_CUT_CONTENT, null);
console.log("CUT & PASTE CONTENT");
moveElements(cut, currentPath, false, refresh);
}
else if (copied) {
console.log("COPY & PASTE CONTENT");
moveElements(copied, currentPath, true, refresh);
}
});
});
}
else if($(this).hasClass("cp-app-drive-context-delete")) {
if (!APP.loggedIn) {
return void deletePaths(paths);