Skip to content

Instantly share code, notes, and snippets.

View betweenbrain's full-sized avatar
🎯
Focusing

Matt Thomas betweenbrain

🎯
Focusing
View GitHub Profile
@AmyStephen
AmyStephen / Messages.xml
Created May 19, 2012 13:32
Molajo Data Sources
<?xml version="1.0" encoding="utf-8"?>
<model
name="Messages"
catalog_type_id="0"
table="#__dummy"
primary_key=""
primary_prefix=""
get_customfields="0"
get_item_children="0"
use_special_joins="0"
@phproberto
phproberto / overridable-media.md
Last active December 10, 2015 21:58
Joomla! overridable media cheatsheet
<?php
/**
* Mimetype for your file - requires PHP 5.3, not enabled on default by Windows
*/
$php_mime = finfo_open(FILEINFO_MIME);
$this->mime_type = strtolower(finfo_file($php_mime, $this->your_file_path_and_name));
finfo_close($php_mime);
// Thanks for great discussion from Ben Ramsey, Anthony Ferrara, Dave Reid, Jarvis Badgley
@drmmr763
drmmr763 / process
Created June 28, 2013 20:44
Using plugins and mods for CCK in Joomla 3
I'm trying to use the Joomla core as much as possible. Now to say that I'm using ONLY core would be untrue, since technically I'm creating and installing some plugins to accomplish this, but they certainly aren't 'heavy duty' components like K2, seblod, or some of the other Joomla CCKs out there.
Site I just built using this concept
https://github.com/drmmr763/sofi
## write some plugins
https://github.com/drmmr763/sofi/tree/master/plugins/content/sofimap
This sofimap plugin loads an XML file into the backend of ```com content``` that lets me store extra field data in my own table. So the process here is to use all the plugin events for ```com content``` to load the form, load form data, save form data, delete form data, and even display saved data in the front end.
@AmyStephen
AmyStephen / ProcessInput.php
Created July 11, 2013 00:23
System Plugin - onBeforeCompileHead - you can walk through any assets for the head. Where the head is rendered https://github.com/joomla/joomla-cms/blob/9c576378b4809a245f6fcf18bdbbd00baa4f7ac2/libraries/joomla/document/html/renderer/head.php
<?php
public function onBeforeCompileHead()
{
$head = JFactory::getDocument()->getHeadData();
$styleSheets = $head['styleSheets'];
$newStyleSheets = array();
foreach ($styleSheets as $key => $value)
{
@jlleblanc
jlleblanc / gist:2926803
Created June 13, 2012 22:09
Using JImage to create square profile pictures in two sizes, regardless of the original's orientation
<?php
$image = new JImage('/path/to/original.jpg');
$height = $image->getHeight();
$width = $image->getWidth();
if ($height > $width) {
$crop_square = $width;
$crop_top = ($height - $width) / 2;
@jhafner
jhafner / git-open.sh
Created May 16, 2013 15:55
Open the current repo on Github. Script by Brian Edgerton.
#!/bin/bash
git_host='git@github.com:'
git_url='https://github.com/'
remote=`git config --get remote.origin.url`
host=${remote:0:15}
if [ $host = $git_host ]
then
url=${remote/$git_host/$git_url}
@mudge
mudge / .htaccess
Created November 7, 2008 14:48
Remove file extensions in URLs with mod_rewrite but preserve 404 errors.
# The following will allow you to use URLs such as the following:
#
# example.com/anything
# example.com/anything/
#
# Which will actually serve files such as the following:
#
# example.com/anything.html
# example.com/anything.php
#
@scotthorn
scotthorn / viewport-shots.js
Last active June 29, 2020 08:49
Nightwatch.js script for taking screenshots of a given URL at various browser widths.
/*
* Takes provided URL passed as argument and make full height screenshots of this page
* with several viewport widths using Nightwatch.js with Selenium.
*
* These viewport widths are taken from common android and iOS devices. Modify as needed.
*
* Takes an optional second argument for the path where screenshots are saved.
*
* Usage:
* $ nightwatch -t viewport-shots.js http://example.com
@599316527
599316527 / directive-delay-execute.js
Last active August 29, 2020 19:42
Vue.js directive: delay execute
var Vue = require('vue');
Vue.directive('delay-execute', {
acceptStatement: true,
bind: function () {
this._delayRunTimeout = parseInt(this.arg, 10) || 1000;
},
update: function (handle) {
this.reset();
this._delayRunTimer = setTimeout(handle, this._delayRunTimeout);