From fb24f0bc60d9ff910d49646aaeadad99f22826e5 Mon Sep 17 00:00:00 2001 From: Roland Stigge Date: Sun, 7 Jan 2018 16:07:49 +0100 Subject: Implemented file move --- html/webbox.js | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 97 insertions(+), 3 deletions(-) (limited to 'html/webbox.js') diff --git a/html/webbox.js b/html/webbox.js index faa2bb2..58b04fb 100644 --- a/html/webbox.js +++ b/html/webbox.js @@ -341,6 +341,7 @@ function createDir() { } document.getElementById("dialog").innerHTML = document.getElementById("create-dir-dialog").innerHTML; + document.getElementById("newdir").focus(); } function upload() { @@ -373,12 +374,105 @@ function onUploadFile() { xhr.send(formData); } -function deleteItem() { - alert("TBD"); +function deleteItems() { + showDialog(); + + var files = getSelectedFiles(); + if (files.length == 0) { + document.getElementById("dialog").innerHTML = "No files selected."; + document.getElementById("okbutton").onclick = hideDialog; + return; + } + + var message = "Are sure to delete the following files and directories?

"; + + for (var i = 0; i < files.length; i++) { + message += files[i] + "
"; + } + + document.getElementById("dialog").innerHTML = message; + + document.getElementById("okbutton").onclick = function() { + + var xhr = new XMLHttpRequest(); + + xhr.onreadystatechange = function() { + if (this.readyState != 4 || this.status != 200) { + return; + } + + document.getElementById("dialog").innerHTML = xhr.responseText; + document.getElementById("okbutton").onclick = hideDialog; + loadContents(currentDir); // load new file list with deleted items + } + + var parser = new DOMParser(); + var xmlDocument = parser.parseFromString("", "text/xml"); + var filesElement = xmlDocument.getElementsByTagName("files")[0]; + + for (var i = 0; i < files.length; i++) { + var fileElement = xmlDocument.createElement("file"); + fileElement.appendChild(document.createTextNode(files[i])); + filesElement.appendChild(fileElement); + } + + xhr.open("POST", "/bin/query" + currentDir + "?command=delete", true); + xhr.setRequestHeader("Content-type", "text/xml"); + xhr.send(xmlDocument); + } } function move() { - alert("TBD"); + showDialog(); + + var files = getSelectedFiles(); + if (files.length == 0) { + document.getElementById("dialog").innerHTML = "No files selected."; + document.getElementById("okbutton").onclick = hideDialog; + return; + } + + var message = ""; + for (var i = 0; i < files.length; i++) { + message += files[i] + "
"; + } + + document.getElementById("dialog").innerHTML = document.getElementById("move-dialog").innerHTML; + document.getElementById("movedir").focus(); + document.getElementById("movefiles").innerHTML = message; + + document.getElementById("okbutton").onclick = function() { + + var xhr = new XMLHttpRequest(); + + xhr.onreadystatechange = function() { + if (this.readyState != 4 || this.status != 200) { + return; + } + + document.getElementById("dialog").innerHTML = xhr.responseText; + document.getElementById("okbutton").onclick = hideDialog; + loadContents(currentDir); // load new file list with deleted items + } + + var parser = new DOMParser(); + var xmlDocument = parser.parseFromString("", "text/xml"); + var filesElement = xmlDocument.getElementsByTagName("request")[0]; + + var targetElement = xmlDocument.createElement("target"); + targetElement.appendChild(document.createTextNode(document.getElementById("movedir").value)); + filesElement.appendChild(targetElement); + + for (var i = 0; i < files.length; i++) { + var fileElement = xmlDocument.createElement("file"); + fileElement.appendChild(document.createTextNode(files[i])); + filesElement.appendChild(fileElement); + } + + xhr.open("POST", "/bin/query" + currentDir + "?command=move", true); + xhr.setRequestHeader("Content-type", "text/xml"); + xhr.send(xmlDocument); + } } // File info: date, size, type -- cgit v1.2.3