Groovy Traits and Sling Models in AEM

    October 12, 2015 6:30 PM

    A little while back Paul Michelotti wrote a great blog showcasing the benefits of using Groovy Traits along with the CQ Component Plugin.  Traits can be used for multiple inheritances in Groovy, but unlike interfaces, they can contain state and default logic.  However, I wanted to take it a step further and use Sling Models for injecting that state.  In this blog I will go through what additional steps need to be taken in order to get Sling Models to work.

    posted by Bryan Williams

    Introducing Touch UI Support in the CQ Component Plugin

    September 25, 2015 4:40 PM

    AEM6 extended the Touch UI authoring interface to page authoring, giving authors a choice between this and the classic interface.  One major consequence of this is that, for the time being, both interfaces must be considered during component development so authors using either one are given a good user experience.  Among other things, authoring dialogs, which were produced by ExtJS widget configurations in the Classic UI, are now produced using standard Sling rendering mechanisms relying on sling:resourceTypes instead of xtypes.  In order to produce authoring dialogs in both Classic UI and Touch UI modes, two dialog configuration files, dialog.xml and cq:dialog.xml for Classic and Touch respectively, must be defined.

    posted by Paul Michelotti

    The Top 3 Reasons to Attend CIRCUIT, Our AEM Developer Conference

    July 7, 2015 9:10 PM

    CIRCUIT, CITYTECH's (Now a part of ICF Interactive) second annual Adobe-sponsored developer event, is just around the corner.  If you are still on the fence about attending this delightfully tech-heavy conference in one of the best cities in the world (Chicago)...I'd like to give you three reasons why you should attend:

    posted by Jennifer Daugherty

    AEM 6.x mongo-backed clustered author setup

    May 18, 2015 7:44 PM

    There’s been a bit of internal discussion regarding the setup and load test of AEM 6.x (with specific interest on 6.1) with Mongo as persistence storage. The following outlines the instantiation and configuration of a (2) node AEM Author cluster backed by a (3) member mongo replica set consisting of PRIMARY, SECONDARY, and ARBITER cluster members.

    posted by Josh Durbin

    3 Cloud Paradigm Shifts

    April 2, 2015 2:15 PM

    3 Cloud Paradigm Shifts There's lots of advice about Cloud technologies, yet some recent articles around AWS reminded me how our expectations of traditional hosting have changed.  A business used to simply transition from one hosting provider to another via a simple "fork lift" for cost cutting or resiliency.  After working with AWS, we’ve noticed an almost unanimous consensus that traditional datacenter moves aren’t ideal because of fundamental paradigm shifts in IT services[1].  One of my takeaways from visiting AWS headquarters was a paradigm shift for any Cloud enablement strategy, whether using Amazon technology or not.  Here are 3 paradigm shifts that have changed the way technologists think about IT and Cloud:

    posted by Justin Pittman

    Groovy Component Composition With Traits

    March 24, 2015 4:00 PM

    AEM components often need to exhibit similar elements of behavior, as many concerns met by components are common across component types. Tagging or “Categorization” mechanisms are a particularly good example of this. There may be many component types in your AEM application which expose a “tag” or “category” input via a Tag Input Field. These components will all use the same mechanisms to resolve the author input into a true Tag instance. In order to avoid duplicating code across these components, you could create an abstract class containing the tag / category lookup logic, however, this leaves you with the question of what to do when you have a second common behavior. While a rich hierarchy of abstract classes could be created to represent these various common fields, you are only afforded a linear inheritance progression which does not allow you to mix and match behaviors in the context of a single component.

    posted by Paul Michelotti

    Adobe Summit - I Remember When Geometrixx was just a Shapes Company

    March 20, 2015 4:00 PM

    A journey of a thousand miles begins with one step. - Laozi When I first attended training on Day/Adobe CQ5 back in 2009, it gave me a feeling of relief.  Finally, here was a tool that gave content authors and business users direct control over the layout of a webpage.  No more filling out endless form fields with no idea how the final product would come together.  Would there be a layout issue?  Would the markup you added to the WYSYWG editor break the page? You didn’t know.  Many times, not even until it was live in Production.

    posted by Robb Winkle

    New Features for the venerable AEM Groovy Console

    February 5, 2015 9:01 PM

    Over nearly four years of existence, the AEM Groovy Console has evolved with new features, enhancements, and bug fixes.  I owe a great deal of thanks to my colleagues and the AEM developer community for their ideas and, more importantly, pull requests.  Some of the highlights are listed below.

    posted by Mark Daugherty

    Resolution Independence with SVG in Adobe AEM (formerly CQ)

    November 20, 2014 6:56 PM

    SVG, or Scalable Vector Graphics, is an XML-based vector image format that has lately had quite a resurgence in popularity amongst developers. This is largely due to the rise of responsive web design, as the benefits to using SVG neatly solve some of the design challenges of developing for a wide range of devices, as well as for high-resolution (retina) displays.

    posted by David Ensinger

    Five Good Reasons to Use Grunt for Front End CQ Development

    November 4, 2014 8:50 PM

    Grunt.js is a JavaScript task runner that automates repetitive tasks like minification, compilation, unit testing, linting, and others. By using Grunt, you’ll streamline your workflow, write more robust code, and produce better quality assets. The time you’ll save will then be available for use on more challenging development tasks than those that lend themselves to automation.

    posted by David Ensinger

Subscribe via RSS

Recent Posts

Blog Archive