Instantly share code, notes, and snippets.
Created
January 3, 2018 22:08
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save drudge/bb40464f818bb644b60db98f4e25c3dd to your computer and use it in GitHub Desktop.
dropshare template
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- | |
Welcome to your very own Dropshare HTML landing page template. | |
Feel free to edit this file to suit your needs, BUT.. | |
*** IMPORTANT *** | |
do not forget to include all required variables to display the landing page properly. | |
Variable | Description | |
########################################################## | |
__FILENAME__ | Name of the file shared | |
__PATH__ | Path to the file shared | |
__PREVIEW__ | Automatically generated by Dropshare if file is an image, or video, or text | |
__FILESIZE__ | Formatted file size of the file shared | |
__FILETYPE__ | Apple Uniform Type Identifier (https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html) | |
__SHAREDATE__ | ISO formatted date of sharing | |
__PREVIEWURL__ | Absolute URL to preview file, required e.g. for Twitter cards or Slack previews (or custom preview implementations) | |
__LANDINGPAGEURL__ | Absolute URL to the landing page | |
Any questions? Head over to http://getdropsha.re/support and ask for help! | |
--> | |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<meta property="twitter:card" content="photo" /> | |
<meta property="twitter:image" content="__PREVIEWURL__" [^] /> | |
<meta property="twitter:title" content="__FILENAME__" /> | |
<title>__FILENAME__</title> | |
<style> | |
* { | |
box-sizing: border-box; | |
} | |
html { | |
font-size: 16px; | |
} | |
@media (min-width: 980px) { | |
html { font-size: 17px; } | |
} | |
@media (min-width: 1560px) { | |
html { font-size: 19px; } | |
} | |
body { | |
margin: 0; | |
font-size: 1rem; | |
line-height: 1.4; | |
font-family: -apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif; | |
background-color: #f7f7f7; | |
} | |
.upload-meta { | |
margin: 0 0 1.2rem; | |
font-size: 0.8rem; | |
font-style: italic; | |
color: rgba(0,0,0,0.35); | |
} | |
.container { | |
margin-bottom: 15vw; | |
text-align: center; | |
} | |
.container, .imagePreview.hljs { | |
width: 90vw; | |
max-width: 1170px; | |
margin-left: auto; | |
margin-right: auto; | |
} | |
.preview { | |
margin: 3rem auto 2.5rem; | |
} | |
@media (min-width: 650px) { | |
.preview { | |
margin-top: 10vh; | |
} | |
} | |
.preview-content-wrap { | |
display: inline-block; | |
background-color: white; | |
box-shadow: 0 3px 4px 0 rgba(0,0,0,.14), 0 3px 3px -2px rgba(0,0,0,.2), 0 1px 8px 0 rgba(0,0,0,.12); | |
} | |
.hljs > pre { | |
margin: 0; | |
padding: 1em; | |
font-size: 0.83rem; | |
-webkit-font-smoothing: antialiased; | |
line-height: 1.3; | |
} | |
.file-preview { | |
padding: 1em; | |
} | |
.file-preview svg { | |
width: 80%; | |
max-width: 90px; | |
margin: 1em 5em 0; | |
} | |
.file-preview-name { | |
font-family: Roboto, "Courier New", Courier, monospace; | |
color: #888; | |
} | |
.download { | |
display: inline-block; | |
margin: auto; | |
} | |
.download-btn { | |
display: -ms-flexbox; | |
display: flex; | |
-ms-flex-pack: center; | |
justify-content: center; | |
-ms-flex-align: center; | |
align-items: center; | |
position: relative; | |
padding: 0.65em 2.2em; | |
background-color: #536dfe; | |
border: none; | |
border-radius: 4px; | |
box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), | |
0 3px 1px -2px rgba(0,0,0,.2), | |
0 1px 5px 0 rgba(0,0,0,.12); | |
color: white; | |
font-weight: 600; | |
text-decoration: none; | |
will-change: box-shadow; | |
transition: all 0.18s cubic-bezier(.4,0,1,1); | |
} | |
.download-btn:hover { | |
-webkit-filter: brightness(1.2); | |
filter: brightness(1.2); | |
} | |
.download-btn:active { | |
box-shadow: 0 4px 5px 0 rgba(0,0,0,.14), | |
0 1px 10px 0 rgba(0,0,0,.12), | |
0 2px 4px -1px rgba(0,0,0,.2); | |
} | |
.download-btn-text { | |
margin: 0 0.3em 0 0.5em; | |
} | |
.filesize { | |
font-size: 0.7em; | |
opacity: 0.7; | |
font-weight: 300; | |
flex: 1 0 auto; | |
} | |
.download-icon { | |
flex: 0 0 1.7em; | |
height: 1.7em; | |
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGhlaWdodD0iNTEycHgiIGlkPSJMYXllcl8xIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjUxMnB4IiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gIDxnPiAgICA8Zz4gICAgICA8cG9seWdvbiBmaWxsPSIjZmZmIiBwb2ludHM9IjE5My4yLDM4MS4yIDE4MS42LDM5Mi42IDI1Ni4xLDQ2NiAzMzAuNiwzOTIuNiAzMTksMzgxLjIgMjY0LjMsNDM1IDI2NC4zLDE5Mi45IDI0Ny45LDE5Mi45IDI0Ny45LDQzNSAgICIvPiAgICA8L2c+ICAgIDxnPiAgICAgIDxwYXRoIGZpbGw9InJnYmEoMjU1LDI1NSwyNTUsMC44KSIgZD0iTTM5OS4yLDE2NC40YzAtMS4yLDAuMi0yLjMsMC4yLTMuNUMzOTkuNCw5Ny40LDM0Ni41LDQ2LDI4Mi42LDQ2Yy00Ni4xLDAtODUuOCwyNi44LTEwNC40LDY1LjRjLTguMS00LTE3LjEtNi4zLTI2LjgtNi4zICAgIGMtMjkuNiwwLTU0LjEsMjMuMy01OC45LDUxLjNjLTM1LjIsMTItNjAuNiw0My40LTYwLjYsODIuNGMwLDQ5LjEsNDAuMSw4OS4yLDg5LjYsODkuMkgyMTN2LTE2aC05MC43ICAgIGMtNDAuOSwwLTc0LjItMzMuMi03NC4yLTczLjdjMC0zMS40LDIwLjItNTcuNSw1MC4yLTY3LjdsOC40LTIuOGwxLjUtOC43YzMuNi0yMS4zLDIyLjEtMzguOCw0My45LTM4LjhjNi45LDAsMTMuNywxLjYsMTkuOSw0LjcgICAgbDEzLjUsNi43bDYuNS0xMy42YzE2LjYtMzQuNCw1Mi4xLTU2LjYsOTAuNC01Ni42YzU1LjMsMCwxMDAuOSw0Mi44LDEwMC45LDk3LjZjMCwxMy4xLTAuMiwyMC4xLTAuMiwyMC4xbDE1LjIsMC4xICAgIGMzNi43LDAuNSw2NS42LDMwLDY1LjYsNjYuNGMwLDM2LjMtMjkuOCw2Ni4xLTY2LjUsNjYuM2wtMy4yLDAuMUgyOTd2MTZoMTAxaDBjNDUsMCw4MS45LTM3LjIsODEuOS04Mi4xICAgIEM0NzkuOSwyMDEsNDQ0LjUsMTY0LjUsMzk5LjIsMTY0LjR6Ii8+ICAgIDwvZz4gIDwvZz48L3N2Zz4=); | |
background-size: contain; | |
background-repeat: no-repeat; | |
background-position: center; | |
} | |
/* preview types */ | |
img { | |
max-width: 100%; | |
max-height: 80vh; | |
display: block; | |
} | |
video, iframe { | |
height: auto; | |
max-height: 80vh; | |
width: 100%; | |
} | |
iframe { | |
height: 80vh; | |
border: none; | |
width: 90vw; | |
max-width: 1170px; | |
} | |
</style> | |
</head> | |
<body> | |
<div style="display: none;"> | |
<svg xmlns="http://www.w3.org/2000/svg"> | |
<symbol id="file-icon" width="202px" height="182px" viewBox="0 0 202 182"> | |
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> | |
<path fill="#000000" d="M127.933333,67.4074074 L181.753888,67.4074074 C193.004324,67.4074074 202,76.4575401 202,87.6214437 L202,134.823001 C202,145.989181 192.935507,155.037037 181.753888,155.037037 L127.933333,155.037037 L127.933333,168.580566 C127.933333,175.945383 121.911874,182 114.484026,182 L13.4493075,182 C5.99889763,182 0,175.942014 0,168.46911 L0,13.5308907 C0,6.05546571 6.03755275,0 13.4852515,0 L87.5333333,0 L127.933333,47.1851852 L127.933333,67.4074074 Z M121.2,155.037037 L67.3794452,155.037037 C56.1290094,155.037037 47.1333333,145.986904 47.1333333,134.823001 L47.1333333,87.6214437 C47.1333333,76.4552631 56.1978268,67.4074074 67.3794452,67.4074074 L121.2,67.4074074 L121.2,53.9259259 L94.2526149,53.9259259 C86.8229411,53.9259259 80.8,47.9498899 80.8,40.4045457 L80.8,6.74074074 L13.4368885,6.74074074 C9.73461722,6.74074074 6.73333333,9.80954978 6.73333333,13.4508585 L6.73333333,168.549142 C6.73333333,172.255037 9.79504013,175.259259 13.4663987,175.259259 L114.466935,175.259259 C118.185504,175.259259 121.2,172.259992 121.2,168.563023 L121.2,155.037037 Z M87.5333333,10.1111111 L87.5333333,40.3852286 C87.5333333,44.1407409 90.5677174,47.1851852 94.2447079,47.1851852 L119.179671,47.1851852 L87.5333333,10.1111111 L87.5333333,10.1111111 Z M67.2967141,74.1481481 C59.8795037,74.1481481 53.8666667,80.2160025 53.8666667,87.5758183 L53.8666667,134.868626 C53.8666667,142.284524 59.9424483,148.296296 67.2967141,148.296296 L181.836619,148.296296 C189.25383,148.296296 195.266667,142.228442 195.266667,134.868626 L195.266667,87.5758183 C195.266667,80.1599209 189.190885,74.1481481 181.836619,74.1481481 L67.2967141,74.1481481 L67.2967141,74.1481481 Z" fill-rule="nonzero"></path> | |
<path fill="#000000" d="M102.713893,92.5711111 L102.713893,96.0955556 L82.8383377,96.0955556 L82.8383377,108.402222 L100.113893,108.402222 L100.113893,111.926667 L82.8383377,111.926667 L82.8383377,129 L78.9383377,129 L78.9383377,92.5711111 L102.713893,92.5711111 Z M113.951671,92.5711111 L113.951671,129 L110.08056,129 L110.08056,92.5711111 L113.951671,92.5711111 Z M125.333893,92.5711111 L125.333893,125.475556 L143.649449,125.475556 L143.649449,129 L121.433893,129 L121.433893,92.5711111 L125.333893,92.5711111 Z M173.405004,92.5711111 L173.405004,96.0955556 L152.98056,96.0955556 L152.98056,108.402222 L172.191671,108.402222 L172.191671,111.926667 L152.98056,111.926667 L152.98056,125.475556 L174.30056,125.475556 L174.30056,129 L149.08056,129 L149.08056,92.5711111 L173.405004,92.5711111 Z"></path> | |
</g> | |
</svg> | |
</svg> | |
</div> | |
<div class="container"> | |
<div class="preview"> | |
<div class="upload-meta"> | |
__FILENAME__<span style="margin: 0 1.3em;">•</span>Shared <span id="date" data-timestamp="__UNIXSHAREDATE__">__SHAREDATE__</span> | |
</div> | |
<div class="preview-content-wrap">__PREVIEW__</div> | |
</div> | |
<div class="download"> | |
<a href="__PATH__" class="download-btn" download="__FILENAME__"> | |
<div class="download-icon"></div> | |
<div class="download-btn-text">Download</div> | |
<div class="filesize">(__FILESIZE__)</div> | |
</a> | |
</div> | |
</div> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> | |
<script> | |
var colors = ['#536dfe', '#8bc34a', '#ff5722', '#607d8b', '#9c27b0']; | |
var selectedColor = colors[Math.floor(Math.random() * colors.length)]; | |
document.querySelector('.download-btn').style.backgroundColor = selectedColor; | |
// Swap out timestamp for human readable time diff | |
var dateEl = document.getElementById("date"); | |
var timestamp = parseInt(dateEl.getAttribute('data-timestamp'), 10); | |
if ( !isNaN(timestamp) ) { | |
dateEl.innerHTML = moment(timestamp * 1000).fromNow(); | |
} | |
</script> | |
<!-- Syntax Highlighting Start --> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/ocean.min.css"> | |
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js"></script> | |
<script type="text/javascript"> | |
hljs.configure({ | |
tabReplace: " " | |
}); | |
var codeFileTypes = [ | |
"public.plain-text", | |
"public.html", | |
"public.javascript-source", | |
"com.netscape.javascript-source", | |
"public.css", | |
"net.daringfireball.markdown" | |
]; | |
// Files we want to consider code but that | |
// are unrecognized by file_type | |
var codeFileExtensions = [ | |
/.sass$/, | |
/.scss$/, | |
/.stylus$/, | |
/.less$/, | |
/.elm$/, | |
/.vue$/, | |
/.jsx$/ | |
]; | |
var isCode = false; | |
codeFileTypes.forEach(function(type) { | |
if (type === "__FILETYPE__") { | |
isCode = true; | |
} | |
}); | |
codeFileExtensions.forEach(function(ext) { | |
if ("__FILENAME__".match(ext) !== null) { | |
isCode = true; | |
} | |
}); | |
if (isCode) { | |
$.ajax({ | |
url: "__PREVIEWURL__", | |
dataType: "text", | |
success: function(data) { | |
var preview_block = $(".preview-content-wrap"); | |
preview_block.css("text-align", "left"); | |
preview_block.text(data); | |
preview_block.html("<pre>" + preview_block.html() + "</pre>"); | |
hljs.highlightBlock(preview_block[0]); | |
} | |
}); | |
} else if (!document.querySelector(".imagePreview")) { | |
$(".preview-content-wrap").html( | |
"<div class='file-preview'>" + | |
"<svg><use xlink:href='#file-icon'></use></svg>" + | |
"<div class='file-preview-name'>__FILENAME__</div>" + | |
"</div>" | |
); | |
document.querySelectorAll("svg path").forEach(function(path) { | |
path.style.fill = selectedColor; | |
}); | |
// Remove filename from meta | |
$(".upload-meta").text($("#date").text()); | |
} | |
</script> | |
<!-- Syntax Highlighting Stop --> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment