Skip to content

Instantly share code, notes, and snippets.

// See: http://blogs.adobe.com/experiencedelivers/experience-management/htl-intro-part-3/
<!--/* Accessing a value */-->
${properties['jcr:title']}
<!--/* Printing an array */-->
${aemComponent.names}
<!--/* Printing the array, separating items by ; */-->
${aemComponent.names @ join=';'}
@kevinweber
kevinweber / datasetApproach.js
Last active December 9, 2016 14:02
Helper: Get all data attributes of one element
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset
var dataAttributes = document.querySelector('elementIdentifier').dataset;
@kevinweber
kevinweber / ifTargetPageExists.js
Last active December 9, 2016 13:54
Helper: Check target URL using XMLHttpRequest before we execute a callback accordingly. No Ajax/Promise needed.
/**
* Ensure that target page exists before we actually do something.
*
* @param {string} targetUrl - Absolute target URL to be tested
* @param {function} [successCallback] - Function to be executed on success
* @param {function} [failCallback] - Function to be executed on fail
*/
function checkTargetFirst(targetUrl, successCallback, failCallback) {
var reader = new XMLHttpRequest();
@kevinweber
kevinweber / aemsync.sh
Last active August 12, 2016 20:25
AEMSync pushes changes into your local AEM instance. Run it so you don't have to manually run the maven build all the time. Note that aemsync works for many files (XML, HTML, CSS, ...) but not for all of them, especially Java files. UPDATE: Use the AEM Front solution instead: https://github.com/kevinweber/aem-front
#! /bin/bash
# https://www.npmjs.com/package/aemsync
# Usage: Run `$ sh aemsync.sh` in your terminal from the folder where this script is located.
if ! type "aemsync" > /dev/null;
then
echo "aemsync is not installed. Installing..."
sudo npm install aemsync -g
fi
@kevinweber
kevinweber / browsersync.sh
Last active August 12, 2016 20:22
Browsersync that works with AEM. UPDATE: Use the AEM Front solution instead: https://github.com/kevinweber/aem-front
#! /bin/bash
# https://www.npmjs.com/package/browser-sync
# Documentation: https://browsersync.io/docs/command-line
# Usage: Run `$ sh browsersync.sh` in your terminal from the folder where this script is located.
# Use this script together with https://github.com/kevinweber/aem-front-extension
if ! type "browser-sync" > /dev/null;
then
echo "browser-sync is not installed. Installing..."
sudo npm install browser-sync -g
@kevinweber
kevinweber / Change event for textarea (IE9+)
Last active July 28, 2016 16:38
Change event for textarea (IE9+)
$('#textareaID').on('input change keyup', function () {
if (this.value.length) {
// textarea has content
} else {
// textarea is empty
}
});
@kevinweber
kevinweber / Helper: Sort object with objects
Last active July 19, 2016 06:06
Sort objects of an object based on one of their common properties
/**
* Sort objects of an object based on one of their common properties
*
* Call it like this:
* mySortedObject = sortObjectWithObjects(myObject, "name");
*
* To store ...
*
var myObject = [{
/*global jQuery */
/**
* $.responsiveVideo
* by Kevin Weber
*
* Improve responsiveness of videos.
* Libraries required: jQuery.
*
* Initiate plugin like this:
/**
* Move element's class to parent element
* Usage example:
* $element.moveClassToParent('select-container');
*/
(function ($) {
"use strict";
// Create the defaults once
/**
* Loop through an object and call a passed function
*/
function loopObject(object, func) {
var property;
for (property in object) {
if (object.hasOwnProperty(property)) {
func(property, object);
}