Have you ever been working with a component in AEM and wished it had one little enhancement to make your life easier? It’s true that in many cases AEM’s out-of-the-box (OOTB) functionality is sufficient to get most tasks completed. But sometimes all developers feel like the issue they are facing is likely a common one and may have already been solved. If either of these is the case for you, then you should check out the AEM Commons and AEM Tools packages! They are packed with AEM functionality that can help you from day one!
A Wild Solution Appears!
AEM Commons and Tools are a set of reusable components and features created to ease the lifecycle of AEM 6.0+ development. These features are stored in open-sourced packages, meaning implementation can be tweaked to a fit a specific client’s needs. Neither require the use of 3rd party dependencies, or make changes to standard AEM functionality by default. Finally, both packages are incredibly easy to install: simply download the .zip files from github and then install them using the Package Manager.
While there are quite a few different components and tools in each package, I’m going to highlight of a few that we found interesting and useful.
Dynamic RTE Configuration
How many times has each of a client’s business units needed different implementations of an RTE (Rich Text Editor) Component? One site may have specific styling requirements, while another needs to make use of some special characters. Typically, this situation leads developers to make two very similar components that may only differ in configuration… we have just entered any developer’s nightmare. Duplicate code scattered around a codebase, makes for a true maintenance disaster. Enter Dynamic RTE Configuration, an AEM Commons plugin that allows for multiple configurations of a single RTE component across different sites. By creating a node structure under /etc/rteconfig for multiple sites, for example: /etc/rteconfig/siteA and /etc/rteconfig/siteB, specific rules can be specified for different content paths.
Version Comparison Tool
AEM’s OOTB tool to compare resource versions is definitely a feature that we wish had just a little bit more functionality. In the current OOTB functionality, only two versions can be compared at a time, which can sometimes make tracking down a specific change in content difficult. Compound this issue with the fact that some clients have 100’s of authors, who can all be making changes to the same resources. The Version Comparison tool in AEM Commons allows multiple versions of a resource to all be compared at the same time. It even allows for disabling properties that you are uninterested in (system properties that might change with every version). So hunting down the specific information you are looking for becomes much easier.
CSV Asset Importer
Sometimes it’s hard to remember your site (or life) before AEM, but believe me, it existed! I’m sure that site had a lot of valuable resources, that became the focus (dread) of lots of meetings about how/if to move them to your shiny new AEM instance. I’m sure the business was already fearful of the nasty word migration… things get lost, data becomes corrupt, and manual processes take too long.
Fortunately I have good news, gone are the days of painful manual migrations of previous resources! A nice feature in the AEM Tools package is the CSV Asset Importer. It is a tool that reads in a CSV (Comma Separated Value) file containing assets and some metadata about them, and automatically imports them to the desired location in your AEM instance. There are only a few required fields in the CSV, where the resource file currently exists, and where you would like the file to be imported in AEM. Additionally, properties that should be added to the new resources can be listed with their type, and value specified (multi-values are supported).
Test Page Generator
These are just a few of the many helpful tools inside the Adobe Commons and Tools packages. Go check them out and I bet you will find something you can use. Being an open source project, you also never know what other new features they will have (or you will implement) in the future!