From 7cc7bd6821b80dd7126cbd732bd96050790069bb Mon Sep 17 00:00:00 2001 From: Wim Brand Date: Tue, 11 Sep 2018 21:35:44 +0200 Subject: [PATCH] some usability fixes --- res/static/res/img/bytecounter.png | Bin 2025 -> 7846 bytes res/static/res/script/DetailsWindow.js | 48 ++++++++++----- res/static/res/script/ListNavigator.js | 78 ++++++++++++------------- res/static/res/style/viewer.css | 3 +- res/template/file_viewer.html | 38 +++++++++++- webcontroller/fileViewer.go | 2 + webcontroller/listViewer.go | 1 + 7 files changed, 114 insertions(+), 56 deletions(-) diff --git a/res/static/res/img/bytecounter.png b/res/static/res/img/bytecounter.png index 3e1aec45ff474d475995b9f7e34892aa201ce255..ed0dcc1d56d236ee4b457d728dbe5f50133db40c 100644 GIT binary patch delta 7843 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 B-ADic delta 1952 zcmV;R2VeN6J?RgSBM<-vVoOIv0003006b{4^A(dD7#<4X2^0}HHB>XA1d~G;Cw~V~ zNklQwKsSC!s}?q zcQ1d$rWe=e#P*#f#C;`8_TBs5=YM&h=Y8Jyy(b~CXp-Vd0EYpj(7iGME}W$JS+koI z&a)_*vjFNi3!u$e&ie2k&*Dek60jcvcm=?)L$F~0hxVt?_ihGP8v^DED+Tmru#p8& zS6D!*56E0?2$<8Xd%P6-Q1c^i$*@=8jy|VQ`d+CGj`Z=(*S6i#;hMzRZUe@OPZ$rL6+s`(&;qkz~Gp#=}x-1 z_@LkKp8zmQ2&r#?w@lN#&KP@5lBD0)jkNY-j4=QTA>;$YFkYLTo&C|+*qGUjp=lap zjHN@N&{ys3(=;s&;D7O8Fi4!>)t_V4($Z2=5QMi3!#E{L(o{DL0I)LB=`?rXz=0so z^B?DV{^gO8kz_j=X=n3&kylmqF~8sc7Gvx$x~@O0s_G71*M|(l_%{6T9{mi^bt)H)_`hn>nQm-hT#_N~QgRAY7?dtH&it znsS;kHa2EPqfupGVBku%T78`3xMv(&w(8$yS^lu9s{dSASZI2jO{deGrfH|FGr{h; zOG`^1(lqV1-SVhu8dDVIMMY7XIzdsCX;oFfZe?th*KB!g>?_Oiqnf7ut5hoOZ`H2V zn3^q*c72P*;(xHJs>`)@f0SkUQJabMQBBhp8kgGtKHG8-Sx-BTn*eZn*REZQb~7g! z3{GriGO%?St=g=ut<7*8_e3t2+iAU?%jI?wLcVzC&YeqJoqSv2Sti8OJkOshm&>CA z0|VFHVALmhKA#UQEiH|TqIiiA@&*8yra8^?{IRAl&VN4NQO4N$`m$)vdb{Ou)HKb@ zoo20_k#-s!99(9M{UQ(uZ20%HKp=30G4}J};o-YZ@@mWfF^=Po-oAbNGqG6geW%A{ z&5Y5}QN!=|D}o@r!x#%JFE1ajW$fz!9x4`#32WbcJ|AL?9jaEV7q(mxA%qOBuCCr{ zCs1}v0)JyHyRx!!e6#+QN@aT6wr%fZv)QRcBB5uqS%DDpe7Riyw9~v&sdR`C^0h*t z@YzHnvFgT{8V?Tnd_E)y!Y6p1pW3lw$0UGnB@zi;Rn>EXARGhmT)nL*iq8W0RX7|j zwN-m86bhu(>}ed3HGPA@ASsv2{f1#YLJ0BIjDKvYXf*mBV{9%Q4nF|^kx1l8Ldc)v z@%VzBQ#$48x;_hlNs{!1%^cs&n5>G$VyYxbmvvo#h7j_UWwKrX@K~Wx=m&sICc_g# zUeI;@Y+D6m#@NEp(9lq;L3C%lK=|VYt?FXnh^4QHk%ay z95qez)rM~68#iuZvV2ewgddxxIc>cc4u|I$WA8;Gk?#^h9$H>rPB*N49|VKJ zM>3fVZ+j4lL?ZuCRrMvG&v#vxG@^}XE~*{z)9)dKghD2l&PRdw}&P$=|rH;k?9`Hi}H^X9L2@7`T5m&^A}*nxq8 zw*frZ^2lG8BuRe-@bqTDPK<1~ueF^UyxM_auM>=RmCNOJ1_FU&jIp2E6*M+|PxI6} m)w22DrfFVTSy^eTCix$$Q(4C_e1NwA0000Name" + escapeHTML(file.file_name) + "" - + "UrlOpen" - + "Mime Type" + escapeHTML(file.mime_type) + "" - + "Id" + file.id + "" - + "Size" + file.file_size + "" - + "Upload Date" + file.date_upload + "" - + "Description" + escapeHTML(file.desc) + "" - + ""; - $("#info-fileDetails").html(fileInfo); + if (Viewer.isList) { + // Lists give incomplete file information, so we have to request + // more details in the background. File descriptions only exist in + // lists, so for that we use the data provided in the page source + $.ajax({ + dataType: "json", + url: apiEndpoint + "/file/" + file.id + "/info", + success: function(data){ + $("#info_file_details").html( + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "
Name" + escapeHTML(data.file_name) + "
Url/u/" + data.id + "
Mime Type" + escapeHTML(data.mime_type) + "
Id" + data.id + "
Size" + data.file_size + "
Upload Date" + data.date_upload + "
Description" + escapeHTML(file.description) + "
" + ); + } + }); + } else { + $("#info_file_details").html( + "" + + "" + + "" + + "" + + "" + + "" + + "
Name" + escapeHTML(file.file_name) + "
Mime Type" + escapeHTML(file.mime_type) + "
Id" + file.id + "
Size" + file.file_size + "
Upload Date" + file.date_upload + "
" + ); + } } -}; \ No newline at end of file +}; diff --git a/res/static/res/script/ListNavigator.js b/res/static/res/script/ListNavigator.js index fab42c2..50fd2a2 100644 --- a/res/static/res/script/ListNavigator.js +++ b/res/static/res/script/ListNavigator.js @@ -6,7 +6,7 @@ var ListNavigator = { data: [], history: [], shuffle: false, - + nextItem: function(){ if(!Viewer.isList){ return; @@ -24,7 +24,7 @@ var ListNavigator = { this.setItem(this.position); }, - + previousItem: function(){ if(!Viewer.isList){ return; @@ -38,22 +38,22 @@ var ListNavigator = { this.setItem(this.position); }, - + randItem: function(){ if(!Viewer.isList){ return; } - + // Avoid viewing the same file multiple times var rand; do { rand = Math.round(Math.random() * this.length); console.log("rand is " + rand); } while(this.inHistory(rand)); - + this.setItem(rand); }, - + setItem: function(index){ if(index >= this.length){ this.position = 0; @@ -61,10 +61,10 @@ var ListNavigator = { this.position = index; } - // Set the URL hash + // Set the URL hash location.hash = "item=" + this.position; Viewer.setFile(this.data[this.position]); - + this.addToHistory(index); $("#listNavigatorItems").find("*").css("border-color", "#333"); @@ -79,27 +79,27 @@ var ListNavigator = { queue: false } ); - + this.loadThumbnails(index); }, - + addToHistory: function(index){ if(this.history.length >= (this.length - 6)){ this.history.shift(); } - + this.history.push(index); }, - + inHistory: function(index){ var i = $.inArray(index, this.history); // Returns -1 when the item is not found - + return (i !== -1); // Return false when it's not in the array }, - + toggleShuffle: function(){ this.shuffle = !this.shuffle; // :P - + if(this.shuffle){ $("#btnShuffle > span").html(" Shuffle ☑"); // Check icon $("#btnShuffle").addClass("button_highlight"); @@ -108,40 +108,40 @@ var ListNavigator = { $("#btnShuffle").removeClass("button_highlight"); } }, - + loadThumbnails: function(index){ - var startPos = +index - 30; + var startPos = +index - 30; var endPos = +index + 30; // fyi, the + is to let javascript know it's actually a number instead of a string - + if(startPos < 0){ startPos = 0; } - + if(endPos >= this.length){ endPos = this.length - 1; } console.log(endPos); - + var navigatorItems = $("#listNavigatorItems").children().toArray(); - + for (i = startPos; i <= endPos; i++){ var thumb = "/api/file/" + this.data[i].id + "/thumbnail"; var name = this.data[i].file_name; - + var itemHtml = escapeHTML(name) + "
" + "\"""; - + navigatorItems[i].innerHTML = itemHtml; } }, - + init: function(data){ var hashPos = getHashValue("item"); this.data = data; this.length = data.length; - + $.each(data, function(i, item){ var filename; if(item.file_name !== "null"){ @@ -158,51 +158,51 @@ var ListNavigator = { + ""; $("#listNavigatorItems").append(itemHtml); - + }); - + // Skip to this file if the parameter is set if(Number.isInteger(parseInt(hashPos))){ this.setItem(hashPos); }else{ this.setItem(0); } - + // Add the list download button to the toolbar var btnDownloadList = document.createElement("button"); btnDownloadList.setAttribute("id", "btnDownloadList"); btnDownloadList.setAttribute("class", "toolbar_button button_full_width"); btnDownloadList.setAttribute("onClick", "Toolbar.downloadList();"); - + var btnDownloadListImg = document.createElement("img"); btnDownloadListImg.setAttribute("src", "/res/img/floppy_small.png"); btnDownloadListImg.setAttribute("alt", "Download List"); - + var btnDownloadListText = document.createElement("span"); btnDownloadListText.innerHTML = " All Files"; - + btnDownloadList.appendChild(btnDownloadListImg); btnDownloadList.appendChild(btnDownloadListText); $("#btnDownload").after(btnDownloadList); - + // Add the shuffle button to the toolbar var btnShuffle = document.createElement("button"); btnShuffle.setAttribute("id", "btnShuffle"); btnShuffle.setAttribute("class", "toolbar_button button_full_width"); btnShuffle.setAttribute("onClick", "ListNavigator.toggleShuffle();"); - + var btnShuffleImg = document.createElement("img"); btnShuffleImg.setAttribute("src", "/res/img/shuffle_small.png"); btnShuffleImg.setAttribute("alt", "Shuffle playback order"); - + var btnShuffleText = document.createElement("span"); btnShuffleText.innerHTML = " Shuffle ☐"; - + btnShuffle.appendChild(btnShuffleImg); btnShuffle.appendChild(btnShuffleText); - + $("#btnShare").after(btnShuffle); - + // We need to adjust the height of some elements to make the navigation bar fit var navHeight = $("#listNavigator").height() + 2; window.setTimeout(function(){ @@ -211,7 +211,7 @@ var ListNavigator = { $("#toolbar").animate( {top: navHeight},{"duration": 1500, "queue": false}); $("#button-expand-toolbar").animate({top: navHeight},{"duration": 1500, "queue": false}); $("#sharebar").animate( {top: navHeight},{"duration": 1500, "queue": false}); - $("#info-popup").css("top", "120px"); + $("#info_popup").css("top", "120px"); }, 100); } }; @@ -221,4 +221,4 @@ var ListNavigator = { function getHashValue(key) { var matches = location.hash.match(new RegExp(key + '=([^&]*)')); return matches ? matches[1] : null; -} \ No newline at end of file +} diff --git a/res/static/res/style/viewer.css b/res/static/res/style/viewer.css index 71dfad2..50fdd9e 100644 --- a/res/static/res/style/viewer.css +++ b/res/static/res/style/viewer.css @@ -182,7 +182,7 @@ body{ || MISC COMPONENTS || ===================== */ -.full-popup{ +.full_popup{ position: fixed; display: none; background-color: var(--background_color); @@ -233,6 +233,7 @@ table > tbody > tr {border: none !important;} color: var(--text_color); font-size: 16px; font-family: 'Ubuntu', sans-serif; + line-height: 20px; text-align: right; display: inline-block; background-image: url("/res/img/bytecounter.png"); diff --git a/res/template/file_viewer.html b/res/template/file_viewer.html index 01ccbe6..ba5e012 100644 --- a/res/template/file_viewer.html +++ b/res/template/file_viewer.html @@ -32,6 +32,8 @@ + + @@ -122,15 +124,45 @@ -

+
Close Click the help button again to close this overlay.

File Info

- - {{template "file_info_popup"}} + + +

About

+ Pixeldrain is a file sharing platform. + Visit the home page for more information. + +

Keyboard Controls

+ + + + + + + + + + +
File Shortcuts
c = Copy URL of this page
i = Toggle details window (this window)
s = Download the file you are currently viewing
List Shortcuts
a or ← = View previous item in list
d or → = View next item in list
r = Toggle shuffle (random)
SHIFT + s = Download all the files in the list as a zip archive
+ +

Credits

+ All server side code written by + Fornax (me). +
+
+ Code syntax highlighting is by + Google Code-prettify. +
+
+ Thanks to the Mozilla team for their wonderful PDF viewer + pdf.js. +
+
diff --git a/webcontroller/fileViewer.go b/webcontroller/fileViewer.go index dbc35f6..b53ba44 100644 --- a/webcontroller/fileViewer.go +++ b/webcontroller/fileViewer.go @@ -56,6 +56,7 @@ func (wc *WebController) serveFileViewer(w http.ResponseWriter, r *http.Request, "APIResponse": listdata, "Type": "list", "OGData": ogData.FromFile(*finfo[0]), + "APIEndpoint": wc.conf.APIURLExternal, }) } else { err = wc.templates.Get().ExecuteTemplate(w, "file_viewer", map[string]interface{}{ @@ -63,6 +64,7 @@ func (wc *WebController) serveFileViewer(w http.ResponseWriter, r *http.Request, "APIResponse": finfo[0], "Type": "file", "OGData": ogData.FromFile(*finfo[0]), + "APIEndpoint": wc.conf.APIURLExternal, }) } if err != nil { diff --git a/webcontroller/listViewer.go b/webcontroller/listViewer.go index 9b2f246..456b981 100644 --- a/webcontroller/listViewer.go +++ b/webcontroller/listViewer.go @@ -35,6 +35,7 @@ func (wc *WebController) serveListViewer(w http.ResponseWriter, r *http.Request, "APIResponse": listdata, "Type": "list", "OGData": ogData.FromList(*list), + "APIEndpoint": wc.conf.APIURLExternal, }) if err != nil { log.Error("Error executing template file_viewer: %s", err)