From b39ae2a8b4d2bddf054a45d52f9f52c0e971aaa1 Mon Sep 17 00:00:00 2001 From: Roland Stigge Date: Thu, 11 Jan 2018 20:18:29 +0100 Subject: Add logout, rename and ui improvements --- html/webbox.js | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 2 deletions(-) (limited to 'html/webbox.js') diff --git a/html/webbox.js b/html/webbox.js index 40a7a1a..7c1b43f 100644 --- a/html/webbox.js +++ b/html/webbox.js @@ -2,6 +2,16 @@ var currentDir = "/"; var listElements; var numberOfSelectedRows = 0; +function clearContents() { + var result = ""; + result += ""; + result += "
(empty)
" + + var listElement = document.getElementById("list"); + + listElement.innerHTML = result; +} + function loadContents(dir) { numberOfSelectedRows = 0; @@ -39,7 +49,7 @@ function loadContents(dir) { result += "" - listElement = document.getElementById("list"); + var listElement = document.getElementById("list"); listElement.innerHTML = result; @@ -301,10 +311,16 @@ function setCurrentDir(newDir) { } function download(filename) { + var files = getSelectedFiles(); + + // if activated via menu, download directly (not as zip) + if (files.length == 1 && filename === undefined) { + filename = files[0]; + } + if (filename === undefined) { // download selection as ZIP showDialog(); - var files = getSelectedFiles(); if (files.length == 0) { document.getElementById("dialog").innerHTML = "No files selected."; document.getElementById("okbutton").onclick = hideDialog; @@ -558,6 +574,70 @@ function move() { xhr.send(xmlDocument); } } +function rename() { + showDialog(); + + var files = getSelectedFiles(); + if (files.length == 0) { + document.getElementById("dialog").innerHTML = "No files selected."; + document.getElementById("okbutton").onclick = hideDialog; + return; + } + if (files.length > 1) { + document.getElementById("dialog").innerHTML = "Only one file can be renamed at once."; + document.getElementById("okbutton").onclick = hideDialog; + return; + } + + document.getElementById("renameold").innerHTML = files[0]; + + document.getElementById("dialog").innerHTML = document.getElementById("rename-dialog").innerHTML; + document.getElementById("renamenew").value = files[0]; + document.getElementById("renamenew").focus(); + document.getElementById("renamenew").onkeydown = function(evt) { + if (evt.key == "Enter") { + document.getElementById("okbutton").click(); + } + } + + document.getElementById("okbutton").onclick = function() { + + var xhr = new XMLHttpRequest(); + + xhr.onreadystatechange = function() { + if (this.readyState != 4) { + return; + } + if (this.status != 200) { + document.getElementById("dialog").innerHTML = "HTTP error"; + } else { + document.getElementById("dialog").innerHTML = xhr.responseText; + } + + document.getElementById("okbutton").onclick = hideDialog; + document.getElementById("okbutton").focus(); + loadContents(currentDir); // load new file list with deleted items + } + + var filename = getSelectedFiles()[0]; + + var parser = new DOMParser(); + var xmlDocument = parser.parseFromString("", "text/xml"); + var filesElement = xmlDocument.getElementsByTagName("request")[0]; + + var oldnameElement = xmlDocument.createElement("oldname"); + oldnameElement.appendChild(document.createTextNode(document.getElementById("renameold").childNodes[0].nodeValue)); + filesElement.appendChild(oldnameElement); + + var newnameElement = xmlDocument.createElement("newname"); + newnameElement.appendChild(document.createTextNode(document.getElementById("renamenew").value)); + filesElement.appendChild(newnameElement); + + xhr.open("POST", "/bin/query" + currentDir + "?command=rename", true); + xhr.setRequestHeader("Content-type", "text/xml"); + xhr.send(xmlDocument); + } +} // File info: date, size, type function info() { @@ -630,3 +710,14 @@ function refresh() { loadContents(currentDir); // load new file list } +function logout() { + var menu = document.getElementsByClassName("menu")[0]; + var firsttd = menu.getElementsByClassName("firsttd")[0]; + firsttd.innerHTML = "/"; + + clearContents(); + + var p = window.location.protocol + '//' + // current location must return 200 OK for this GET + window.location = window.location.href.replace(p, p + 'logout:password@') +} -- cgit v1.2.3