/text.html/text.html |
@@ -0,0 +1,340 @@ |
<!DOCTYPE html> |
<html lang="en"> |
<head> |
<meta charset="utf-8"> |
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> |
<meta http-equiv="Pragma" content="no-cache" /> |
<meta http-equiv="Expires" content="0" /> |
<meta name="viewport" content="width=device-width, initial-scale=1"> |
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> |
<meta name="description" content="quick asset upload"> |
<meta name="author" content="Wizardry and Steamworks"> |
<link rel="icon" href="favicon.ico"> |
|
<title>Quickload</title> |
|
<!-- Polyfill --> |
<script src="js/polyfill/polyfill.min.js"></script> |
|
<!-- Bootstrap core CSS --> |
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet"> |
|
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> |
<link href="css/bootstrap/ie10-viewport-bug-workaround.css" rel="stylesheet"> |
|
<!-- Just for debugging purposes. Don't actually copy these 2 lines! --> |
<!--[if lt IE 9]><script src="js/bootstrap/ie8-responsive-file-warning.js"></script><![endif]--> |
<script src="js/bootstrap/ie-emulation-modes-warning.js"></script> |
|
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> |
<!--[if lt IE 9]> |
<script src="js/bootstrap/html5shiv.min.js"></script> |
<script src="js/bootstrap/respond.min.js"></script> |
<![endif]--> |
|
<!-- Trumbowyg --> |
<link href="css/trumbowyg/trumbowyg.min.css" rel="stylesheet"> |
<!-- Local style --> |
<link href="css/text/style.css" rel="stylesheet"> |
</head> |
|
<body> |
|
<div class="container"> |
|
<!-- Main component for a primary marketing message or call to action --> |
<div class="jumbotron"> |
<h1>Quickload</h1> |
<p>Asset sharing platform.</p> |
</div> |
|
<ul class="nav nav-tabs"> |
<li><a href="index.html">Home</a></li> |
<li><a href="files.html">Files</a></li> |
<li class="active"><a href="#">Text</a></li> |
</ul> |
|
<div class="panel panel-default"> |
<div class="panel-heading"> |
<div class="form-group"> |
<div class="input-group"> |
<span class="input-group-btn"> |
<button id="save" class="btn btn-default" type="button" data-toggle="tooltip" data-placement="auto" title="Generate link."> |
<i class="glyphicon glyphicon-share"></i> |
</button> |
</span> |
<input id="URL" type="text" class="form-control" readonly> |
<span class="input-group-btn"> |
<button id="copy-url" class="btn btn-default" type="button" data-clipboard-target="#URL" data-toggle="tooltip" data-placement="auto" title="Copy to clipboard."><i class="glyphicon glyphicon-paperclip"></i></button> |
</span> |
</div> |
</div> |
<form id="nick-form" role="form"> |
<div class="form-group has-feedback"> |
<div class="input-group"> |
<span class="input-group-btn"> |
<button id="go" class="btn btn-default" type="button" data-toggle="tooltip" data-placement="auto" title="Load document."> |
<i class="glyphicon glyphicon-play"></i> |
</button> |
</span> |
<span class="input-group-btn"> |
<button id="reset" class="btn btn-default" type="button" data-toggle="tooltip" data-placement="auto" title="Reset document."> |
<i id="home-icon" class="glyphicon glyphicon-home"></i> |
</button> |
</span> |
<input id="nick" type="text" class="form-control" pattern="^[A-Za-z0-9]{32}$" maxlength="32"> |
<span class="input-group-btn"> |
<button id="copy-nick" class="btn btn-default" type="button" data-clipboard-target="#nick" data-toggle="tooltip" data-placement="auto" title="Copy to clipboard."><i class="glyphicon glyphicon-paperclip"></i></button> |
</span> |
</div> |
</div> |
</form> |
</div> |
<div class="panel-body" id="editorpanel"> |
<div id="trumbowyg" style="display: none; font-family: monospace;"> |
</div> |
</div> |
</div> |
|
</div> <!-- /container --> |
|
<div id="footer"> |
<div class="container"> |
<p class="text-muted credit">Copyright <i class="glyphicon glyphicon-copyright-mark"></i> 2017 <a href="http://grimore.org">Wizardry and Steamworks</a>.</p> |
</div> |
</div> |
|
<script src="js/jquery/jquery.min.js"></script> |
<script src="js/bootstrap/bootstrap.min.js"></script> |
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> |
<script src="js/bootstrap/ie10-viewport-bug-workaround.js"></script> |
|
<!-- Trumbowyg --> |
<script src="js/trumbowyg/trumbowyg.min.js"></script> |
<!-- Clipboard --> |
<script src="js/clipboard/clipboard.min.js"></script> |
<!-- Fingerprint 2 --> |
<script src="js/fingerprintjs/fingerprint2.min.js"></script> |
<!-- js-cookie --> |
<script src="js/jscookie/js.cookie.js"></script> |
<!-- Bootstrap Validator --> |
<script src="js/validator/validator.min.js"></script> |
<script> |
$(document).ready(() => { |
// Attach the form validator. |
$('#nick-form').validator({ |
focus: false |
}); |
|
// Enable the Clipboard button. |
new Clipboard('#copy-url'); |
|
// Get the fingerprint. |
new Fingerprint2().get((result, components) => { |
// Set the nick as a cookie. |
const fingerprint = result; |
var nick = Cookies.get('nick'); |
if(!nick || nick.length !== 32) { |
Cookies.set('nick', result, { path: '' }); |
nick = result; |
} |
else |
result = nick; |
|
// Set the nick. |
$('#nick').val(result); |
new Clipboard('#copy-nick'); |
|
if(fingerprint == nick) |
$('#home-icon').addClass("text-success"); |
else |
$('#home-icon').addClass("text-danger"); |
|
// Load the editor. |
$('#trumbowyg').trumbowyg({ |
autogrow: true, |
disabled: true |
}).on('tbwchange', () => { |
$('#editor').trumbowyg('disable'); |
$.post('share-text.php', { |
data: $('#trumbowyg').trumbowyg('html'), |
fingerprint: result, |
action: 'SAVE' |
}).done((data) => { |
$('#trumbowyg').trumbowyg('enable'); |
}).fail(() => { |
$('#trumbowyg').trumbowyg('enable'); |
}); |
}); |
|
// Retrieve the contents of the shared file. |
$.post('share-text.php', |
{ |
timestamp: window.performance.now(), |
fingerprint: result, |
action: 'LOAD' |
}).done((data) => {; |
$('#trumbowyg') |
.trumbowyg('html', data); |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
}).fail(() => { |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
}); |
|
$('#save').click(() => { |
$('#editor').trumbowyg('disable'); |
|
var formData = new FormData(); |
formData.append('file', new Blob( |
[ |
$('#trumbowyg').trumbowyg('html') |
] |
), |
'.html' |
); |
|
$.ajax({ |
url: 'upload-files.php', |
type: 'POST', |
data: formData, |
// cache: false // FF |
processData: false, |
contentType: false |
}).done((data) => { |
$('#URL').val(data); |
$('#trumbowyg').trumbowyg('enable'); |
}).fail(() => { |
$('#trumbowyg').trumbowyg('enable'); |
}); |
}); |
|
// When the button is clicked, navigate to the fingerprint. |
$('#go').click(() => { |
nick = $('#nick').val(); |
if(!nick || nick.length != 32) |
return; |
Cookies.set('nick', nick, { path: '' }); |
result = nick; |
|
// Retrieve the contents of the shared file. |
$.post('share-text.php', |
{ |
timestamp: window.performance.now(), |
fingerprint: nick, |
action: 'LOAD' |
}).done((data) => {; |
$('#trumbowyg') |
.trumbowyg('html', data); |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
|
if(fingerprint == nick) |
$('#home-icon').addClass("text-success").removeClass("text-danger"); |
else |
$('#home-icon').addClass("text-danger").removeClass("text-success"); |
|
}).fail(() => { |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
}); |
}); |
|
// When the form is submitted, naigate to the fingerprint. |
$('#nick-form').submit((e) => { |
e.preventDefault(); |
|
nick = $('#nick').val(); |
if(!nick || nick.length != 32) |
return; |
Cookies.set('nick', nick, { path: '' }); |
result = nick; |
|
// Retrieve the contents of the shared file. |
$.post('share-text.php', |
{ |
timestamp: window.performance.now(), |
fingerprint: nick, |
action: 'LOAD' |
}).done((data) => {; |
$('#trumbowyg') |
.trumbowyg('html', data); |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
|
if(fingerprint == nick) |
$('#home-icon').addClass("text-success").removeClass("text-danger"); |
else |
$('#home-icon').addClass("text-danger").removeClass("text-success"); |
|
}).fail(() => { |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
}); |
}); |
|
// While the nick is changing, navigate to the changed fingerprint. |
$("#nick").on('input', () => { |
nick = $('#nick').val(); |
if(!nick || nick.length != 32) |
return; |
Cookies.set('nick', nick, { path: '' }); |
result = nick; |
|
// Retrieve the contents of the shared file. |
$.post('share-text.php', |
{ |
timestamp: window.performance.now(), |
fingerprint: nick, |
action: 'LOAD' |
}).done((data) => {; |
$('#trumbowyg') |
.trumbowyg('html', data); |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
|
if(fingerprint == nick) |
$('#home-icon').addClass("text-success").removeClass("text-danger"); |
else |
$('#home-icon').addClass("text-danger").removeClass("text-success"); |
}).fail(() => { |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
}); |
}); |
|
// When the reset button is pressed, navigate to the fingerprint. |
$('#reset').click(() => { |
Cookies.set('nick', fingerprint, { path: '' }); |
$('#nick').val(fingerprint); |
result = fingerprint; |
nick = fingerprint; |
|
// Retrieve the contents of the shared file. |
$.post('share-text.php', |
{ |
timestamp: window.performance.now(), |
fingerprint: fingerprint, |
action: 'LOAD' |
}).done((data) => {; |
$('#trumbowyg') |
.trumbowyg('html', data); |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
|
if(fingerprint == nick) |
$('#home-icon').addClass("text-success").removeClass("text-danger"); |
else |
$('#home-icon').addClass("text-danger").removeClass("text-success"); |
}).fail(() => { |
$('#trumbowyg').trumbowyg('enable'); |
$('#trumbowyg').show(); |
}); |
}); |
}); |
}); |
</script> |
</body> |
</html> |