Skip to content

Instantly share code, notes, and snippets.

View ghengeveld's full-sized avatar

Gert Hengeveld ghengeveld

View GitHub Profile
@ghengeveld
ghengeveld / project.php
Created March 20, 2012 09:58
CotORM example model
<?php
defined('COT_CODE') or die('Wrong URL.');
class Member extends CotORM
{
protected $table_name = 'users';
protected $columns = array(
'id' => array(
'type' => 'int',
@ghengeveld
ghengeveld / project.php
Created March 20, 2012 10:17
CotORM/REST example controller
<?php
defined('COT_CODE') or die('Wrong URL.');
class ProjectController extends RESTController
{
public function create()
{
$this->respondsTo('POST');
$data = Project::import();
<?php
if (!defined('SED_CODE')){die('Wrong URL.'); }
$currenttpl = file_get_contents($mskin);
if (mb_strpos($currenttpl, "{PAGE_TEXT_ID_") !== false)
{
$matches = array();
preg_match_all("#{(?P<tag>PAGE_TEXT_ID_(?P<id>[0-9]+))}#", $currenttpl, $matches, PREG_SET_ORDER);
foreach ($matches as $match){
$p_tag = $match['tag'];
@ghengeveld
ghengeveld / angular-ui-router-dynamic-template.js
Created October 2, 2013 12:04
Dynamic templateUrl for Angular UI Router
$stateProvider.state('projects.edit.section', {
url: '/:sectionCode',
templateUrl: function(stateParams) {
return 'partials/project/' + stateParams.sectionCode + '.html';
}
});
@ghengeveld
ghengeveld / parseNumeric
Created October 8, 2013 12:24
Helper function, parses numeric input also ending with %
/**
* parseNumeric('123') === 123
* parseNumeric('10 abc') === undefined
* parseNumeric('10.10%') === 10.1
* parseNumeric(' 10.1000 ') === 10.1
* parseNumeric('10. 01%' ) === undefined
* parseNumeric('10.0 %') === 10
*/
function parseNumeric(number) {
var num = ('' + number).trim();
@ghengeveld
ghengeveld / select-all.js
Last active February 15, 2017 10:34
AngularJS Select All directive
/**
* Directive to instantly enable/disable multiple checkboxes based on a master checkbox.
* Changing slave checkboxes will update the master checkbox accordingly, including the indeterminate state.
*
* Usage example:
*
* <label><input type="checkbox" select-all="theProperties"> Select all</label>
* <div ng-repeat="property in properties">
* <label><input type="checkbox" rel="theProperties" ng-model="property.checked"> {{ property.label }}</label>
* </div>
@ghengeveld
ghengeveld / qPromiseTransformDecorator.js
Last active August 29, 2015 13:56
Decorator to add 'transform' and 'transformError' methods to $q promise chain.
/**
* Decorator to add 'transform' and 'transformError' methods to promises.
* These can manipulate the result without catching errors so the 'then'
* functions will still work as expected.
*/
$provide.decorator('$q', function($delegate) {
var defer = $delegate.defer;
$delegate.defer = function() {
var deferred = defer();
deferred.promise.transform = function(fn) {
@ghengeveld
ghengeveld / gist:72de564987d438db423b
Last active August 29, 2015 14:17
SPF record voor rt-opderails.nl

De TXT record voor rt-opderails.nl moet worden:

"v=spf1 a mx ip4:195.211.72.0/22 ip4:141.138.168.0/21 ip6:2a03:3c00:a001::/48 include:spf.factuursturen.nl ~all"

Uiteraard kan de bestaande TXT record worden verwijderd.

@ghengeveld
ghengeveld / getClassName.js
Created September 22, 2015 13:07
Get object constructor name (class name) in IE
let getClassName = obj => {
if (obj.constructor.name) {
return obj.constructor.name;
}
const regex = new RegExp(/^\s*function\s*(\S*)\s*\(/);
getClassName = obj => obj.constructor.toString().match(regex)[1];
return getClassName(obj);
};
function embed(data, sizes) {
const formattedData = {};
for (let uuid in sizes) {
if (sizes.hasOwnProperty(uuid) && data[uuid]) {
formattedData[uuid] = {
name: uuid,
w: sizes[uuid].width,
h: sizes[uuid].height,
vars: {
id: data[uuid],