Skip to content

Instantly share code, notes, and snippets.

@zerosignalproductions
zerosignalproductions / estimated-reading-time.php
Created March 31, 2014 18:12
Estimated Reading time in PHP
<?php
$mycontent = $post->post_content; // wordpress users only
$word = str_word_count(strip_tags($mycontent));
$readingRate = 200;
$m = floor($word / readingRate);
$s = floor($word % readingRate / (readingRate / 60));
$est = $m . ' minute' . ($m == 1 ? '' : 's') . ', ' . $s . ' second' . ($s == 1 ? '' : 's');
?>
<p>Estimated reading time: <?php echo $est; ?></p>
@zerosignalproductions
zerosignalproductions / gist:9766252
Created March 25, 2014 16:55
DOM-based Routing from Wordpress Roots theme
/* ========================================================================
* DOM-based Routing
* Based on http://goo.gl/EUTi53 by Paul Irish
*
* Only fires on body classes that match. If a body class contains a dash,
* replace the dash with an underscore when adding it to the object below.
*
* .noConflict()
* The routing is enclosed within an anonymous function so that you can
* always reference jQuery with $, even when in .noConflict() mode.
@zerosignalproductions
zerosignalproductions / phone-regex.js
Last active August 29, 2015 13:56
Validate a phone number allowing for the format 1-(XXX)-XXX-XXXX, but not 1XX-XXX-XXX or XXX-555-XXXX.
//https://www.debuggex.com/r/H3Wz2nlxZUJcs7sV/3
/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-??(?!5{3})[2-9]\d{2}-?\d{4}$/
@zerosignalproductions
zerosignalproductions / swipe-support.js
Created January 28, 2014 23:32
Add swipe support to websites. Not very generic at the moment.
(function($, window) {
var self = $('html'),
dragDelta = 500;
friction = 0.35;
mouseDown = false,
touchDelta = 0;
startSwipe = 0,
isDragging = false;
//Assume no touch on load
@zerosignalproductions
zerosignalproductions / jquery-animation.js
Last active January 4, 2016 21:09
New animation function to auto switch between CSS and JS animation depending on browser support
// Updated: 01/28/2014
// Changes:
// Removed all non animation specific code
// Updated to allow passing in of positioning
var cssAnimation = (function($) {
var speed = 250,
easing = 'linear',
cssTransition = 'cubic-bezier(0.39, 0.575, 0.565, 1)',
done = false,
@zerosignalproductions
zerosignalproductions / custom_captions.php
Created January 15, 2014 20:28
Overhauled the insert image + captions in Wordpress to product html5 output
function custom_insert_image($html, $id, $caption, $title, $align, $url, $size, $alt ) {
//Always return an image with a <figure> tag, regardless of link or caption
//Grab the image tag
$image_tag = get_image_tag($id, '', $title, 'None', $size);
//Let's see if this contains a link
$linkptrn = "/<a[^>]*>/";
$found = preg_match($linkptrn, $html, $a_elem);
@zerosignalproductions
zerosignalproductions / admin.js
Last active November 21, 2018 17:16
Insert an image into the wordpress editor always wrapped in a figure tag. The javascript is used to remove the figure element from the editor if the delete button is used. Note that the inline edit does not work with this code.
(function($) {
$(document).ready(function() {
$('body').on('mousedown', '#wp_delimgbtn', function(e) {
var editor = tinyMCE.activeEditor,
element = editor.selection.getNode();
if(element.tagName !== 'FIGURE') {
$(element).parents('figure').remove();
}
});
@zerosignalproductions
zerosignalproductions / throttleresize.js
Last active January 6, 2017 19:33
JS Throttled Resize event using requestAnimationFrame
/**
* Throttled Resize event
* Updated to use requestAnimationFrame instead of setTimeout
* Original: https://github.com/louisremi/jquery-smartresize
*/
var $specialThrottle,
dummy = {_:0},
frame = 0,
wasResized,
@zerosignalproductions
zerosignalproductions / tracking.js
Last active December 26, 2015 19:09
DoubleClick / SiteCatalyst Tracking
/**
* Adds DoubleClick or SiteCatalyst to any element using supplied
* selectors. If no selectors are given, function defaults to
* data-dctracking and data-tracking.
*
* @param {string or array} selectors elements to set tracking
*/
function setupTracking(selectors) {
//Can pass in selectors as string or array
@zerosignalproductions
zerosignalproductions / detectVendorPrefix.js
Created July 23, 2013 15:44
Detect the vendor prefix and return it as an object. Source: http://davidwalsh.name/vendor-prefix
var prefix = (function () {
var styles = window.getComputedStyle(document.documentElement, ''),
pre = (Array.prototype.slice
.call(styles)
.join('')
.match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o'])
)[1],
dom = ('WebKit|Moz|MS|O').match(new RegExp('(' + pre + ')', 'i'))[1];
return {
dom: dom,