Skip to content

Instantly share code, notes, and snippets.

View willmorgan's full-sized avatar

Will Morgan willmorgan

View GitHub Profile
@willmorgan
willmorgan / JavaScriptConfig.php
Created October 18, 2012 12:03
JavaScriptConfig: A utility class to add in configuration information for JS files in the head tag.
<?php
/**
* JavaScriptConfig
* A utility class to add in configuration information for JS files in the head
* section, directly from PHP and json_encode with Requirements.
* Used with SilverStripe 2.4+
* @author @willmorgan
*/
class JavaScriptConfig {
@willmorgan
willmorgan / TableOptionsetField.php
Last active December 18, 2015 11:19
3,1 DataObjectManager style field that allows arbitrary options to be rendered on the frontend with maximum flexibility and ease.
<?php
/**
* TableOptionsetField
* DataObjectManager style field that allows arbitrary options to be rendered on
* the frontend with maximum flexibility and ease.
* @author Will Morgan <will@betterbrief.co.uk>
*/
class TableOptionsetField extends FormField {
@willmorgan
willmorgan / transitionmasher.js
Created November 6, 2013 13:38
transitionmasher.js
if(this.transitions) {
body.addClass('bhv-transition-now').css('height', fullHeight);
body.height();
body.removeClass('bhv-transition-now').addClass('state-transitioning');
body.height();
body.css('height', 0);
body.on('transitionend.close', function(event) {
body.off('transitionend.close');
body.addClass('state-hidden');
body.height();
#!/bin/sh
# Pre-commit file needs to be executable so first
# chmod +x .git/hooks/pre-commit
# Fix your grunt path
PATH="/usr/local/bin:$PATH"
# Runs grunt default
echo "Running Grunt..."
@willmorgan
willmorgan / example.php
Last active August 29, 2015 14:12
git-hash.php
<!-- Step 0: Ensure your server configuration is correct (see sample-apache.conf) -->
<!-- Step 1: Include the hash script (see git-hash.php) -->
<?php $hash = require_once 'git-hash.php'; ?>
<html>
<!-- Step 2: Prepend the hash to any combined assets -->
<link rel="stylesheet" href="assets/_combined-<?=$hash?>.css" />
<script src="assets/_combined-<?=$hash?>.js" />
@willmorgan
willmorgan / anchor-coordinates.js
Created June 23, 2015 09:36
"Anchor" an element around another element.
function getAnchorCoordinates(anchor, container, me) {
me = me || this.el;
container = container || document.body;
// Margins - use half a margin for normal positioning, the full margin for compensating
// against the container box
var offsetMarginX = 30;
var offsetMarginY = 30;
// The coordinates we're anchoring around
@willmorgan
willmorgan / .htaccess
Created February 18, 2016 15:34
SilverStripe mod_pagespeed install
<IfModule pagespeed_module>
ModPagespeed on
ModPagespeedDisallow "*/admin/*"
AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html
ModPagespeedLowercaseHtmlNames on
ModPagespeedEnableFilters prioritize_critical_css,defer_javascript
ModPagespeedEnableFilters convert_jpeg_to_webp,inline_preview_images
ModPagespeedEnableFilters collapse_whitespace,remove_comments
</IfModule>
@willmorgan
willmorgan / update-authorized-keys.sh
Created April 19, 2017 12:55 — forked from dhensby/update-authorized-keys.sh
Script to update SSH keys for a user
#!/usr/bin/env bash
USER=''
HOME_DIR=''
DEBUG=false
KEY_FILE=''
function setuser {
if [ -z "$1" ]; then
echo "RUNTIME EXCEPTION: No user supplied"
@willmorgan
willmorgan / function.js
Last active June 22, 2017 08:41
Azure Function crasher
const sshpk = require('sshpk');
function printClientCert(cert) {
return sshpk.parseCertificate(cert, 'x509');
}
module.exports = function (context, req) {
context.log(
printClientCert(Buffer.from(req.headers['x-arr-clientcert'], 'base64'))
);
@willmorgan
willmorgan / fail-ci-if-only-found.sh
Created January 8, 2018 15:13
Checks for accidental .only blocks inside tests
set +e
# Check for accidental `.only` blocks inside tests, and fail the tests if any are found:
ACCIDENTAL_ONLY=$(grep -R -m 1 --include="*.js" --exclude-dir=node_modules --exclude-dir=.git "\.only" . 2>&1)
HAS_ACCIDENTAL_ONLY=$?
set -e
if [ $HAS_ACCIDENTAL_ONLY == 0 ];
then
echo "Found a \`.only\` block inside the tests; failing CI build. Details below:"
echo ${ACCIDENTAL_ONLY}