mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-12-24 06:05:53 -05:00
Improved device files tab, added cut/paste support
This commit is contained in:
parent
7eb6626daa
commit
63a165aac0
@ -700,6 +700,22 @@ function createMeshCore(agent) {
|
|||||||
if (this.httprequest.uploadFile) { this.write(new Buffer(JSON.stringify({ action: 'uploadstart', reqid: this.httprequest.uploadFileid }))); }
|
if (this.httprequest.uploadFile) { this.write(new Buffer(JSON.stringify({ action: 'uploadstart', reqid: this.httprequest.uploadFileid }))); }
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'copy': {
|
||||||
|
// Copy a bunch of files from scpath to dspath
|
||||||
|
for (var i in cmd.names) {
|
||||||
|
var sc = obj.path.join(cmd.scpath, cmd.names[i]), ds = obj.path.join(cmd.dspath, cmd.names[i]);
|
||||||
|
if (sc != ds) { try { fs.copyFileSync(sc, ds); } catch (e) { } }
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'move': {
|
||||||
|
// Move a bunch of files from scpath to dspath
|
||||||
|
for (var i in cmd.names) {
|
||||||
|
var sc = obj.path.join(cmd.scpath, cmd.names[i]), ds = obj.path.join(cmd.dspath, cmd.names[i]);
|
||||||
|
if (sc != ds) { try { fs.copyFileSync(sc, ds); fs.unlinkSync(sc); } catch (e) { } }
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//sendConsoleText("Got tunnel #" + this.httprequest.index + " data: " + data, this.httprequest.sessionid);
|
//sendConsoleText("Got tunnel #" + this.httprequest.index + " data: " + data, this.httprequest.sessionid);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "meshcentral",
|
"name": "meshcentral",
|
||||||
"version": "0.1.5-s",
|
"version": "0.1.5-t",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"Remote Management",
|
"Remote Management",
|
||||||
"Intel AMT",
|
"Intel AMT",
|
||||||
|
@ -288,7 +288,7 @@
|
|||||||
<span id="p5files"></span>
|
<span id="p5files"></span>
|
||||||
</div>
|
</div>
|
||||||
<table id="p5toolbarBottom" style=width:100% cellpadding=0 cellspacing=0>
|
<table id="p5toolbarBottom" style=width:100% cellpadding=0 cellspacing=0>
|
||||||
<tr><td class=style6 style="text-align:left"> <span id="bottomstatus"></span></td></tr>
|
<tr><td class=style6 style="text-align:left"> <span id="p5bottomstatus"></span></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id=p10 style=display:none>
|
<div id=p10 style=display:none>
|
||||||
@ -453,6 +453,9 @@
|
|||||||
<input type=button id=p13DeleteFileButton disabled="disabled" value="Delete" onclick="p13deletefile()" onkeypress="return false" onkeydown="return false" />
|
<input type=button id=p13DeleteFileButton disabled="disabled" value="Delete" onclick="p13deletefile()" onkeypress="return false" onkeydown="return false" />
|
||||||
<input type=button id=p13NewFolderButton disabled="disabled" value="New Folder" onclick="p13createfolder()" onkeypress="return false" onkeydown="return false" />
|
<input type=button id=p13NewFolderButton disabled="disabled" value="New Folder" onclick="p13createfolder()" onkeypress="return false" onkeydown="return false" />
|
||||||
<input type=button id=p13UploadButton disabled="disabled" value="Upload" onclick="p13uploadFile()" onkeypress="return false" onkeydown="return false" />
|
<input type=button id=p13UploadButton disabled="disabled" value="Upload" onclick="p13uploadFile()" onkeypress="return false" onkeydown="return false" />
|
||||||
|
<input type=button id=p13CutButton disabled="disabled" value="Cut" onclick="p13copyFile(1)" onkeypress="return false" onkeydown="return false" />
|
||||||
|
<input type=button id=p13CopyButton disabled="disabled" value="Copy" onclick="p13copyFile(0)" onkeypress="return false" onkeydown="return false" />
|
||||||
|
<input type=button id=p13PasteButton disabled="disabled" value="Paste" onclick="p13pasteFile()" onkeypress="return false" onkeydown="return false" />
|
||||||
<input type=button id=p13RefreshButton disabled="disabled" value="Refresh" onclick="p13folderup(9999)" onkeypress="return false" onkeydown="return false" />
|
<input type=button id=p13RefreshButton disabled="disabled" value="Refresh" onclick="p13folderup(9999)" onkeypress="return false" onkeydown="return false" />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@ -479,7 +482,7 @@
|
|||||||
<span id="p13files"></span>
|
<span id="p13files"></span>
|
||||||
</div>
|
</div>
|
||||||
<table id="p13toolbarBottom" style=width:100% cellpadding=0 cellspacing=0>
|
<table id="p13toolbarBottom" style=width:100% cellpadding=0 cellspacing=0>
|
||||||
<tr><td class=style6 style="text-align:left"> <span id="bottomstatus"></span></td></tr>
|
<tr><td class=style6 style="text-align:left;padding:3px"> <span id="p13bottomstatus"></span></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id=p14 style=display:none>
|
<div id=p14 style=display:none>
|
||||||
@ -1996,11 +1999,7 @@
|
|||||||
if (action == 3) gotoDevice(nodeid, 11); // Terminal
|
if (action == 3) gotoDevice(nodeid, 11); // Terminal
|
||||||
if (action == 4) gotoDevice(nodeid, 13); // Files
|
if (action == 4) gotoDevice(nodeid, 13); // Files
|
||||||
if (action == 5) gotoDevice(nodeid, 15); // Console
|
if (action == 5) gotoDevice(nodeid, 15); // Console
|
||||||
//if (action == 6) {
|
if (action == 6) { Q('viewselect').value = 3; Q('viewselect').onchange(); Q('autoConnectDesktopCheckbox').checked = true; Q('autoConnectDesktopCheckbox').onclick(); } // Multi-Desktop
|
||||||
//var nodes = "";
|
|
||||||
//$(":checkbox").each(function () { if ($(this).is(':checked')) { nodes += ($(this).val() + ";"); } });
|
|
||||||
//window.location = "multidesktop.aspx?node=" + nodes + "&auto=1";
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function cmmeshaction(action) {
|
function cmmeshaction(action) {
|
||||||
@ -3570,6 +3569,10 @@
|
|||||||
delete files;
|
delete files;
|
||||||
files = null;
|
files = null;
|
||||||
}
|
}
|
||||||
|
p13clipboard = p13clipboardFolder = null;
|
||||||
|
p13clipboardCut = 0;
|
||||||
|
p13updateClipview();
|
||||||
|
p13oldlinkpath = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var p13filetree = null;
|
var p13filetree = null;
|
||||||
@ -3609,15 +3612,11 @@
|
|||||||
return checkedNames;
|
return checkedNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//var p13oldlinkpath = null;
|
||||||
function p13updateFiles(checkedNames) {
|
function p13updateFiles(checkedNames) {
|
||||||
var html1 = '', html2 = '', displayPath = '<a style=cursor:pointer onclick=p13folderup(0)>Root</a>', fullPath = 'Root';
|
var html1 = '', html2 = '', displayPath = '<a style=cursor:pointer onclick=p13folderup(0)>Root</a>', fullPath = 'Root';
|
||||||
|
|
||||||
// Save all existing checked boxes
|
|
||||||
var checkedBoxes = [], checkboxes = document.getElementsByName('fd');
|
|
||||||
for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { checkedBoxes.push(checkboxes[i].value) }; } // Save all existing checked boxes
|
|
||||||
|
|
||||||
// Work on parsing the file path
|
// Work on parsing the file path
|
||||||
var oldlinkpath = p13filetreelocation.join('/');
|
|
||||||
var x = p13filetree.path.split('\\');
|
var x = p13filetree.path.split('\\');
|
||||||
p13filetreelocation = [];
|
p13filetreelocation = [];
|
||||||
for (var i in x) { if (x[i] != '') { p13filetreelocation.push(x[i]); } } // Remove empty spaces
|
for (var i in x) { if (x[i] != '') { p13filetreelocation.push(x[i]); } } // Remove empty spaces
|
||||||
@ -3646,11 +3645,11 @@
|
|||||||
var h = '';
|
var h = '';
|
||||||
if (f.t < 3) {
|
if (f.t < 3) {
|
||||||
var right = '', title = '';
|
var right = '', title = '';
|
||||||
h = "<div class=filelist file=999><input style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='" + f.nx + "'> <span style=float:right title=\"" + title + "\">" + right + "</span><span><div class=fileIcon" + f.t + "></div><a style=cursor:pointer onclick=p13folderset(\"" + encodeURIComponent(f.nx) + "\")>" + shortname + "</a></span></div>";
|
h = "<div class=filelist file=999><input file=999 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='" + f.nx + "'> <span style=float:right title=\"" + title + "\">" + right + "</span><span><div class=fileIcon" + f.t + "></div><a style=cursor:pointer onclick=p13folderset(\"" + encodeURIComponent(f.nx) + "\")>" + shortname + "</a></span></div>";
|
||||||
} else {
|
} else {
|
||||||
var link = shortname;
|
var link = shortname;
|
||||||
if (f.s > 0) { link = "<a target=\"_blank\" style=cursor:pointer onclick=\"p13downloadfile('" + encodeURIComponent(newlinkpath + '/' + name) + "','" + encodeURIComponent(name) + "'," + f.s + ")\">" + shortname + "</a>"; }
|
if (f.s > 0) { link = "<a target=\"_blank\" style=cursor:pointer onclick=\"p13downloadfile('" + encodeURIComponent(newlinkpath + '/' + name) + "','" + encodeURIComponent(name) + "'," + f.s + ")\">" + shortname + "</a>"; }
|
||||||
h = "<div class=filelist file=3><input style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='" + f.nx + "'> <span class=fsize>" + fdatestr + "</span><span style=float:right>" + fsize + "</span><span><div class=fileIcon" + f.t + "></div>" + link + "</span></div>";
|
h = "<div class=filelist file=3><input file=3 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='" + f.nx + "'> <span class=fsize>" + fdatestr + "</span><span style=float:right>" + fsize + "</span><span><div class=fileIcon" + f.t + "></div>" + link + "</span></div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (f.t < 3) { html1 += h; } else { html2 += h; }
|
if (f.t < 3) { html1 += h; } else { html2 += h; }
|
||||||
@ -3662,17 +3661,7 @@
|
|||||||
QE('p13FolderUp', p13filetreelocation.length != 0);
|
QE('p13FolderUp', p13filetreelocation.length != 0);
|
||||||
|
|
||||||
// Re-check all boxes if needed using names
|
// Re-check all boxes if needed using names
|
||||||
if (checkedNames != null) {
|
if (checkedNames != null) { var checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { if (checkedNames.indexOf(p13filetree.dir[checkboxes[i].value].n) >= 0) { checkboxes[i].checked = true; } } }
|
||||||
checkedBoxes = [];
|
|
||||||
checkboxes = document.getElementsByName('fd');
|
|
||||||
for (var i in filetreexx) { if (checkedNames.indexOf(filetreexx[i].n) >= 0) { checkedBoxes.push(filetreexx[i].nx); } }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Re-check all boxes if needed using ID's
|
|
||||||
if (oldlinkpath == newlinkpath) {
|
|
||||||
checkboxes = document.getElementsByName('fd');
|
|
||||||
for (var i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = (checkedBoxes.indexOf(checkboxes[i].value) >= 0); }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the actions buttons
|
// Update the actions buttons
|
||||||
p13setActions();
|
p13setActions();
|
||||||
@ -3714,8 +3703,11 @@
|
|||||||
QE('p13SelectAllButton', false);
|
QE('p13SelectAllButton', false);
|
||||||
Q('p13SelectAllButton').value = 'Select All';
|
Q('p13SelectAllButton').value = 'Select All';
|
||||||
QE('p13RefreshButton', false);
|
QE('p13RefreshButton', false);
|
||||||
|
QE('p13CutButton', false);
|
||||||
|
QE('p13CopyButton', false);
|
||||||
|
QE('p13PasteButton', false);
|
||||||
} else {
|
} else {
|
||||||
var cc = p13getFileSelCount(), tc = p13getFileCount();
|
var cc = p13getFileSelCount(), tc = p13getFileCount(), sfc = p13getFileSelCount(false); // In order: number of entires selected, number of total entries, number of selected entires that are files (not folders)
|
||||||
var winAgent = ((currentNode.agent.id > 0) && (currentNode.agent.id < 5));
|
var winAgent = ((currentNode.agent.id > 0) && (currentNode.agent.id < 5));
|
||||||
QE('p13DeleteFileButton', (cc > 0) && ((p13filetreelocation.length > 0) || (winAgent == false)));
|
QE('p13DeleteFileButton', (cc > 0) && ((p13filetreelocation.length > 0) || (winAgent == false)));
|
||||||
QE('p13NewFolderButton', ((p13filetreelocation.length > 0) || (winAgent == false)));
|
QE('p13NewFolderButton', ((p13filetreelocation.length > 0) || (winAgent == false)));
|
||||||
@ -3724,10 +3716,13 @@
|
|||||||
QE('p13SelectAllButton', tc > 0);
|
QE('p13SelectAllButton', tc > 0);
|
||||||
Q('p13SelectAllButton').value = (cc > 0 ? 'Select None' : 'Select All');
|
Q('p13SelectAllButton').value = (cc > 0 ? 'Select None' : 'Select All');
|
||||||
QE('p13RefreshButton', true);
|
QE('p13RefreshButton', true);
|
||||||
|
QE('p13CutButton', (cc > 0) && (cc == sfc) && ((p13filetreelocation.length > 0) || (winAgent == false)));
|
||||||
|
QE('p13CopyButton', (cc > 0) && (cc == sfc) && ((p13filetreelocation.length > 0) || (winAgent == false)));
|
||||||
|
QE('p13PasteButton', ((p13filetreelocation.length > 0) || (winAgent == false)) && ((p13clipboard != null) && (p13clipboard.length > 0)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function p13getFileSelCount() { var cc = 0; var checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) cc++; } return cc; }
|
function p13getFileSelCount(includeDirs) { var cc = 0; var checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { if ((checkboxes[i].checked) && ((includeDirs != false) || (checkboxes[i].attributes.file.value == "3"))) cc++; } return cc; }
|
||||||
function p13getFileCount() { var cc = 0; var checkboxes = document.getElementsByName('fd'); return checkboxes.length; }
|
function p13getFileCount() { var cc = 0; var checkboxes = document.getElementsByName('fd'); return checkboxes.length; }
|
||||||
function p13selectallfile() { var nv = (p13getFileSelCount() == 0), checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = nv; } p13setActions(); }
|
function p13selectallfile() { var nv = (p13getFileSelCount() == 0), checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = nv; } p13setActions(); }
|
||||||
function p13createfolder() { setDialogMode(2, "New Folder", 3, p13createfolderEx, '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% />'); focusTextBox('p13renameinput'); p13fileNameCheck(); }
|
function p13createfolder() { setDialogMode(2, "New Folder", 3, p13createfolderEx, '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% />'); focusTextBox('p13renameinput'); p13fileNameCheck(); }
|
||||||
@ -3736,10 +3731,17 @@
|
|||||||
function p13deletefileEx() { var delfiles = [], checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { delfiles.push(p13filetree.dir[checkboxes[i].value].n); } } files.send(JSON.stringify({ action: 'rm', reqid: 1, path: p13filetreelocation.join('/'), delfiles: delfiles })); p13folderup(999); }
|
function p13deletefileEx() { var delfiles = [], checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { delfiles.push(p13filetree.dir[checkboxes[i].value].n); } } files.send(JSON.stringify({ action: 'rm', reqid: 1, path: p13filetreelocation.join('/'), delfiles: delfiles })); p13folderup(999); }
|
||||||
function p13renamefile() { var renamefile, checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { renamefile = p13filetree.dir[checkboxes[i].value].n; } } setDialogMode(2, "Rename", 3, p13renamefileEx, '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="' + renamefile + '" />', { action: 'rename', path: p13filetreelocation.join('/'), oldname: renamefile}); focusTextBox('p13renameinput'); p13fileNameCheck(); }
|
function p13renamefile() { var renamefile, checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { renamefile = p13filetree.dir[checkboxes[i].value].n; } } setDialogMode(2, "Rename", 3, p13renamefileEx, '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="' + renamefile + '" />', { action: 'rename', path: p13filetreelocation.join('/'), oldname: renamefile}); focusTextBox('p13renameinput'); p13fileNameCheck(); }
|
||||||
function p13renamefileEx(b, t) { t.newname = Q('p13renameinput').value; files.send(JSON.stringify(t)); p13folderup(999); }
|
function p13renamefileEx(b, t) { t.newname = Q('p13renameinput').value; files.send(JSON.stringify(t)); p13folderup(999); }
|
||||||
function p13fileNameCheck(e) { var x = isFilenameValid(Q('p13renameinput').value); QE('idx_dlgOkButton', x); if ((x == true) && (e.keyCode == 13)) { dialogclose(1); } }
|
function p13fileNameCheck(e) { var x = isFilenameValid(Q('p13renameinput').value); QE('idx_dlgOkButton', x); if ((x == true) && (e != null) && (e.keyCode == 13)) { dialogclose(1); } }
|
||||||
function p13uploadFile() { setDialogMode(2, "Upload File", 3, p13uploadFileEx, '<input type=file name=files id=p13uploadinput style=width:100% multiple=multiple onchange="updateUploadDialogOk(\'p13uploadinput\')" />'); updateUploadDialogOk('p13uploadinput'); }
|
function p13uploadFile() { setDialogMode(2, "Upload File", 3, p13uploadFileEx, '<input type=file name=files id=p13uploadinput style=width:100% multiple=multiple onchange="updateUploadDialogOk(\'p13uploadinput\')" />'); updateUploadDialogOk('p13uploadinput'); }
|
||||||
function p13uploadFileEx() { p13doUploadFiles(Q('p13uploadinput').files); }
|
function p13uploadFileEx() { p13doUploadFiles(Q('p13uploadinput').files); }
|
||||||
|
|
||||||
|
var p13clipboard = null, p13clipboardFolder = null, p13clipboardCut = 0;
|
||||||
|
function p13copyFile(cut) { var checkboxes = document.getElementsByName('fd'); p13clipboard = []; p13clipboardCut = cut, p13clipboardFolder = p13targetpath; for (var i = 0; i < checkboxes.length; i++) { if ((checkboxes[i].checked) && (checkboxes[i].attributes.file.value == "3")) { p13clipboard.push(p13filetree.dir[checkboxes[i].value].n); } } p13updateClipview(); }
|
||||||
|
function p13pasteFile() { var x = ''; if ((p13clipboard != null) && (p13clipboard.length > 0)) { x = 'Confim ' + (p13clipboardCut == 0?'copy':'move') + ' of ' + p13clipboard.length + ' entrie' + ((p13clipboard.length > 1)?'s':'') + ' to this location?' } setDialogMode(2, "Paste", 3, p13pasteFileEx, x); }
|
||||||
|
function p13pasteFileEx() { files.send(JSON.stringify({ action: (p13clipboardCut == 0?'copy':'move'), reqid: 1, scpath: p13clipboardFolder, dspath: p13targetpath, names: p13clipboard })); p13folderup(999); if (p13clipboardCut == 1) { p13clipboard = null, p13clipboardFolder = null, p13clipboardCut = 0; p13updateClipview(); } }
|
||||||
|
function p13updateClipview() { var x = ''; if ((p13clipboard != null) && (p13clipboard.length > 0)) { x = 'Holding ' + p13clipboard.length + ' entrie' + ((p13clipboard.length > 1)?'s':'') + ' for ' + (p13clipboardCut == 0?'copy':'move') + ', <a onclick=p13clearClip() style=cursor:pointer>Clear</a>.' } QH('p13bottomstatus', x); p13setActions(); }
|
||||||
|
function p13clearClip() { p13clipboard = null; p13clipboardFolder = null; p13clipboardCut = 0; p13updateClipview(); }
|
||||||
|
|
||||||
function p13fileDragDrop(e) {
|
function p13fileDragDrop(e) {
|
||||||
haltEvent(e);
|
haltEvent(e);
|
||||||
QV('p13bigfail', false);
|
QV('p13bigfail', false);
|
||||||
|
Loading…
Reference in New Issue
Block a user