new file: Files/flashplayer_32_sa.exe new file: favicon.ico new file: globe.gif new file: imgs/download.png new file: imgs/zuck.jpg new file: index.html new file: other.ico new file: script.js new file: site.webmanifest new file: sitemap.html new file: styles/backround.css new file: styles/border.css new file: styles/fonts/Titillium_Web/OFL.txt new file: styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf new file: styles/fonts/webfontkit-20221027-163353/generator_config.txt new file: styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2 new file: styles/fonts/webfontkit-20221027-165950/generator_config.txt new file: styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2 new file: styles/style.css new file: tools/2048/.gitignore new file: tools/2048/.jshintrc new file: tools/2048/CONTRIBUTING.md new file: tools/2048/LICENSE.txt new file: tools/2048/README.md new file: tools/2048/Rakefile new file: tools/2048/favicon.ico new file: tools/2048/index.html new file: tools/2048/js/animframe_polyfill.js new file: tools/2048/js/application.js new file: tools/2048/js/bind_polyfill.js new file: tools/2048/js/classlist_polyfill.js new file: tools/2048/js/game_manager.js new file: tools/2048/js/grid.js new file: tools/2048/js/html_actuator.js new file: tools/2048/js/keyboard_input_manager.js new file: tools/2048/js/local_storage_manager.js new file: tools/2048/js/tile.js new file: tools/2048/meta/apple-touch-icon.png new file: tools/webretro/cores/neocd_libretro.js new file: tools/webretro/cores/neocd_libretro.wasm new file: tools/webretro/cores/nestopia_libretro.js new file: tools/webretro/cores/nestopia_libretro.wasm new file: tools/webretro/cores/o2em_libretro.js new file: tools/webretro/cores/o2em_libretro.wasm new file: tools/webretro/cores/opera_libretro.js new file: tools/webretro/cores/opera_libretro.wasm
145 lines
4.1 KiB
HTML
145 lines
4.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Choose a File</title>
|
|
<style>
|
|
body {
|
|
background-color: #101010;
|
|
color: white;
|
|
}
|
|
|
|
.center {
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 50%;
|
|
transform: translate(-50%, -50%);
|
|
margin: 0px;
|
|
text-align: center;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="center">
|
|
<h1>Choose a file...</h1>
|
|
<h2>Make sure you have popups enabled!</h2>
|
|
</div>
|
|
<script src="https://www.dropbox.com/static/api/2/dropins.js"></script>
|
|
<script src="https://js.live.net/v7.2/OneDrive.js"></script>
|
|
<script src="tokens.js"></script>
|
|
<script>
|
|
var queries = Object.fromEntries(window.location.search.substring(1).split("&").map(i => i.split("=")).map(i => i.map(i => i && decodeURIComponent(i))));
|
|
|
|
var fileTypes = queries.exts ? queries.exts.split(",") : [];
|
|
|
|
var receiverFrame = document.createElement("iframe");
|
|
receiverFrame.style.display = "none";
|
|
receiverFrame.crossorigin = "anonymous"; // soon...
|
|
receiverFrame.src = queries.returnurl;
|
|
|
|
var receiverLoaded = false;
|
|
var frameTimer = setTimeout(function() {
|
|
alert("The file receiver is taking an unusually long time to respond. This could be the result of Content-Security-Policy: frame-ancestors or X-Frame-Options blocking it. The frame is now shown:");
|
|
receiverFrame.style.display = "block";
|
|
}, 5000);
|
|
|
|
receiverFrame.onload = function() {
|
|
receiverLoaded = true;
|
|
clearTimeout(frameTimer);
|
|
}
|
|
document.body.appendChild(receiverFrame);
|
|
|
|
function finish(message, name, data) {
|
|
function waitForReceiverLoad() {
|
|
if (receiverLoaded) {
|
|
receiverFrame.contentWindow.postMessage({webretro: {timestamp: parseInt(queries.timestamp), message: message, name: name, data: data}}, "*");
|
|
} else {
|
|
setTimeout(waitForReceiverLoad, 250);
|
|
}
|
|
}
|
|
waitForReceiverLoad();
|
|
}
|
|
|
|
window.addEventListener("unload", function() {
|
|
if (queries.type) finish("cancelled");
|
|
}, false);
|
|
|
|
window.addEventListener("message", function(e) {
|
|
if (e.data == "acknowledged") window.close(); // with coop, this window has "ownership" over itself
|
|
}, false);
|
|
|
|
function xhr(loc, success, error) {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("GET", loc, true);
|
|
xhr.responseType = "arraybuffer";
|
|
xhr.onload = function() {
|
|
success(this.response);
|
|
}
|
|
xhr.onerror = function(e) {
|
|
if (error) error(e);
|
|
}
|
|
xhr.send();
|
|
}
|
|
|
|
// Pass on data from Google Drive picker
|
|
window.addEventListener("message", function(e) {
|
|
if (e.origin == window.location.origin && e.data.webretro) finish(e.data.webretro.message, e.data.webretro.name, e.data.webretro.data);
|
|
}, false);
|
|
|
|
if (queries.type == "drive") {
|
|
// Google Drive
|
|
|
|
var dwidth = window.outerWidth - 320;
|
|
var dheight = window.outerHeight - 240;
|
|
var dleft = (window.innerWidth - dwidth) / 2 + window.screenLeft;
|
|
var dtop = (window.innerHeight - dheight) / 2 + window.screenTop;
|
|
window.open("drive.html?exts=" + fileTypes.join(","), "Choose a File", "left=" + dleft + ",top=" + dtop + ",width=" + dwidth + ",height=" + dheight);
|
|
} else if (queries.type == "dropbox") {
|
|
// Dropbox
|
|
|
|
Dropbox.appKey = dropboxAppKey;
|
|
Dropbox.choose({
|
|
success: function(files) {
|
|
var file = files[0];
|
|
xhr(file.link, function(data) {
|
|
finish("success", file.name, data);
|
|
}, function() {
|
|
finish("error");
|
|
});
|
|
},
|
|
cancel: function() {
|
|
finish("cancelled");
|
|
},
|
|
linkType: "direct",
|
|
multiselect: false,
|
|
folderselect: false
|
|
});
|
|
} else if (queries.type == "onedrive") {
|
|
// OneDrive
|
|
|
|
OneDrive.open({
|
|
clientId: onedriveClientId,
|
|
action: "download",
|
|
multiSelect: false,
|
|
advanced: {
|
|
filter: fileTypes.join(",")
|
|
},
|
|
success: function(response) {
|
|
var name = response.value[0].name;
|
|
var link = response.value[0]["@microsoft.graph.downloadUrl"];
|
|
xhr(link, function(data) {
|
|
finish("success", name, data);
|
|
}, function() {
|
|
finish("error");
|
|
});
|
|
},
|
|
cancel: function() {
|
|
finish("cancelled");
|
|
},
|
|
error: function(error) {
|
|
finish("error");
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
</body>
|
|
</html> |