| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 | 2 |
| 3 <html i18n-values="dir:textdirection;lang:language"> | 3 <html i18n-values="dir:textdirection;lang:language"> |
| 4 | 4 |
| 5 <head> | 5 <head> |
| 6 <meta charset="utf-8"> | 6 <meta charset="utf-8"> |
| 7 <meta name="google" value="notranslate"> | 7 <meta name="google" value="notranslate"> |
| 8 | 8 |
| 9 <script> | 9 <script> |
| 10 function addRow(name, url, isdir, | 10 function addRow(name, url, isdir, |
| 11 size, size_string, date_modified, date_modified_string) { | 11 size, size_string, date_modified, date_modified_string) { |
| 12 if (name == ".") | 12 if (name == "." || name == "..") |
| 13 return; | 13 return; |
| 14 | 14 |
| 15 var root = document.location.pathname; | 15 var root = document.location.pathname; |
| 16 if (root.substr(-1) !== "/") | 16 if (root.substr(-1) !== "/") |
| 17 root += "/"; | 17 root += "/"; |
| 18 | 18 |
| 19 var tbody = document.getElementById("tbody"); | 19 var tbody = document.getElementById("tbody"); |
| 20 var row = document.createElement("tr"); | 20 var row = document.createElement("tr"); |
| 21 var file_cell = document.createElement("td"); | 21 var file_cell = document.createElement("td"); |
| 22 var link = document.createElement("a"); | 22 var link = document.createElement("a"); |
| 23 | 23 |
| 24 link.className = isdir ? "icon dir" : "icon file"; | 24 link.className = isdir ? "icon dir" : "icon file"; |
| 25 | 25 |
| 26 if (name == "..") { | 26 if (isdir) { |
| 27 link.href = root + ".."; | 27 name = name + "/"; |
| 28 link.innerText = document.getElementById("parentDirText").innerText; | 28 url = url + "/"; |
| 29 link.className = "icon up"; | |
| 30 size = 0; | 29 size = 0; |
| 31 size_string = ""; | 30 size_string = ""; |
| 32 date_modified = 0; | |
| 33 date_modified_string = ""; | |
| 34 } else { | 31 } else { |
| 35 if (isdir) { | 32 link.draggable = "true"; |
| 36 name = name + "/"; | 33 link.addEventListener("dragstart", onDragStart, false); |
| 37 url = url + "/"; | |
| 38 size = 0; | |
| 39 size_string = ""; | |
| 40 } else { | |
| 41 link.draggable = "true"; | |
| 42 link.addEventListener("dragstart", onDragStart, false); | |
| 43 } | |
| 44 link.innerText = name; | |
| 45 link.href = root + url; | |
| 46 } | 34 } |
| 35 link.innerText = name; |
| 36 link.href = root + url; |
| 37 |
| 47 file_cell.dataset.value = name; | 38 file_cell.dataset.value = name; |
| 48 file_cell.appendChild(link); | 39 file_cell.appendChild(link); |
| 49 | 40 |
| 50 row.appendChild(file_cell); | 41 row.appendChild(file_cell); |
| 51 row.appendChild(createCell(size, size_string)); | 42 row.appendChild(createCell(size, size_string)); |
| 52 row.appendChild(createCell(date_modified, date_modified_string)); | 43 row.appendChild(createCell(date_modified, date_modified_string)); |
| 53 | 44 |
| 54 tbody.appendChild(row); | 45 tbody.appendChild(row); |
| 55 } | 46 } |
| 56 | 47 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 70 return cell; | 61 return cell; |
| 71 } | 62 } |
| 72 | 63 |
| 73 function start(location) { | 64 function start(location) { |
| 74 var header = document.getElementById("header"); | 65 var header = document.getElementById("header"); |
| 75 header.innerText = header.innerText.replace("LOCATION", location); | 66 header.innerText = header.innerText.replace("LOCATION", location); |
| 76 | 67 |
| 77 document.getElementById("title").innerText = header.innerText; | 68 document.getElementById("title").innerText = header.innerText; |
| 78 } | 69 } |
| 79 | 70 |
| 71 function onHasParentDirectory() { |
| 72 var box = document.getElementById("parentDirLinkBox"); |
| 73 box.style.display = "block"; |
| 74 |
| 75 var root = document.location.pathname; |
| 76 if (!root.endsWith("/")) |
| 77 root += "/"; |
| 78 |
| 79 var link = document.getElementById("parentDirLink"); |
| 80 link.href = root + ".."; |
| 81 } |
| 82 |
| 80 function onListingParsingError() { | 83 function onListingParsingError() { |
| 81 var box = document.getElementById("listingParsingErrorBox"); | 84 var box = document.getElementById("listingParsingErrorBox"); |
| 82 box.innerHTML = box.innerHTML.replace("LOCATION", encodeURI(document.location) | 85 box.innerHTML = box.innerHTML.replace("LOCATION", encodeURI(document.location) |
| 83 + "?raw"); | 86 + "?raw"); |
| 84 box.style.display = "block"; | 87 box.style.display = "block"; |
| 85 } | 88 } |
| 86 | 89 |
| 87 function sortTable(column) { | 90 function sortTable(column) { |
| 88 var theader = document.getElementById("theader"); | 91 var theader = document.getElementById("theader"); |
| 89 var oldOrder = theader.cells[column].dataset.order || '1'; | 92 var oldOrder = theader.cells[column].dataset.order || '1'; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 101 list.sort(function(row1, row2) { | 104 list.sort(function(row1, row2) { |
| 102 var a = row1.cells[column].dataset.value; | 105 var a = row1.cells[column].dataset.value; |
| 103 var b = row2.cells[column].dataset.value; | 106 var b = row2.cells[column].dataset.value; |
| 104 if (column) { | 107 if (column) { |
| 105 a = parseInt(a, 10); | 108 a = parseInt(a, 10); |
| 106 b = parseInt(b, 10); | 109 b = parseInt(b, 10); |
| 107 return a > b ? newOrder : a < b ? oldOrder : 0; | 110 return a > b ? newOrder : a < b ? oldOrder : 0; |
| 108 } | 111 } |
| 109 | 112 |
| 110 // Column 0 is text. | 113 // Column 0 is text. |
| 111 // Also the parent directory should always be sorted at one of the ends. | 114 if (a > b) |
| 112 if (b == ".." | a > b) { | |
| 113 return newOrder; | 115 return newOrder; |
| 114 } else if (a == ".." | a < b) { | 116 if (a < b) |
| 115 return oldOrder; | 117 return oldOrder; |
| 116 } else { | 118 return 0; |
| 117 return 0; | |
| 118 } | |
| 119 }); | 119 }); |
| 120 | 120 |
| 121 // Appending an existing child again just moves it. | 121 // Appending an existing child again just moves it. |
| 122 for (i = 0; i < list.length; i++) { | 122 for (i = 0; i < list.length; i++) { |
| 123 tbody.appendChild(list[i]); | 123 tbody.appendChild(list[i]); |
| 124 } | 124 } |
| 125 } | 125 } |
| 126 </script> | 126 </script> |
| 127 | 127 |
| 128 <style> | 128 <style> |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 } | 166 } |
| 167 | 167 |
| 168 a.up { | 168 a.up { |
| 169 background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYA
AAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmlJREFUeNpsU0toU0EU
PfPysx/tTxuDH9SCWhUDooIbd7oRUUTMouqi2iIoCO6lceHWhegy4EJFinWjrlQUpVm0IIoFpVDEIthm
0dpikpf3ZuZ6Z94nrXhhMjM3c8895977BBHB2PznK8WPtDgyWH5q77cPH8PpdXuhpQT4ifR9u5sfJb1b
mw6VivahATDrxcRZ2njfoaMv+2j7mLDn93MPiNRMvGbL18L9IpF8h9/TN+EYkMffSiOXJ5+hkD+PdqcL
pICWHOHc2CC+LEyA/K+cKQMnlQHJX8wqYG3MAJy88Wa4OLDvEqAEOpJd0LxHIMdHBziowSwVlF8D6Qai
cK01krw/JynwcKoEwZczewroTvZirlKJs5CqQ5CG8pb57FnJUA0LYCXMX5fibd+p8LWDDemcPZbzQyjv
H+Ki1TlIciElA7ghwLKV4kRZstt2sANWRjYTAGzuP2hXZFpJ/GsxgGJ0ox1aoFWsDXyyxqCs26+ydmag
FN/rRjymJ1898bzGzmQE0HCZpmk5A0RFIv8Pn0WYPsiu6t/Rsj6PauVTwffTSzGAGZhUG2F06hEc9ibS
7OPMNp6ErYFlKavo7MkhmTqCxZ/jwzGA9Hx82H2BZSw1NTN9Gx8ycHkajU/7M+jInsDC7DiaEmo1bNl1
AMr9ASFgqVu9MCTIzoGUimXVAnnaN0PdBBDCCYbEtMk6wkpQwIG0sn0PQIUF4GsTwLSIFKNqF6DVrQq+
IWVrQDxAYQC/1SsYOI4pOxKZrfifiUSbDUisif7XlpGIPufXd/uvdvZm760M0no1FZcnrzUdjw7au3vu
/BVgAFLXeuTxhTXVAAAAAElFTkSuQmCC ") left top no-repeat; | 169 background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYA
AAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmlJREFUeNpsU0toU0EU
PfPysx/tTxuDH9SCWhUDooIbd7oRUUTMouqi2iIoCO6lceHWhegy4EJFinWjrlQUpVm0IIoFpVDEIthm
0dpikpf3ZuZ6Z94nrXhhMjM3c8895977BBHB2PznK8WPtDgyWH5q77cPH8PpdXuhpQT4ifR9u5sfJb1b
mw6VivahATDrxcRZ2njfoaMv+2j7mLDn93MPiNRMvGbL18L9IpF8h9/TN+EYkMffSiOXJ5+hkD+PdqcL
pICWHOHc2CC+LEyA/K+cKQMnlQHJX8wqYG3MAJy88Wa4OLDvEqAEOpJd0LxHIMdHBziowSwVlF8D6Qai
cK01krw/JynwcKoEwZczewroTvZirlKJs5CqQ5CG8pb57FnJUA0LYCXMX5fibd+p8LWDDemcPZbzQyjv
H+Ki1TlIciElA7ghwLKV4kRZstt2sANWRjYTAGzuP2hXZFpJ/GsxgGJ0ox1aoFWsDXyyxqCs26+ydmag
FN/rRjymJ1898bzGzmQE0HCZpmk5A0RFIv8Pn0WYPsiu6t/Rsj6PauVTwffTSzGAGZhUG2F06hEc9ibS
7OPMNp6ErYFlKavo7MkhmTqCxZ/jwzGA9Hx82H2BZSw1NTN9Gx8ycHkajU/7M+jInsDC7DiaEmo1bNl1
AMr9ASFgqVu9MCTIzoGUimXVAnnaN0PdBBDCCYbEtMk6wkpQwIG0sn0PQIUF4GsTwLSIFKNqF6DVrQq+
IWVrQDxAYQC/1SsYOI4pOxKZrfifiUSbDUisif7XlpGIPufXd/uvdvZm760M0no1FZcnrzUdjw7au3vu
/BVgAFLXeuTxhTXVAAAAAElFTkSuQmCC ") left top no-repeat; |
| 170 } | 170 } |
| 171 | 171 |
| 172 html[dir=rtl] a { | 172 html[dir=rtl] a { |
| 173 background-position-x: right; | 173 background-position-x: right; |
| 174 } | 174 } |
| 175 | 175 |
| 176 #parentDirLinkBox { |
| 177 margin-bottom: 10px; |
| 178 padding-bottom: 10px; |
| 179 } |
| 180 |
| 176 #listingParsingErrorBox { | 181 #listingParsingErrorBox { |
| 177 border: 1px solid black; | 182 border: 1px solid black; |
| 178 background: #fae691; | 183 background: #fae691; |
| 179 padding: 10px; | 184 padding: 10px; |
| 180 display: none; | 185 display: none; |
| 181 } | 186 } |
| 182 </style> | 187 </style> |
| 183 | 188 |
| 184 <title id="title"></title> | 189 <title id="title"></title> |
| 185 | 190 |
| 186 </head> | 191 </head> |
| 187 | 192 |
| 188 <body> | 193 <body> |
| 189 | 194 |
| 190 <div id="listingParsingErrorBox" i18n-values=".innerHTML:listingParsingErrorBoxT
ext"></div> | 195 <div id="listingParsingErrorBox" i18n-values=".innerHTML:listingParsingErrorBoxT
ext"></div> |
| 191 | 196 |
| 192 <span id="parentDirText" style="display:none" i18n-content="parentDirText"></spa
n> | 197 <h1 id="header" i18n-content="header"></h1> |
| 193 | 198 |
| 194 <h1 id="header" i18n-content="header"></h1> | 199 <div id="parentDirLinkBox" style="display:none"> |
| 200 <a id="parentDirLink" class="icon up"> |
| 201 <span id="parentDirText" i18n-content="parentDirText"></span> |
| 202 </a> |
| 203 </div> |
| 195 | 204 |
| 196 <table> | 205 <table> |
| 197 <thead> | 206 <thead> |
| 198 <tr class="header" id="theader"> | 207 <tr class="header" id="theader"> |
| 199 <th i18n-content="headerName" onclick="javascript:sortTable(0);"></th> | 208 <th i18n-content="headerName" onclick="javascript:sortTable(0);"></th> |
| 200 <th class="detailsColumn" i18n-content="headerSize" onclick="javascript:so
rtTable(1);"></th> | 209 <th class="detailsColumn" i18n-content="headerSize" onclick="javascript:so
rtTable(1);"></th> |
| 201 <th class="detailsColumn" i18n-content="headerDateModified" onclick="javas
cript:sortTable(2);"></th> | 210 <th class="detailsColumn" i18n-content="headerDateModified" onclick="javas
cript:sortTable(2);"></th> |
| 202 </tr> | 211 </tr> |
| 203 </thead> | 212 </thead> |
| 204 <tbody id="tbody"> | 213 <tbody id="tbody"> |
| 205 </tbody> | 214 </tbody> |
| 206 </table> | 215 </table> |
| 207 | 216 |
| 208 </body> | 217 </body> |
| 209 | 218 |
| 210 </html> | 219 </html> |
| OLD | NEW |