diff --git a/_embed/public/js/common.js b/_embed/public/js/common.js index d9d069a3..2f8363af 100644 --- a/_embed/public/js/common.js +++ b/_embed/public/js/common.js @@ -188,11 +188,49 @@ function selectMoveFolder(event) { } } -function moveSelected(event) { - event.preventDefault(); +function loadNextFolder(event) { + let request = new XMLHttpRequest(), + prompt = document.querySelector("form.prompt.active"); + prompt.addEventListener("submit", moveSelected); + + request.open("GET", "/" + event.target.innerHTML); + request.setRequestHeader("Accept", "application/json"); + request.send(); + request.onreadystatechange = function() { + if(request.readyState == 4 && request.status == 200) { + prompt.querySelector("ul").innerHTML = ""; + for(let f of JSON.parse(request.response)) { + if(f.URL.substr(f.URL.length - 1) == "/") { + if(selectedItems.includes(btoa(f.URL.split("/")[1]))) continue; + let newNode = document.createElement("li"); + newNode.innerHTML = (f.URL.replace("/" + event.target.innerHTML, "").split("/").join("")); + newNode.setAttribute("aria-selected", false); + + newNode.addEventListener("dblclick", loadNextFolder); + newNode.addEventListener("click", selectMoveFolder); + + prompt.querySelector("ul").appendChild(newNode); + } + } + } + } } -function loadNextFolder(event) { +function moveSelected(event) { + event.preventDefault(); + let request = new XMLHttpRequest(), + oldLink = toWebDavURL(window.location.pathname), + newLink = toWebDavURL(event.srcElement.querySelector("li[aria-selected=true]").innerHTML + "/"); + request.open("MOVE", oldLink); + request.setRequestHeader("Destination", newLink); + request.send(); + request.onreadystatechange = function() { + if(request.readyState == 4) { + if(request.status == 200 || request.status == 204) { + window.reload(); + } + } + } } function moveEvent(event) { @@ -206,9 +244,10 @@ function moveEvent(event) { request.onreadystatechange = function() { if(request.readyState == 4) { if(request.status == 200) { - let clone = document.importNode(templates.move.content, true); + let prompt = document.importNode(templates.move.content, true); - clone.querySelector("p").innerHTML = `Choose new house for your file(s)/folder(s):`; + prompt.querySelector("p").innerHTML = `Choose new house for your file(s)/folder(s):`; + prompt.querySelector("form").addEventListener("submit", moveSelected); for(let f of JSON.parse(request.response)) { if(f.URL.split("/").length == 3) { @@ -219,13 +258,12 @@ function moveEvent(event) { newNode.addEventListener("dblclick", loadNextFolder); newNode.addEventListener("click", selectMoveFolder); - newNode.addEventListener("submit", moveSelected); - clone.querySelector("div.file-list ul").appendChild(newNode); + prompt.querySelector("div.file-list ul").appendChild(newNode); } } - document.body.appendChild(clone); + document.body.appendChild(prompt); document.querySelector(".overlay").classList.add("active"); document.querySelector(".prompt").classList.add("active"); }