Skip to content

Instantly share code, notes, and snippets.

View getdave's full-sized avatar
🏖️
AFK - I may not respond for a while...

Dave Smith getdave

🏖️
AFK - I may not respond for a while...
View GitHub Profile
@getdave
getdave / gist:4578295
Last active January 30, 2024 06:34
Gravity Forms - custom field validation function for checkboxes. Ensures all checkboxes have been checked.
// Replace 7 with the ID of your form and 13 with the ID of the field you want to force "all required"
// http://www.gravityhelp.com/documentation/page/Gform_field_validation
add_filter("gform_field_validation_7_13", 'validate_tcs', 10, 4);
function validate_tcs($result, $value, $form, $field) {
// Convert the checkbox input name value (returned as part of "field")
// into the "underscored" ID version which is found in the $_POST
foreach ($field['inputs'] as $input) {
$input_post_value = 'input_' . str_replace('.', '_', $input['id']);
@getdave
getdave / bookmarklet-github-expand-all-load-more.js
Created June 2, 2020 10:56
Bookmarktlet to automatically expand all those "Load more..." links into your Github PRs.
javascript:(function()%7Bfunction%20githubLoadAllPRComments()%20%7B%0A%0A%20%20%20%20function%20recursiveExpandLoadMore()%20%7B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Remove%20all%20existing%20timers%0A%20%20%20%20%20%20%20%20if(theTimeout)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20clearTimeout(theTimeout)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20const%20disabledLoadBtns%20%3D%20document.querySelector('.ajax-pagination-btn%5Bdisabled%5D')%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20any%20buttons%20are%20already%20in%20the%20loading%20state%20then%20requeue%0A%20%20%20%20%20%20%20%20if(disabledLoadBtns)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20theTimeout%20%3D%20setTimeout(recursiveExpandLoadMore%2C%201000)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20const%20loadBtn%20%3D%20document.querySelector('.ajax-pagination-btn%3Anot(%5Bdisabled%5D)')%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20there%20are%20no%20more%20load%2
@getdave
getdave / imagesizes-wordpress-block-editor.js
Created October 20, 2022 12:19
Get registered image sizes in the WordPress block editor
import {store as blockEditorStore } from '@wordpress/block-editor';
import { useSelect } from "@wordpress/data";
// Inside component
const {sizes} = useSelect((select) => {
const { getSettings } = select(blockEditorStore);
const settings = getSettings();
const sizes = settings?.imageEditing?.imageSizes;
@getdave
getdave / strip-unwanted-gravity-forms-jquey-and-inline-scripts.php
Created November 12, 2015 12:14
Remove Gravity Forms jQuery and all inline <script> tags
/**
* Force GFORM Scripts inline next to Form Output
*
* force the script tags inline next to the form. This allows
* us to regex them out each time the form is rendered.
*
* see strip_inline_gform_scripts() function below
* which implements the required regex
*/
function force_gform_inline_scripts() {
@getdave
getdave / book-review-pattern.php
Created October 24, 2022 10:23
Post Type Pattern in Gutenberg block editor WordPress
<?php
/**
* Title: Book Review
* Slug: twentytwentythree/book-review
* Categories: query
* Keywords: post meta
* Block Types: core/post-content
* Post Types: book
*/
?>
@getdave
getdave / .htaccess
Created November 5, 2018 16:22
Redirect website including all sub dirs to equivalent on new domain with query string identifier
RewriteEngine on
RewriteCond %{HTTP_HOST} ^source-domain.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.source-domain.com [NC]
RewriteRule ^(.*)$ https://target-domain.com/$1?source=sourcedomain [L,R=302,NC]
@getdave
getdave / tamper-monkey-expand-github-pr-comments.js
Last active March 17, 2022 11:40
A Tampermonkey script to automatically expand all those pesky folded Github PR comments.
// ==UserScript==
// @name Recursively expand Github PR comments
// @namespace http://aheadcreative.co.uk/
// @version 1.0
// @description Automatically expands all those pesky folded Github PR comments.
// @author Dave Smith (@getdave). Please contact for questions and feedback
// @match https://github.com/*/*/pull/*
// @copyright 2020, Ahead Creative
// @updateURL https://gist.githubusercontent.com/getdave/9b9087055decf6f6cb7bfada08fcd3d1/raw/
// ==/UserScript==
@getdave
getdave / video-picture-in-picture-bookmarklet.js
Last active March 17, 2022 11:38
Picture In Picture API bookmarketlet - finds the first video element on the page and toggles between Picture In Picture mode - https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture
javascript:(function()%7B(async%20function()%20%7Bconst%20video%20%3D%20document.querySelector('video')%3Bif(!video)%20%7Balert(%22No%20video%20element%20found%20on%20page%22)%3B%7Dif%20(video%20!%3D%3D%20document.pictureInPictureElement)%20%7Bawait%20video.requestPictureInPicture()%3B%7D%20else%20%7Bawait%20document.exitPictureInPicture()%3B%7D%7D())%7D)()
@getdave
getdave / gitrebasebranch.sh
Created March 22, 2021 11:06 — forked from aduth/gitrebasebranch.sh
Git - Interactive rebase against own merge base
#!/bin/bash
git rebase -i $(git merge-base HEAD master)
@getdave
getdave / gutenberg-possible-group-block-dimensions.txt
Created January 6, 2020 12:21
Gutenberg annotations for all possible combinations of dimension sizes for the Group Block
<!-- wp:group {"paddingSize":"default","marginSize":"default"} -->
<div class="wp-block-group"><div class="wp-block-group__inner-container"><!-- wp:heading -->
<h2>paddingDefault/marginDefault</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<!-- /wp:paragraph --></div></div>
<!-- /wp:group -->