aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradam <adam@>2021-02-13 16:59:28 +0200
committeradam <adam@>2021-02-13 16:59:28 +0200
commit3ed9e9c0350ecb299373b7e58139d142c72620b7 (patch)
tree42015a0b9ae1805e64753205236dc77c164dc8d9
parentdf44a7c0de9fcb2f9909a74f69ef8f296826a516 (diff)
parentf31515a86ee23ef9f0cd0edf9c946ec5e9aa2b09 (diff)
downloadfileup-3ed9e9c0350ecb299373b7e58139d142c72620b7.tar.gz
Merge https://github.com/alexvitkov/india
-rw-r--r--loggedin.js143
-rw-r--r--mimeicons/application-octet-stream.pngbin642 -> 520 bytes
-rw-r--r--mimeicons/application-pdf.pngbin2510 -> 1852 bytes
-rw-r--r--mimeicons/application-rss_xml.pngbin2072 -> 1612 bytes
-rw-r--r--mimeicons/application-x-bittorrent.pngbin955 -> 791 bytes
-rw-r--r--mimeicons/application-x-cd-image.pngbin3996 -> 2914 bytes
-rw-r--r--mimeicons/application-x-executable.pngbin2621 -> 2307 bytes
-rw-r--r--mimeicons/application-x-object.pngbin2913 -> 2189 bytes
-rw-r--r--mimeicons/audio-x-generic.pngbin1205 -> 1095 bytes
-rw-r--r--mimeicons/font-x-generic.pngbin2564 -> 2059 bytes
-rw-r--r--mimeicons/image-jpeg.pngbin0 -> 409 bytes
-rw-r--r--mimeicons/image-jpg.pngbin0 -> 409 bytes
-rw-r--r--mimeicons/image-png.pngbin0 -> 409 bytes
-rw-r--r--mimeicons/image-x-generic.pngbin494 -> 409 bytes
-rw-r--r--mimeicons/package-x-generic.pngbin539 -> 458 bytes
-rw-r--r--mimeicons/text-html.pngbin3293 -> 2440 bytes
-rw-r--r--mimeicons/text-vnd.trolltech.linguist.pngbin2815 -> 1995 bytes
-rw-r--r--mimeicons/text-x-c.pngbin0 -> 2415 bytes
-rw-r--r--mimeicons/text-x-changelog.pngbin1329 -> 1022 bytes
-rw-r--r--mimeicons/text-x-chdr.pngbin2077 -> 1622 bytes
-rw-r--r--mimeicons/text-x-cpp.pngbin2354 -> 1661 bytes
-rw-r--r--mimeicons/text-x-csrc.pngbin3152 -> 0 bytes
-rw-r--r--mimeicons/text-x-css.pngbin1531 -> 1526 bytes
-rw-r--r--mimeicons/text-x-generic.pngbin1027 -> 781 bytes
-rw-r--r--mimeicons/text-x-go.pngbin4613 -> 3438 bytes
-rw-r--r--mimeicons/text-x-javascript.pngbin3046 -> 2260 bytes
-rw-r--r--mimeicons/text-x-preview.pngbin521 -> 433 bytes
-rw-r--r--mimeicons/text-x-python.pngbin3255 -> 2517 bytes
-rw-r--r--mimeicons/text-x-script.pngbin1130 -> 846 bytes
-rw-r--r--mimeicons/text-x-vala.pngbin2669 -> 2018 bytes
-rw-r--r--mimeicons/video-x-generic.pngbin728 -> 541 bytes
-rw-r--r--mimeicons/x-office-calendar.pngbin1487 -> 1225 bytes
-rw-r--r--mimeicons/x-office-document-template.pngbin2596 -> 2097 bytes
-rw-r--r--mimeicons/x-office-document.pngbin1207 -> 903 bytes
-rw-r--r--mimeicons/x-office-drawing-template.pngbin3690 -> 2968 bytes
-rw-r--r--mimeicons/x-office-drawing.pngbin2994 -> 2349 bytes
-rw-r--r--mimeicons/x-office-presentation-template.pngbin2432 -> 1998 bytes
-rw-r--r--mimeicons/x-office-presentation.pngbin1446 -> 1084 bytes
-rw-r--r--mimeicons/x-office-spreadsheet-template.pngbin2009 -> 1774 bytes
-rw-r--r--mimeicons/x-office-spreadsheet.pngbin762 -> 584 bytes
40 files changed, 125 insertions, 18 deletions
diff --git a/loggedin.js b/loggedin.js
index 53aa7c7..fff6054 100644
--- a/loggedin.js
+++ b/loggedin.js
@@ -63,6 +63,59 @@ function on_file_added(_e) {
}
}
+// https://stackoverflow.com/questions/7370943/retrieving-binary-file-content-using-javascript-base64-encode-it-and-reverse-de
+function base64ArrayBuffer(arrayBuffer) {
+ var base64 = ''
+ var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+
+ var bytes = new Uint8Array(arrayBuffer)
+ var byteLength = bytes.byteLength
+ var byteRemainder = byteLength % 3
+ var mainLength = byteLength - byteRemainder
+
+ var a, b, c, d
+ var chunk
+
+ // Main loop deals with bytes in chunks of 3
+ for (var i = 0; i < mainLength; i = i + 3) {
+ // Combine the three bytes into a single integer
+ chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]
+
+ // Use bitmasks to extract 6-bit segments from the triplet
+ a = (chunk & 16515072) >> 18 // 16515072 = (2^6 - 1) << 18
+ b = (chunk & 258048) >> 12 // 258048 = (2^6 - 1) << 12
+ c = (chunk & 4032) >> 6 // 4032 = (2^6 - 1) << 6
+ d = chunk & 63 // 63 = 2^6 - 1
+
+ // Convert the raw binary segments to the appropriate ASCII encoding
+ base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]
+ }
+
+ // Deal with the remaining bytes and padding
+ if (byteRemainder == 1) {
+ chunk = bytes[mainLength]
+
+ a = (chunk & 252) >> 2 // 252 = (2^6 - 1) << 2
+
+ // Set the 4 least significant bits to zero
+ b = (chunk & 3) << 4 // 3 = 2^2 - 1
+
+ base64 += encodings[a] + encodings[b] + '=='
+ } else if (byteRemainder == 2) {
+ chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]
+
+ a = (chunk & 64512) >> 10 // 64512 = (2^6 - 1) << 10
+ b = (chunk & 1008) >> 4 // 1008 = (2^6 - 1) << 4
+
+ // Set the 2 least significant bits to zero
+ c = (chunk & 15) << 2 // 15 = 2^4 - 1
+
+ base64 += encodings[a] + encodings[b] + encodings[c] + '='
+ }
+
+ return base64
+}
+
function update_path_visuals() {
var the_path = focus.visuals.getElementsByClassName('path')[0];
@@ -92,6 +145,16 @@ function update_path_visuals() {
}
function openfile_nondir() {
+ var mimetype = "text/plain";
+
+ for (const f of files) {
+ if (f.filename == focus.pwd[focus.pwd.length - 1])
+ mimetype = f.mimetype;
+ }
+
+ while (focus.filecontents.children.length > 0)
+ focus.filecontents.removeChild(focus.filecontents.lastChild);
+
var data = new FormData();
data.append('folder', get_path(focus.pwd.length - 1));
data.append('filename', focus.pwd[focus.pwd.length - 1]);
@@ -104,13 +167,25 @@ function openfile_nondir() {
xhr.open('POST', '/php/readfile.php', true);
- focus.filecontents.innerText = "Loading...";
+ focus.filecontents.innerText = "";
focus.filecontents.style.display = 'block';
focus.foldercontents.style.display = 'none';
- xhr.onload = function () {
- focus.filecontents.innerText = xhr.responseText;
- };
+ if (mimetype.split("/")[0] == "image") {
+ xhr.responseType = 'arraybuffer';
+ xhr.onload = function () {
+ var b = base64ArrayBuffer(xhr.response);
+ var image = new Image();
+ image.src = `data:image/png;base64,${b}`;
+ focus.filecontents.appendChild(image);
+ }
+ }
+ else {
+ xhr.onload = function () {
+ focus.filecontents.innerText = xhr.responseText;
+ };
+ }
+
xhr.send(data);
}
@@ -169,11 +244,18 @@ function move_to_trash(filename) {
move_file("/trash", filename, path_combine(get_path(), filename));
}
-function delete_file(filename) {
- var file_full_path = path_combine(get_path(), filename);
+function restore_from_trash(filename) {
+ var split = filename.split("/");
+ var new_filename = split.pop();
+ var new_directory = "/" + split.join("/");
+ move_file(new_directory, filename, new_filename);
+}
+
+function delete_file(filename) {
var data = new FormData();
- data.append('path', file_full_path);
+ data.append('folder', get_path());
+ data.append('filename', filename);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/php/delete.php', true);
@@ -340,8 +422,8 @@ function make_window(pwd) {
wnd_html.appendChild(h2);
//h2.onmousedown = (e) => {
- //begin_drag(e, wnd_html);
- // e.preventDefault();
+ //begin_drag(e, wnd_html);
+ // e.preventDefault();
//};
path = document.createElement('div');
@@ -399,6 +481,11 @@ function make_window(pwd) {
function add_file_visuals(fileview) {
+ // Are we in a subdirectory of the trash folder
+ var is_in_trash = focus.pwd.length > 0 && focus.pwd[0] == "trash";
+ // Is the current filewview the trash folder itself
+ var is_trash = focus.pwd.length == 0 && fileview.filename == "trash";
+
var visuals = document.createElement('div');
fileview.visuals = visuals;
@@ -421,22 +508,37 @@ function add_file_visuals(fileview) {
visuals.oncontextmenu = (e) => {
if (!dragging) {
- context(e, [
+
+ var context_list = [
['Open', () => {
focus.pwd.push(fileview.filename);
openfile(fileview.is_directory);
- }],
+ }],
['Open in New Window', () => {alert('not implemented')}],
- ['Rename', () => { rename_file(fileview.filename); }],
- ['Share', () => {alert('not implemented')}],
- ['Delete', () => { move_to_trash(fileview.filename); }],
- ]);
+ ];
+
+ if (is_in_trash) {
+ context_list.push(['Restore', () => { restore_from_trash(fileview.filename); }]);
+ context_list.push(['Delete forever', () => { delete_file(fileview.filename); }]);
+ } else if (!is_trash) {
+ context_list.push(
+ ['Rename', () => { rename_file(fileview.filename); }],
+ ['Share', () => {alert('not implemented')}],
+ ['Delete', () => { move_to_trash(fileview.filename); }]
+ );
+ }
+
+ context(e, context_list);
}
e.preventDefault();
e.stopPropagation();
}
visuals.ondragstart = (e) => {
+ if (is_trash || is_in_trash) {
+ e.preventDefault();
+ return;
+ }
begin_drag_fileview(e, fileview);
e.preventDefault();
};
@@ -451,10 +553,15 @@ function add_file_visuals(fileview) {
visuals.classList.add('file');
filename.classList.add('filename');
- filename.innerText = fileview.filename;
- if (fileview.mimetype == "pending")
- visuals.classList.add('pending');
+ if (is_in_trash) {
+ var split = fileview.filename.split("/");
+ filename.innerText = split[split.length - 1];
+ } else if (is_trash) {
+ filename.innerText = "Trash";
+ } else {
+ filename.innerText = fileview.filename;
+ }
visuals.appendChild(img);
visuals.appendChild(filename);
diff --git a/mimeicons/application-octet-stream.png b/mimeicons/application-octet-stream.png
index 741abd2..327ff28 100644
--- a/mimeicons/application-octet-stream.png
+++ b/mimeicons/application-octet-stream.png
Binary files differ
diff --git a/mimeicons/application-pdf.png b/mimeicons/application-pdf.png
index a5589da..7935b68 100644
--- a/mimeicons/application-pdf.png
+++ b/mimeicons/application-pdf.png
Binary files differ
diff --git a/mimeicons/application-rss_xml.png b/mimeicons/application-rss_xml.png
index 22095de..39ea360 100644
--- a/mimeicons/application-rss_xml.png
+++ b/mimeicons/application-rss_xml.png
Binary files differ
diff --git a/mimeicons/application-x-bittorrent.png b/mimeicons/application-x-bittorrent.png
index f1d5ddd..50b292f 100644
--- a/mimeicons/application-x-bittorrent.png
+++ b/mimeicons/application-x-bittorrent.png
Binary files differ
diff --git a/mimeicons/application-x-cd-image.png b/mimeicons/application-x-cd-image.png
index 562c663..64cdbc8 100644
--- a/mimeicons/application-x-cd-image.png
+++ b/mimeicons/application-x-cd-image.png
Binary files differ
diff --git a/mimeicons/application-x-executable.png b/mimeicons/application-x-executable.png
index 7c65294..01602a4 100644
--- a/mimeicons/application-x-executable.png
+++ b/mimeicons/application-x-executable.png
Binary files differ
diff --git a/mimeicons/application-x-object.png b/mimeicons/application-x-object.png
index e8e1a9a..e8928ea 100644
--- a/mimeicons/application-x-object.png
+++ b/mimeicons/application-x-object.png
Binary files differ
diff --git a/mimeicons/audio-x-generic.png b/mimeicons/audio-x-generic.png
index 624c09c..33f7aef 100644
--- a/mimeicons/audio-x-generic.png
+++ b/mimeicons/audio-x-generic.png
Binary files differ
diff --git a/mimeicons/font-x-generic.png b/mimeicons/font-x-generic.png
index ab3d469..bf89e93 100644
--- a/mimeicons/font-x-generic.png
+++ b/mimeicons/font-x-generic.png
Binary files differ
diff --git a/mimeicons/image-jpeg.png b/mimeicons/image-jpeg.png
new file mode 100644
index 0000000..1d5a936
--- /dev/null
+++ b/mimeicons/image-jpeg.png
Binary files differ
diff --git a/mimeicons/image-jpg.png b/mimeicons/image-jpg.png
new file mode 100644
index 0000000..1d5a936
--- /dev/null
+++ b/mimeicons/image-jpg.png
Binary files differ
diff --git a/mimeicons/image-png.png b/mimeicons/image-png.png
new file mode 100644
index 0000000..1d5a936
--- /dev/null
+++ b/mimeicons/image-png.png
Binary files differ
diff --git a/mimeicons/image-x-generic.png b/mimeicons/image-x-generic.png
index 17071bb..1d5a936 100644
--- a/mimeicons/image-x-generic.png
+++ b/mimeicons/image-x-generic.png
Binary files differ
diff --git a/mimeicons/package-x-generic.png b/mimeicons/package-x-generic.png
index 1fca710..d435109 100644
--- a/mimeicons/package-x-generic.png
+++ b/mimeicons/package-x-generic.png
Binary files differ
diff --git a/mimeicons/text-html.png b/mimeicons/text-html.png
index 31ba1bd..d95975e 100644
--- a/mimeicons/text-html.png
+++ b/mimeicons/text-html.png
Binary files differ
diff --git a/mimeicons/text-vnd.trolltech.linguist.png b/mimeicons/text-vnd.trolltech.linguist.png
index 3cd52b3..221a83b 100644
--- a/mimeicons/text-vnd.trolltech.linguist.png
+++ b/mimeicons/text-vnd.trolltech.linguist.png
Binary files differ
diff --git a/mimeicons/text-x-c.png b/mimeicons/text-x-c.png
new file mode 100644
index 0000000..355acbf
--- /dev/null
+++ b/mimeicons/text-x-c.png
Binary files differ
diff --git a/mimeicons/text-x-changelog.png b/mimeicons/text-x-changelog.png
index 0d3f7bf..fea4262 100644
--- a/mimeicons/text-x-changelog.png
+++ b/mimeicons/text-x-changelog.png
Binary files differ
diff --git a/mimeicons/text-x-chdr.png b/mimeicons/text-x-chdr.png
index adfc066..4cbe714 100644
--- a/mimeicons/text-x-chdr.png
+++ b/mimeicons/text-x-chdr.png
Binary files differ
diff --git a/mimeicons/text-x-cpp.png b/mimeicons/text-x-cpp.png
index fa76ba0..31dd7ad 100644
--- a/mimeicons/text-x-cpp.png
+++ b/mimeicons/text-x-cpp.png
Binary files differ
diff --git a/mimeicons/text-x-csrc.png b/mimeicons/text-x-csrc.png
deleted file mode 100644
index 6a9f2e8..0000000
--- a/mimeicons/text-x-csrc.png
+++ /dev/null
Binary files differ
diff --git a/mimeicons/text-x-css.png b/mimeicons/text-x-css.png
index 6d3b7e7..3bddf64 100644
--- a/mimeicons/text-x-css.png
+++ b/mimeicons/text-x-css.png
Binary files differ
diff --git a/mimeicons/text-x-generic.png b/mimeicons/text-x-generic.png
index 924a5eb..5dfec99 100644
--- a/mimeicons/text-x-generic.png
+++ b/mimeicons/text-x-generic.png
Binary files differ
diff --git a/mimeicons/text-x-go.png b/mimeicons/text-x-go.png
index 3ca93a6..7856ab2 100644
--- a/mimeicons/text-x-go.png
+++ b/mimeicons/text-x-go.png
Binary files differ
diff --git a/mimeicons/text-x-javascript.png b/mimeicons/text-x-javascript.png
index a37deb8..98051d0 100644
--- a/mimeicons/text-x-javascript.png
+++ b/mimeicons/text-x-javascript.png
Binary files differ
diff --git a/mimeicons/text-x-preview.png b/mimeicons/text-x-preview.png
index b86d1ca..3d7ae6e 100644
--- a/mimeicons/text-x-preview.png
+++ b/mimeicons/text-x-preview.png
Binary files differ
diff --git a/mimeicons/text-x-python.png b/mimeicons/text-x-python.png
index 05a7a7c..9435dcd 100644
--- a/mimeicons/text-x-python.png
+++ b/mimeicons/text-x-python.png
Binary files differ
diff --git a/mimeicons/text-x-script.png b/mimeicons/text-x-script.png
index e476856..0772cdf 100644
--- a/mimeicons/text-x-script.png
+++ b/mimeicons/text-x-script.png
Binary files differ
diff --git a/mimeicons/text-x-vala.png b/mimeicons/text-x-vala.png
index 81595dd..0fbe3e3 100644
--- a/mimeicons/text-x-vala.png
+++ b/mimeicons/text-x-vala.png
Binary files differ
diff --git a/mimeicons/video-x-generic.png b/mimeicons/video-x-generic.png
index 167c9d0..562ad3c 100644
--- a/mimeicons/video-x-generic.png
+++ b/mimeicons/video-x-generic.png
Binary files differ
diff --git a/mimeicons/x-office-calendar.png b/mimeicons/x-office-calendar.png
index 5da8bd3..0dbe9ed 100644
--- a/mimeicons/x-office-calendar.png
+++ b/mimeicons/x-office-calendar.png
Binary files differ
diff --git a/mimeicons/x-office-document-template.png b/mimeicons/x-office-document-template.png
index 834ebbe..ab1908b 100644
--- a/mimeicons/x-office-document-template.png
+++ b/mimeicons/x-office-document-template.png
Binary files differ
diff --git a/mimeicons/x-office-document.png b/mimeicons/x-office-document.png
index 20f5939..2e5a80f 100644
--- a/mimeicons/x-office-document.png
+++ b/mimeicons/x-office-document.png
Binary files differ
diff --git a/mimeicons/x-office-drawing-template.png b/mimeicons/x-office-drawing-template.png
index 34aa16d..86afd82 100644
--- a/mimeicons/x-office-drawing-template.png
+++ b/mimeicons/x-office-drawing-template.png
Binary files differ
diff --git a/mimeicons/x-office-drawing.png b/mimeicons/x-office-drawing.png
index 7239629..46bb9b1 100644
--- a/mimeicons/x-office-drawing.png
+++ b/mimeicons/x-office-drawing.png
Binary files differ
diff --git a/mimeicons/x-office-presentation-template.png b/mimeicons/x-office-presentation-template.png
index d1e9bff..38be81b 100644
--- a/mimeicons/x-office-presentation-template.png
+++ b/mimeicons/x-office-presentation-template.png
Binary files differ
diff --git a/mimeicons/x-office-presentation.png b/mimeicons/x-office-presentation.png
index dfc73b4..a1740b1 100644
--- a/mimeicons/x-office-presentation.png
+++ b/mimeicons/x-office-presentation.png
Binary files differ
diff --git a/mimeicons/x-office-spreadsheet-template.png b/mimeicons/x-office-spreadsheet-template.png
index dcec754..b46472d 100644
--- a/mimeicons/x-office-spreadsheet-template.png
+++ b/mimeicons/x-office-spreadsheet-template.png
Binary files differ
diff --git a/mimeicons/x-office-spreadsheet.png b/mimeicons/x-office-spreadsheet.png
index 03e7755..cfee058 100644
--- a/mimeicons/x-office-spreadsheet.png
+++ b/mimeicons/x-office-spreadsheet.png
Binary files differ