Thursday 28 April 2016

Top Features in Adobe Experience Manager 6.2: Sites

  1. Find Anything Anywhere
    Adobe has introduced an updated Touch UI. This is actually a great enhancement, but once again Adobe is changing the user interface. It’s hard on authors to constantly need to learn a new way of doing things and navigating around, and it means additional training for people when they upgrade from one version to another. But let’s not get bogged down with negativity. The new update to AEM is called OmniSearch and this is a really decent way of getting around. No longer do I have to do multiple clicks to find my tags. I just type “tags” and then the page loads. It also comes with search suggestions that show you all the possible destinations within AEM and the ability to do filtered searches. Also, they removed the need to go to a “selection mode” to select multiple items (pages, assets, etc.) when you need to activate them or update their properties. That’s great.
  2. Templates for Everyone
    This is the new Template Editor. Last year when they teased this I mentioned how reluctant I was about it. Put the template in the hands of the authors and not the developers, are you insane? I still feel that way, but not as strongly now. An author can still royally screw things up, if you give them the permissions to do so. And that is the key. You can tie down this functionality by only giving it to people who actually know what they are doing. I was able to chat a bit with Gabriel Walt during Summit and that was his big piece of advice. So, we can still be happy, authors can still feel empowered, and developers won’t have to do as much. I had a chance to play around with it a bit in one of the Summit lab sessions and it certainly shows some promise.

Learn Sightly with Read–Eval–Print Loop in AEM 6.x

A great live code editing environment for Sightly templates with optional server-side JavaScript logic, executed on an Adobe Experience Manager instance. This little tool is great for learning Sightly and for experimenting with it, because the resulting output is displayed as you type.
To get started you need minimum Adobe Experience Manager 6+, there are you two ways you can setup your environment and start experimenting:-
1. Install as a Package
  • Download the built package:
  • On your running AEM instance, go to Package Manager, click on Upload Package, browse to the previously downloaded package, and hit OK.
  • Install the package Don’t mind the missing dependencies, simply click the Install button and confirm.
2. Maven Method
  • Checked-out repository with Git clone.
  • Build and install it with following command line instruction:
    mvn clean install content-package:install
Once any of the above steps are performed for installation, go to the following URL on AEM instance localhost:4502/content/repl.html
Sightly Read Eval Print Loop (REPL)
Sightly Read Eval Print Loop (REPL) will give you three options:-
  1. Source :- Shows the generated HTML Structure of webpage
  2. View :- Output of webpage can be seen here, this is the same which you will see in your browser
  3. Java :- Complied sightly Java class
It’s a great environment for people who are willing to get hands on Sightly and want to gain some experience in it.

Ask the AEM Community Experts

Target audienceAEM authors, admins, and developers
Applicable CQ versionsAEM 5.6 and later

The following table provides a complete listing of all of the sessions of Ask the AEM Community Experts.
Name Description Link
ATACE Session Best Practices for Experience Manager and AEM Assets (Sep 2016) Abhishek Dwevedi,Tech Training Instructor and Developer, Adobe Worldwide Field Enablement provides information about using AEM Assets. By joining this session, you will gain a deeper understanding of best practices for using assets in Experience Manager.  Click Here
ATACE Session Working with Experience Manager and eCommerce (Aug 2016) Lokesh BS and Scott Macdonald for a discussion about how to use  AEM eCommerce. This session will cover the eCommerce Framework, including how to use the eCommerce APIs. By joining this session, you will gain a deeper understanding of how to use the AEM eCommerce framework and the given APIs.   Click Here
Using AEM Forms
Rajesh R. Kandasamy, a community contributor, (and other communuity members) provide an in-depth look at how to work with AEM Forms to build data capture applications Click Here
(April 2016)
A Deep Dive into Sightly 
Praveen Dubey, a top community contributor, for an in-depth look at how to use Sightly to build engaging Experience Manager Components. Click Here
(Mar 2016)
Developing AEM Sling Components using Brackets
Lokesh (Top AEM Community member of the year for 2015) for a walk though on developing Adobe Experience Manager Apache Sling components using Brackets. By joining this session, you will learn developer techniques using Brackets to program experience manager components using Sling APIs. Click Here
(Feb 2016)
 A Deep Dive into AEM Apps
Join the AEM Applications Eng team for a discussion about AEM Apps Click Here
(Nov 2015)
Integrate AEM and other Digital Marketing products
discussion about how to integrate Adobe Experience Manager and other Digital Marketing products.  Included in this discussion is an emphasis on AEM and Analytics Click Here
(Oct 2015)
AEM & Dispatcher
AEM expert Joerg Hoh @joerghoh provides insight into using Dispatcher with Adobe Experience Manager. By viewing this session you will gain a better knowledge about Dispatcher as well as best practices for configuring, using and securing communication between Dispatcher and AEM. Click Here
(Sept 2015)
Personalization & segmentation with AEM & Adobe Campaign
Shows you how to work with AEM and Campaign to create personalization and segmentation experiences. The password to access the recording is AugATCE Click Here
(Aug 2015)
Advanced AEM component development
Provides insights on creating components that use CQ.Ext APIs, build custom xtypes, invoke sling servlets, and build  advanced dialogs for components. Click Here
(July 2015)
AEM & Sling
Learn about Sling and its use within AEM.  Click Here
(May 2015)
Creating AEM Touch UI components
Learn how to create touch UI components, create dialogs and use Touch UI based APIs meant for component development.
Click Here
(April 2015)
(To watch this session, click link and enter password AtAEMCE.)
Understanding AEM Workflows
Provodes an in-depth on AEM Workflows. Included in this session is the different type of workflows you can create, building workflow models, how to create a custom workflow step, how to use Workflow launcher, and available workflow operations. By viewing this session, you will gain a deeper understanding of how to work with AEM workflows to address your business requirements. Click Here
(Mar 2015)
Building login-based sites in AEM
Walks through a presentation and demo on developing secure AEM web sites that require user authentication. This session will provide you with a deeper understanding of how to build AEM secure web site by using Sling technology. Click Here
(Feb 2015)
Introduction to Sightly
Provides an Introduction to Sightly  Click Here
(Jan 2015)
Getting Started with AEM Apps
Talks about how to get up and running with AEM apps and developing mobile applications for use with Adobe Experience Manager.  Click Here
(Nov 2014)
Testing AEM Applications with ease
Demonstrates the new AEM Testing tool for testing AEM applications. You will learn how to use the new tool, you and new ways to improve your AEM applications and get rid of potential bugs. Click Here
(Oct 2014)
Developing custom services to customize AEM
This session covers developing custom services to customize AEM. It provides details on how to develop Java-based services to customize AEM to meet your business requirements. Click Here
(July 2014)


Saturday 23 April 2016

Versioning ClientLibs in AEM

The Versioned ClientLibs ACS AEM Commons feature uses a Sling rewriter to add an MD5 hash to the paths of your clientlibs, forcing them to recache after every modification. Typically Adobe Experience Manager will use the lastModified property to determine when to recache, however versioned-clientlibs is a more reliable approach.
To implement the versioned-clientlibs feature, simply copy the node from /libs/cq/config/rewriter/default to some path inside your application. In this example, we’ll choose /apps/acslibs/config/rewriter. For the most part this path is arbitrary, however the config node must be inside a four-level-deep path that ends in config/rewriter to work.Read More

Working with AEM i18n translator

The Adobe AEM Translator is a powerful tool for managing and updating translations.  Using this tool you can create, update and remove i18n values across multiple languages in multiple translation dictionaries or groups of i18n keys.


To use the AEM Translator access the URL http://{SERVER}:{PORT}/libs/cq/i18n/translator.html, replacing the server and port with the correct values for your environment.  This will pull up the AEM Translator as shown below.
CQ5 Translator
The AEM Translator
The AEM translator allows you to manage multiple dictionaries, or sets of localized keys.  This allows you to separate out site or application level keys from system keys and keep the keys organized by function or use.  To change your dictionary, select the dictionary from the Dictionaries list on the top of the AEM Translator.  It is recommended to avoid updating the dictionaries found under /libs as doing so will complicate your upgrade process.


To update the value of a key, double click on the key, enter the new value and select save.  The AEM Translator will not update keys for language pages which do not exist in the current dictionary.  Unfortunately it will not display an error either.  If there are no translation values for the language you wish to update, ensure there is a translation page by checking for a translation page under the dictionary path in CRXDE Lite.  If no translation page exists, please consult the Creating a Translation Page section for more information on creating one.


The CQ5 Translator supports importing and exporting keys using the XLIFF format, a XML format specifically designed for containing localization data.

Exporting Keys

To export keys, select Export then the language to export from the top menu.  If you receive a 404 error on the resulting page, this means that there is not a language page for that language in the dictionary.  See Creating a Language Page, for information on how to create a language page.
Unfortunately, the Exported language data will only contain keys which already have a value.  Prior to exporting, you must enter a placeholder value in every un-translated key to get it to appear in the export file.

Importing Keys

Importing keys is simple, select the Import drop down and select the file to import.  Unfortunately, the import process will also not create language pages.  To import a XLIFF file for a language which previously did not have a language page, you must first create the language page.


Dictionaries are sets of translations grouped by application or functionality.  Adobe CQ includes a number of out of the box dictionaries for internal functionality and the Geometrixx application.  It is generally recommended to not update these dictionaries, as this may cause issues is subsequent upgrades.
You can create a new dictionary under your application under any directory.  I would recommend under /etc/i18n as localization keys are somewhat different than code and content and therefore best belong under neither tree.  To create a new dictionary, simply create a sling:Ordered folder to contain the language pages and create a language page.  At this point, the dictionary should appear in the list when you refresh the CQ5 Translator.


Do the following to add a language to the available languages in the CQ5 Translator. 
  • Using CRXDE Lite, create a node at /ect/languages if one does not already exist. 
  • Add a repeating String property called languages to this node, with the two or five letter language names you wish to see inside the CQ5 Translator.  The value of this field determines all of the available translations, so make sure you include the predefined languages as well as the ones you mean to add. 
  • Create a language page for each dictionary you intend to translate into the new language.
Once you have completed these steps, you should be able to add translations in the new language.


The CQ5 Translator will not automatically create language pages when you add a language to a dictionary or create a new dictionary.  To create a new language page, do the following:
  • Using CRXDE, create a new sling:Folder node in the dictionary root with the two or five letter, ISO 639-1 compliant, language name, ex: es or zh_cn
  • Add the mixin type mix:language
  • Set the jcr:language property to the two or five letter, ISO 639-1 compliant, language name, ex: es or zh_cn
Once you have completed these steps you should be able to add translations for the relevant language into the dictionary.

Issue: Page displays i18n keys instead of values

Issue Description: 

AEM i18n keys values are displayed instead of values.


This issue is observed when "Apache Sling Internalization Support" bundle is in resolved state. By restarting this bundle, i18n issue will be solved.

Friday 22 April 2016

Adobe Experience Manager 6.2 Released - Apr 21, 2016

The release cycle for this version of Adobe Experience Manager started May 21, 2015, went through 21 iterations of quality assurance and bug fixing, and ended April 6th, 2016. The total number of customer related issues including enhancements and new features fixed in this release is 972.
Adobe Experience Manager 6.2 is generally available since April 21, 2016. Major changes include the new design of navigation system.

Creating a custom Excel Service for Adobe Experience Manager

You can create a custom AEM service that accepts an Excel spreadsheet, extracts the data from the spreadsheet, and persists the data in the AEM JCR. For example, consider the following spreadsheet that contains customer data. Once you upload this file to AEM, the custom AEM Excel service reads the customer data and persists the data in the AEM JCR.

Creating your first AEM Service using an Adobe Maven Archetype project

In some business use cases, you create an OSGi bundle when creating an Adobe Experience Manager (AEM) application. Although there are different ways to create an OSGi bundle, a recommended way is to use Maven and the Adobe Maven Archetype. This development article walks you through creating a basic OSGi bundle that contains a simple service namedKeyService. All this service does is accept an input value and sets a key value. It also exposes a method that returns the key value and the value can be displayed within an AEM web page.

Monday 18 April 2016

Enable JS and CSS minification in AEM

The CQ "CQ Html Library Manager" component control the handling of client libraries (JavaScript, CSS) minification to remove CRLF and whitespace characters in order to reduce the size of the file. In Earlier version of CQ with minification enabled OR disabled, both the minified OR unminified library version has the same URL.  

This blog post will take you through the steps on how to enable minification.
You need to go to http://localhost:4502/system/console/configMgr. This is a configuration page listing all the services that has configurations. Just look for ‘HTML Library Manager’ and click it. You will see the configurations like following:

Tuesday 12 April 2016

Touch UI dynamic selection of multiple drop downs in AEM 6.1

This articles show the use case of have multiple chained drop down in Touch UI. Values in the next drop down depends on what has been selected on previous one. 
Brief on how it works:-
There are two drop downs with name Language and Country. When you select a Language from drop down, Country down down gets populated with the name of the countries using that language. For example if you select “German” as a language then all countries using German as language will get populated in second drop down.

Creating an AEM Headline Component

Discusses how to create an Adobe Experience Manager component that uses Sightly and a Sling Servlet to display headline news. 
A special thank you to Praveen Dubey, a top AEM community member, for contributing code towards this community article.   
This article covers many AEM concepts that are important to understand as an AEM developer. This article covers the following concepts. 
  • How to create a Sightly component that displays data from a third party service
  • How to use AJAX that invokes a servlet with a Sightly component
  • How you include a clientlibs folder using Sightly
  • How to pass dialog values to a Sling Servlet
This article uses an Adobe Maven Archetype project to build an OSGi bundle. If you are not familiar with an Adobe Maven Archetype project, it is recommended that you read the following article: Creating your first AEM Service using an Adobe Maven Archetype project.