View beforeInstallPrompt.js
(function (win, doc) { | |
win.addEventListener('beforeinstallprompt', function (e) { | |
e.preventDefault(); | |
var deferredPrompt = e; | |
var insertionPoint = doc.querySelector('main .contents'); | |
insertionPoint.insertAdjacentHTML('afterbegin',` | |
<div class="feedback" role="dialog" aria-labelledby="homescreen"> | |
<h2 id="homescreen">Install The Session</h2> | |
<p>Would you like to add The Session to your home screen?</p> | |
<button class="back">No, thanks</button> |
View trimCache.js
// Limit the number of items in a specified cache. | |
function trimCache(cacheName, maxItems) { | |
caches.open(cacheName) | |
.then( cache => { | |
cache.keys() | |
.then(keys => { | |
if (keys.length > maxItems) { | |
cache.delete(keys[0]) | |
.then( | |
trimCache(cacheName, maxItems) |
View minimal-serviceworker.js
// Licensed under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication | |
// http://creativecommons.org/publicdomain/zero/1.0/ | |
// HTML files: try the network first, then the cache. | |
// Other files: try the cache first, then the network. | |
// Both: cache a fresh version if possible. | |
// (beware: the cache will grow and grow; there's no cleanup) | |
const cacheName = 'files'; |
View playSparkline.js
// Licensed under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication | |
// http://creativecommons.org/publicdomain/zero/1.0/ | |
// Pass in an array of numbers ranging from 0 to 20. | |
function playSparkline(notes) { | |
if (!window.AudioContext && !window.webkitAudioContext) { | |
return; | |
} | |
var playing = null; |
View boilerplate.html
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<title></title> | |
</head> | |
<body> | |
</body> |
View monthmap.php
<?php | |
// Create an array of timestamps for posts | |
// and put them into an array called $timestamps. | |
foreach ($timestamps as $timestamp) { | |
$day = date("j", $timestamp); | |
$hour = date("G", $timestamp); | |
if (isset($heatcalendar['posts'][$day][$hour])) { | |
$heatcalendar['posts'][$day][$hour]++; |
View linkTwitterProfiles.php
<?php | |
$string = preg_replace( | |
'/(?<=^|\s)@([a-z0-9_]+)/i', | |
'<a href="https://twitter.com/$1">@$1</a>', | |
$string | |
); | |
?> |
View yourdomain.com.conf
<VirtualHost *:80> | |
ServerAdmin you@yourdomain.com | |
ServerName yourdomain.com | |
ServerAlias www.yourdomain.com | |
DocumentRoot /path/to/yourdomain | |
Redirect / https://yourdomain.com/ | |
</VirtualHost> | |
<VirtualHost *:443> | |
ServerAdmin you@yourdomain.com |
View formProgress.js
// Licensed under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication | |
// http://creativecommons.org/publicdomain/zero/1.0/ | |
(function (win, doc) { | |
'use strict'; | |
if (!win.XMLHttpRequest || !win.FormData || !win.addEventListener || !doc.querySelectorAll) { | |
// doesn't cut the mustard. | |
return; | |
} | |
function hijaxForm (formElement) { | |
var progressBar; |
View aria-controls.js
// Licensed under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication | |
// http://creativecommons.org/publicdomain/zero/1.0/ | |
(function (win, doc) { | |
'use strict'; | |
if (!doc.querySelectorAll || !win.addEventListener) { | |
// doesn't cut the mustard. | |
return; | |
} | |
var toggles = doc.querySelectorAll('[aria-controls]'); | |
var togglecount = toggles.length; |
NewerOlder