1*6777b538SAndroid Build Coastguard Worker<!DOCTYPE html> 2*6777b538SAndroid Build Coastguard Worker 3*6777b538SAndroid Build Coastguard Worker<html dir="$i18n{textdirection}" lang="$i18n{language}"> 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker<head> 6*6777b538SAndroid Build Coastguard Worker<meta charset="utf-8"> 7*6777b538SAndroid Build Coastguard Worker<meta name="color-scheme" content="light dark"> 8*6777b538SAndroid Build Coastguard Worker<meta name="google" value="notranslate"> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker<script> 11*6777b538SAndroid Build Coastguard Workerfunction addRow(name, url, isdir, 12*6777b538SAndroid Build Coastguard Worker size, size_string, date_modified, date_modified_string) { 13*6777b538SAndroid Build Coastguard Worker if (name == "." || name == "..") 14*6777b538SAndroid Build Coastguard Worker return; 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker var root = document.location.pathname; 17*6777b538SAndroid Build Coastguard Worker if (root.substr(-1) !== "/") 18*6777b538SAndroid Build Coastguard Worker root += "/"; 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker var tbody = document.getElementById("tbody"); 21*6777b538SAndroid Build Coastguard Worker var row = document.createElement("tr"); 22*6777b538SAndroid Build Coastguard Worker var file_cell = document.createElement("td"); 23*6777b538SAndroid Build Coastguard Worker var link = document.createElement("a"); 24*6777b538SAndroid Build Coastguard Worker 25*6777b538SAndroid Build Coastguard Worker link.className = isdir ? "icon dir" : "icon file"; 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker if (isdir) { 28*6777b538SAndroid Build Coastguard Worker name = name + "/"; 29*6777b538SAndroid Build Coastguard Worker url = url + "/"; 30*6777b538SAndroid Build Coastguard Worker size = 0; 31*6777b538SAndroid Build Coastguard Worker size_string = ""; 32*6777b538SAndroid Build Coastguard Worker } else { 33*6777b538SAndroid Build Coastguard Worker link.draggable = "true"; 34*6777b538SAndroid Build Coastguard Worker link.addEventListener("dragstart", onDragStart, false); 35*6777b538SAndroid Build Coastguard Worker } 36*6777b538SAndroid Build Coastguard Worker link.innerText = name; 37*6777b538SAndroid Build Coastguard Worker link.href = root + url; 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Worker file_cell.dataset.value = name; 40*6777b538SAndroid Build Coastguard Worker file_cell.appendChild(link); 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker row.appendChild(file_cell); 43*6777b538SAndroid Build Coastguard Worker row.appendChild(createCell(size, size_string)); 44*6777b538SAndroid Build Coastguard Worker row.appendChild(createCell(date_modified, date_modified_string)); 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker tbody.appendChild(row); 47*6777b538SAndroid Build Coastguard Worker} 48*6777b538SAndroid Build Coastguard Worker 49*6777b538SAndroid Build Coastguard Workerfunction onDragStart(e) { 50*6777b538SAndroid Build Coastguard Worker var el = e.srcElement; 51*6777b538SAndroid Build Coastguard Worker var name = el.innerText.replace(":", ""); 52*6777b538SAndroid Build Coastguard Worker var download_url_data = "application/octet-stream:" + name + ":" + el.href; 53*6777b538SAndroid Build Coastguard Worker e.dataTransfer.setData("DownloadURL", download_url_data); 54*6777b538SAndroid Build Coastguard Worker e.dataTransfer.effectAllowed = "copy"; 55*6777b538SAndroid Build Coastguard Worker} 56*6777b538SAndroid Build Coastguard Worker 57*6777b538SAndroid Build Coastguard Workerfunction createCell(value, text) { 58*6777b538SAndroid Build Coastguard Worker var cell = document.createElement("td"); 59*6777b538SAndroid Build Coastguard Worker cell.setAttribute("class", "detailsColumn"); 60*6777b538SAndroid Build Coastguard Worker cell.dataset.value = value; 61*6777b538SAndroid Build Coastguard Worker cell.innerText = text; 62*6777b538SAndroid Build Coastguard Worker return cell; 63*6777b538SAndroid Build Coastguard Worker} 64*6777b538SAndroid Build Coastguard Worker 65*6777b538SAndroid Build Coastguard Workerfunction start(location) { 66*6777b538SAndroid Build Coastguard Worker var header = document.getElementById("header"); 67*6777b538SAndroid Build Coastguard Worker header.innerText = header.innerText.replace("LOCATION", location); 68*6777b538SAndroid Build Coastguard Worker 69*6777b538SAndroid Build Coastguard Worker document.getElementById("title").innerText = header.innerText; 70*6777b538SAndroid Build Coastguard Worker} 71*6777b538SAndroid Build Coastguard Worker 72*6777b538SAndroid Build Coastguard Workerfunction onHasParentDirectory() { 73*6777b538SAndroid Build Coastguard Worker var box = document.getElementById("parentDirLinkBox"); 74*6777b538SAndroid Build Coastguard Worker box.style.display = "block"; 75*6777b538SAndroid Build Coastguard Worker 76*6777b538SAndroid Build Coastguard Worker var root = document.location.pathname; 77*6777b538SAndroid Build Coastguard Worker if (!root.endsWith("/")) 78*6777b538SAndroid Build Coastguard Worker root += "/"; 79*6777b538SAndroid Build Coastguard Worker 80*6777b538SAndroid Build Coastguard Worker var link = document.getElementById("parentDirLink"); 81*6777b538SAndroid Build Coastguard Worker link.href = root + ".."; 82*6777b538SAndroid Build Coastguard Worker} 83*6777b538SAndroid Build Coastguard Worker 84*6777b538SAndroid Build Coastguard Workerfunction sortTable(column) { 85*6777b538SAndroid Build Coastguard Worker var theader = document.getElementById("theader"); 86*6777b538SAndroid Build Coastguard Worker var oldOrder = theader.cells[column].dataset.order || '1'; 87*6777b538SAndroid Build Coastguard Worker oldOrder = parseInt(oldOrder, 10) 88*6777b538SAndroid Build Coastguard Worker var newOrder = 0 - oldOrder; 89*6777b538SAndroid Build Coastguard Worker theader.cells[column].dataset.order = newOrder; 90*6777b538SAndroid Build Coastguard Worker 91*6777b538SAndroid Build Coastguard Worker var tbody = document.getElementById("tbody"); 92*6777b538SAndroid Build Coastguard Worker var rows = tbody.rows; 93*6777b538SAndroid Build Coastguard Worker var list = [], i; 94*6777b538SAndroid Build Coastguard Worker for (i = 0; i < rows.length; i++) { 95*6777b538SAndroid Build Coastguard Worker list.push(rows[i]); 96*6777b538SAndroid Build Coastguard Worker } 97*6777b538SAndroid Build Coastguard Worker 98*6777b538SAndroid Build Coastguard Worker list.sort(function(row1, row2) { 99*6777b538SAndroid Build Coastguard Worker var a = row1.cells[column].dataset.value; 100*6777b538SAndroid Build Coastguard Worker var b = row2.cells[column].dataset.value; 101*6777b538SAndroid Build Coastguard Worker if (column) { 102*6777b538SAndroid Build Coastguard Worker a = parseInt(a, 10); 103*6777b538SAndroid Build Coastguard Worker b = parseInt(b, 10); 104*6777b538SAndroid Build Coastguard Worker return a > b ? newOrder : a < b ? oldOrder : 0; 105*6777b538SAndroid Build Coastguard Worker } 106*6777b538SAndroid Build Coastguard Worker 107*6777b538SAndroid Build Coastguard Worker // Column 0 is text. 108*6777b538SAndroid Build Coastguard Worker if (a > b) 109*6777b538SAndroid Build Coastguard Worker return newOrder; 110*6777b538SAndroid Build Coastguard Worker if (a < b) 111*6777b538SAndroid Build Coastguard Worker return oldOrder; 112*6777b538SAndroid Build Coastguard Worker return 0; 113*6777b538SAndroid Build Coastguard Worker }); 114*6777b538SAndroid Build Coastguard Worker 115*6777b538SAndroid Build Coastguard Worker // Appending an existing child again just moves it. 116*6777b538SAndroid Build Coastguard Worker for (i = 0; i < list.length; i++) { 117*6777b538SAndroid Build Coastguard Worker tbody.appendChild(list[i]); 118*6777b538SAndroid Build Coastguard Worker } 119*6777b538SAndroid Build Coastguard Worker} 120*6777b538SAndroid Build Coastguard Worker 121*6777b538SAndroid Build Coastguard Worker// Add event handlers to column headers. 122*6777b538SAndroid Build Coastguard Workerfunction addHandlers(element, column) { 123*6777b538SAndroid Build Coastguard Worker element.onclick = (e) => sortTable(column); 124*6777b538SAndroid Build Coastguard Worker element.onkeydown = (e) => { 125*6777b538SAndroid Build Coastguard Worker if (e.key == 'Enter' || e.key == ' ') { 126*6777b538SAndroid Build Coastguard Worker sortTable(column); 127*6777b538SAndroid Build Coastguard Worker e.preventDefault(); 128*6777b538SAndroid Build Coastguard Worker } 129*6777b538SAndroid Build Coastguard Worker }; 130*6777b538SAndroid Build Coastguard Worker} 131*6777b538SAndroid Build Coastguard Worker 132*6777b538SAndroid Build Coastguard Workerfunction onLoad() { 133*6777b538SAndroid Build Coastguard Worker addHandlers(document.getElementById('nameColumnHeader'), 0); 134*6777b538SAndroid Build Coastguard Worker addHandlers(document.getElementById('sizeColumnHeader'), 1); 135*6777b538SAndroid Build Coastguard Worker addHandlers(document.getElementById('dateColumnHeader'), 2); 136*6777b538SAndroid Build Coastguard Worker} 137*6777b538SAndroid Build Coastguard Worker 138*6777b538SAndroid Build Coastguard Workerwindow.addEventListener('DOMContentLoaded', onLoad); 139*6777b538SAndroid Build Coastguard Worker</script> 140*6777b538SAndroid Build Coastguard Worker 141*6777b538SAndroid Build Coastguard Worker<style> 142*6777b538SAndroid Build Coastguard Worker 143*6777b538SAndroid Build Coastguard Worker h1 { 144*6777b538SAndroid Build Coastguard Worker border-bottom: 1px solid #c0c0c0; 145*6777b538SAndroid Build Coastguard Worker margin-bottom: 10px; 146*6777b538SAndroid Build Coastguard Worker padding-bottom: 10px; 147*6777b538SAndroid Build Coastguard Worker white-space: nowrap; 148*6777b538SAndroid Build Coastguard Worker } 149*6777b538SAndroid Build Coastguard Worker 150*6777b538SAndroid Build Coastguard Worker table { 151*6777b538SAndroid Build Coastguard Worker border-collapse: collapse; 152*6777b538SAndroid Build Coastguard Worker } 153*6777b538SAndroid Build Coastguard Worker 154*6777b538SAndroid Build Coastguard Worker th { 155*6777b538SAndroid Build Coastguard Worker cursor: pointer; 156*6777b538SAndroid Build Coastguard Worker } 157*6777b538SAndroid Build Coastguard Worker 158*6777b538SAndroid Build Coastguard Worker td.detailsColumn { 159*6777b538SAndroid Build Coastguard Worker padding-inline-start: 2em; 160*6777b538SAndroid Build Coastguard Worker text-align: end; 161*6777b538SAndroid Build Coastguard Worker white-space: nowrap; 162*6777b538SAndroid Build Coastguard Worker } 163*6777b538SAndroid Build Coastguard Worker 164*6777b538SAndroid Build Coastguard Worker a.icon { 165*6777b538SAndroid Build Coastguard Worker padding-inline-start: 1.5em; 166*6777b538SAndroid Build Coastguard Worker text-decoration: none; 167*6777b538SAndroid Build Coastguard Worker user-select: auto; 168*6777b538SAndroid Build Coastguard Worker } 169*6777b538SAndroid Build Coastguard Worker 170*6777b538SAndroid Build Coastguard Worker a.icon:hover { 171*6777b538SAndroid Build Coastguard Worker text-decoration: underline; 172*6777b538SAndroid Build Coastguard Worker } 173*6777b538SAndroid Build Coastguard Worker 174*6777b538SAndroid Build Coastguard Worker a.file { 175*6777b538SAndroid Build Coastguard Worker background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAABEElEQVR42nRRx3HDMBC846AHZ7sP54BmWAyrsP588qnwlhqw/k4v5ZwWxM1hzmGRgV1cYqrRarXoH2w2m6qqiqKIR6cPtzc3xMSML2Te7XZZlnW7Pe/91/dX47WRBHuA9oyGmRknzGDjab1ePzw8bLfb6WRalmW4ip9FDVpYSWZgOp12Oh3nXJ7nxoJSGEciteP9y+fH52q1euv38WosqA6T2gGOT44vry7BEQtJkMAMMpa6JagAMcUfWYa4hkkzAc7fFlSjwqCoOUYAF5RjHZPVCFBOtSBGfgUDji3c3jpibeEMQhIMh8NwshqyRsBJgvF4jMs/YlVR5KhgNpuBLzk0OcUiR3CMhcPaOzsZiAAA/AjmaB3WZIkAAAAASUVORK5CYII=") left top no-repeat; 176*6777b538SAndroid Build Coastguard Worker } 177*6777b538SAndroid Build Coastguard Worker 178*6777b538SAndroid Build Coastguard Worker a.dir { 179*6777b538SAndroid Build Coastguard Worker background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABt0lEQVR42oxStZoWQRCs2cXdHTLcHZ6EjAwnQWIkJyQlRt4Cd3d3d1n5d7q7ju1zv/q+mh6taQsk8fn29kPDRo87SDMQcNAUJgIQkBjdAoRKdXjm2mOH0AqS+PlkP8sfp0h93iu/PDji9s2FzSSJVg5ykZqWgfGRr9rAAAQiDFoB1OfyESZEB7iAI0lHwLREQBcQQKqo8p+gNUCguwCNAAUQAcFOb0NNGjT+BbUC2YsHZpWLhC6/m0chqIoM1LKbQIIBwlTQE1xAo9QDGDPYf6rkTpPc92gCUYVJAZjhyZltJ95f3zuvLYRGWWCUNkDL2333McBh4kaLlxg+aTmyL7c2xTjkN4Bt7oE3DBP/3SRz65R/bkmBRPGzcRNHYuzMjaj+fdnaFoJUEdTSXfaHbe7XNnMPyqryPcmfY+zURaAB7SHk9cXSH4fQ5rojgCAVIuqCNWgRhLYLhJB4k3iZfIPtnQiCpjAzeBIRXMA6emAqoEbQSoDdGxFUrxS1AYcpaNbBgyQBGJEOnYOeENKR/iAd1npusI4C75/c3539+nbUjOgZV5CkAU27df40lH+agUdIuA/EAgDmZnwZlhDc0wAAAABJRU5ErkJggg==") left top no-repeat; 180*6777b538SAndroid Build Coastguard Worker } 181*6777b538SAndroid Build Coastguard Worker 182*6777b538SAndroid Build Coastguard Worker a.up { 183*6777b538SAndroid Build Coastguard Worker background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVR42myTA+w1RxRHz+zftmrbdlTbtq04qRGrCmvbDWp9tq3a7tPcub8mj9XZ3eHOGQdJAHw77/LbZuvnWy+c/CIAd+91CMf3bo+bgcBiBAGIZKXb19/zodsAkFT+3px+ssYfyHTQW5tr05dCOf3xN49KaVX9+2zy1dX4XMk+5JflN5MBPL30oVsvnvEyp+18Nt3ZAErQMSFOfelCFvw0HcUloDayljZkX+MmamTAMTe+d+ltZ+1wEaRAX/MAnkJdcujzZyErIiVSzCEvIiq4O83AG7LAkwsfIgAnbncag82jfPPdd9RQyhPkpNJvKJWQBKlYFmQA315n4YPNjwMAZYy0TgAweedLmLzTJSTLIxkWDaVCVfAbbiKjytgmm+EGpMBYW0WwwbZ7lL8anox/UxekaOW544HO0ANAshxuORT/RG5YSrjlwZ3lM955tlQqbtVMlWIhjwzkAVFB8Q9EAAA3AFJ+DR3DO/Pnd3NPi7H117rAzWjpEs8vfIqsGZpaweOfEAAFJKuM0v6kf2iC5pZ9+fmLSZfWBVaKfLLNOXj6lYY0V2lfyVCIsVzmcRV9Y0fx02eTaEwhl2PDrXcjFdYRAohQmS8QEFLCLKGYA0AeEakhCCFDXqxsE0AQACgAQp5w96o0lAXuNASeDKWIvADiHwigfBINpWKtAXJvCEKWgSJNbRvxf4SmrnKDpvZavePu1K/zu/due1X/6Nj90MBd/J2Cic7WjBp/jUdIuA8AUtd65M+PzXIAAAAASUVORK5CYII=") left top no-repeat; 184*6777b538SAndroid Build Coastguard Worker } 185*6777b538SAndroid Build Coastguard Worker 186*6777b538SAndroid Build Coastguard Worker html[dir=rtl] a { 187*6777b538SAndroid Build Coastguard Worker background-position-x: right; 188*6777b538SAndroid Build Coastguard Worker } 189*6777b538SAndroid Build Coastguard Worker 190*6777b538SAndroid Build Coastguard Worker #parentDirLinkBox { 191*6777b538SAndroid Build Coastguard Worker margin-bottom: 10px; 192*6777b538SAndroid Build Coastguard Worker padding-bottom: 10px; 193*6777b538SAndroid Build Coastguard Worker } 194*6777b538SAndroid Build Coastguard Worker</style> 195*6777b538SAndroid Build Coastguard Worker 196*6777b538SAndroid Build Coastguard Worker<title id="title"></title> 197*6777b538SAndroid Build Coastguard Worker 198*6777b538SAndroid Build Coastguard Worker</head> 199*6777b538SAndroid Build Coastguard Worker 200*6777b538SAndroid Build Coastguard Worker<body> 201*6777b538SAndroid Build Coastguard Worker 202*6777b538SAndroid Build Coastguard Worker<h1 id="header">$i18n{header}</h1> 203*6777b538SAndroid Build Coastguard Worker 204*6777b538SAndroid Build Coastguard Worker<div id="parentDirLinkBox" style="display:none"> 205*6777b538SAndroid Build Coastguard Worker <a id="parentDirLink" class="icon up"> 206*6777b538SAndroid Build Coastguard Worker <span id="parentDirText">$i18n{parentDirText}</span> 207*6777b538SAndroid Build Coastguard Worker </a> 208*6777b538SAndroid Build Coastguard Worker</div> 209*6777b538SAndroid Build Coastguard Worker 210*6777b538SAndroid Build Coastguard Worker<table> 211*6777b538SAndroid Build Coastguard Worker <thead> 212*6777b538SAndroid Build Coastguard Worker <tr class="header" id="theader"> 213*6777b538SAndroid Build Coastguard Worker <th id="nameColumnHeader" tabindex=0 role="button">$i18n{headerName}</th> 214*6777b538SAndroid Build Coastguard Worker <th id="sizeColumnHeader" class="detailsColumn" tabindex=0 role="button"> 215*6777b538SAndroid Build Coastguard Worker $i18n{headerSize} 216*6777b538SAndroid Build Coastguard Worker </th> 217*6777b538SAndroid Build Coastguard Worker <th id="dateColumnHeader" class="detailsColumn" tabindex=0 role="button"> 218*6777b538SAndroid Build Coastguard Worker $i18n{headerDateModified} 219*6777b538SAndroid Build Coastguard Worker </th> 220*6777b538SAndroid Build Coastguard Worker </tr> 221*6777b538SAndroid Build Coastguard Worker </thead> 222*6777b538SAndroid Build Coastguard Worker <tbody id="tbody"> 223*6777b538SAndroid Build Coastguard Worker </tbody> 224*6777b538SAndroid Build Coastguard Worker</table> 225*6777b538SAndroid Build Coastguard Worker 226*6777b538SAndroid Build Coastguard Worker</body> 227*6777b538SAndroid Build Coastguard Worker 228*6777b538SAndroid Build Coastguard Worker</html> 229