F diff --git a/css/style.css b/css/style.css --- a/css/style.css +++ b/css/style.cssborder-color: black;}- .foldercontents, .filecontents {+ .foldercontents, .filecontents, .filecontentsroot {background: rgba(250, 250, 250, .9);flex: 1 0 0;}- .filecontents {+ .filecontents, .filecontentsroot {background: white;}align-self: center;}- .pathentry:hover {+ .pathentry:last-child {+ cursor: inherit;+ }++ .pathentry:not(:last-child):hover {text-decoration: underline;}background: white;background: rgba(255,255,255, 0.9);}++ .window > h2 .close_button {+ border-left: 1px solid #ccc;+ }++ .close_button:hover {+ background: white;+ }F diff --git a/loggedin.js b/loggedin.js --- a/loggedin.js +++ b/loggedin.js}}+ function read_file_contents(text, cb, folder, filename) {+ var data = new FormData();+ data.append('folder', folder);+ data.append('filename', filename);++ let xhr = new XMLHttpRequest();+ xhr.open('POST', '/php/readfile.php', true);++ if (text) {+ xhr.onload = function () {+ cb(e.responseText);+ };+ } else {+ xhr.responseType = 'arraybuffer';+ xhr.onload = function () {+ cb(xhr.response);+ };+ }++ xhr.send(data);+ }+function openfile_nondir() {var mimetype = "text/plain";function add_link_functionality(link, length) {link.onclick = (e) => {- focus.pwd.length = length,+ if (length < focus.pwd.length) {+ focus.pwd.length = length;openfile(true);+ }}link.onmouseup = (e) => {function make_share_window(folder, filename) {var wnd = make_window_base(null, 400, 400, 400, 0);- wnd.h2.innerText = "Share " + filename;- wnd.h2.style.padding = "0.2rem 0.4rem";+ wnd.h2.style.padding = "0.0rem 0rem 0.0rem 0.8rem";+ wnd.h2.style.display = 'flex';++ var heading = mk(wnd.h2, 'span');+ heading.innerText = "Share " + filename;+ heading.style.display = 'flex';+ heading.style.alignItems = 'center';+ heading.style.flex = "1 1 0";++ var x_button = mk(wnd.h2, 'button', 'close_button');+ x_button.innerText = "X";+ x_button.onclick = delete_window;wnd.foldercontents = mk(wnd.visuals, 'div', 'share_dialog_contents');wnd.foldercontents.style.padding = "0.5rem";return wnd;}+ function download_file(in_file, filename) {++ if (in_file) {+ var folder = get_path(focus.pwd.length - 1);+ filename = focus.pwd[focus.pwd.length - 1];+ } else {+ var folder = get_path();+ }++ read_file_contents(false, (x) => {+ var blob = new Blob([new Uint8Array(x, 0, x.length)]);+ var url = URL.createObjectURL(blob);+ var a = document.createElement('a');+ a.href = url;+ a.download = "filename";+ document.body.appendChild(a);+ a.click();+ setTimeout(() => {+ document.body.removeChild(a);+ URL.revokeObjectURL(url);+ });+ }, folder, filename);++ return;+ }++++function delete_window() {var index = windows.indexOf(focus);if (index >= 0) {}{- wnd.filecontentsroot = mk(wnd.visuals, 'div');+ wnd.filecontentsroot = mk(wnd.visuals, 'div', 'filecontentsroot');var h3 = mk(wnd.filecontentsroot, 'h3');var download_btn = mk(h3, 'button');download_btn.innerText = "Download";- download_btn.onclick = () => { download_file(); }+ download_btn.onclick = () => { download_file(true); }mk(h3, 'div', 'separator');var download_btn = mk(h3, 'button');download_btn.innerText = "Share";download_btn.onclick = () => { share(true); }-+mk(h3, 'div', 'separator');wnd.filecontents = mk(wnd.filecontentsroot, 'div', 'filecontents');focus.pwd.push(fileview.filename);openfile(fileview.is_directory);}],- ['Open in New Window', () => {alert('not implemented')}],+ // ['Open in New Window', () => {alert('not implemented')}],];if (is_in_trash) {} else if (!is_trash) {context_list.push(['Rename', () => { rename_file(fileview.filename); }],- ['Share', () => { share(false, fileview.filename); }],+ );+ if (!fileview.is_directory) {+ context_list.push(+ ['Share', () => { share(false, fileview.filename); }],+ ['Download', () => { download_file(false, fileview.filename); }],+ );+ }+ context_list.push(['Delete', () => { move_to_trash(fileview.filename); }]);}