Friday, 18 December 2015

Winners of the 2015 AEM Community Code Contest

During the month of November 2015, the AEM community team held a code contest where AEM Developers submitted functioning AEM code. All of these submissions will be discussed in upcoming 2016 AEM Community articles.

The AEM community team presents you with the three winning submissions:

AEM Quiz Component

The AEM Quiz component lets AEM authors configure a quiz by setting questions and answers. Question and Answer and other details of the quiz is authored using the Quiz Configuration component.  The Quiz component refers to the par/quiz_config node of a page. The result is a component that you can use in an AEM site that lets visitors fill out a quiz.



Congratulations to Praveen Dubey for submitting this first place submission. One of the reasons why this was selected as first place is it has addressed many questions in the AEM Forums on how to write a quiz component.

Vanity URL Manager

The vanity URL manager is a way for AEM users to manage vanity URLs. This tool is a new view in the Touch UI. Using this tool, you can filter by site and peform other operations such as deleting them. 




Congratulations to Lokesh BS for submitting this code.


Custom Carousel Component

The  custom carousel component uses panels and grids where author can see what image they are selecting and which image or items need to update. This submission is a great example of how you can customize out of the box AEM functionality to meet your business requirements. 


Congratulations to Ganesh Malaiyappan for submitting this entry. 


Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.



 

Monday, 14 December 2015

Example JCR SQL Queries


Search for JCR retPlugin nodes in JCR

The following code example shows JCR SQL2 syntax to search for all rtePlugin nodes under /apps.

import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.Node;
import javax.jcr.query.Query;

import org.apache.jackrabbit.commons.JcrUtils;

public class TestJCR {


    public static void main(String [] args)
    {


        try {

            String aemUrl = "http://localhost:4502/crx/server" ;
            //Create a connection to the CQ repository running on local host
            Repository repository = JcrUtils.getRepository(aemUrl);



            //Create a Session
            javax.jcr.Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()));

            //Obtain the query manager for the session ...
            javax.jcr.query.QueryManager queryManager = session.getWorkspace().getQueryManager();

            //Specify the AEM JCR path where examples users are stored at /home/users/test

            String sqlStatement = "select * from [nt:unstructured] as p where isdescendantnode (p, [/apps]) AND NAME(p)='rtePlugins'";


            javax.jcr.query.Query query = queryManager.createQuery(sqlStatement,"JCR-SQL2");

            //Execute the query and get the results ...
            javax.jcr.query.QueryResult result = query.execute();

            //Iterate over the nodes in the results ...
            javax.jcr.NodeIterator nodeIter = result.getNodes();

            long mySize = nodeIter.getSize();

            while ( nodeIter.hasNext() ) {

                //For each node-- get the path of the node
                javax.jcr.Node node = nodeIter.nextNode();

                String myPath = node.getPath();

                System.out.println(myPath);
            }

            // Save the session changes and log out
            session.save();
            session.logout();


        }
        catch(Exception e){
            e.printStackTrace();
        }

    }



}

Using Date Values in JCR SQL2 Queries

While developing AEM tools for my team, I am using some date-based queries while performing JCR-SQL2 queries. While this will not be a community article, I will still post the date-based queries so people new to JCR SQL2 can reference this. Futhermore - the dates are variables used in the query string.

This example is based on this stackoverflow thread: http://stackoverflow.com/questions/15117075/jcr-sql2-query-comparing-dates.

The important thing to consider and is shown below is:

The best way to use dates in a query is to use CAST to force the conversion of a string representation of a date/time into a DATE value used by JCR.

 String sqlStatement2 = "select * from [rep:User] where isdescendantnode('/home/users/mypath') and [jcr:created] > cast('"+ year +"-"+monthStr+"-"+dayStr+"T00:00:00.000+02:00' as date) and [jcr:created] < cast('"+ year2 +"-"+monthStr2+"-"+dayStr2+"T23:59:59.000+02:00' as date)";

  javax.jcr.query.Query query = queryManager.createQuery(sqlStatement2,"JCR-SQL2");

  //Execute the query and get the results ...
   javax.jcr.query.QueryResult result = query.execute();

   //Iterate over the nodes in the results ...
   javax.jcr.NodeIterator nodeIter = result.getNodes();
   while ( nodeIter.hasNext() ) {


                //For each node-- get the path of the node
                javax.jcr.Node node = nodeIter.nextNode();

                String myPath = node.getPath();
                //do something with path value.... 


}

Saturday, 5 December 2015

Congratulations to Lokesh for 2015 AEM Community member of the Year

Congratulations to Lokesh BS - he was the AEM 2015 community member of the year. He has helped many community members throughout this year by submitting many AEM code packages, helping in the forums (currently 3rd place on leaderboard), doing ASK the Experts.

In recognition of his great community work - I will be travelling to New York this week to award Lo Ki with a brand new IPAD, an AEM 2015 Community member plaque, and a dinner at a New York Restaurant on Adobe.




I also want to say congratulations ot Praveen Dubey - who was 2nd  AEM community member of the year and started helping the AEM Community in May 2015 and has been very strong since.
Its awesome members like Praveen and Lokesh that help AEM developers become successful in their AEM projects. Great Job to both of you!!


Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Tuesday, 1 December 2015

AEM Community Code Contest is now closed

Thanks AEM community for your great response to the code contest. We will be reviewing all entries and announce the winners by Dec 18, 2015. The three winning submissions will also be converted into community articles so our AEM community can benefit from these entries and learn new AEM skills.

These community articles will be posted in the first couple of months in 2016.



Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Tuesday, 24 November 2015

Getting Started with Adobe Experience Manager 6.1 Apps

You can create a mobile application using a mobile JavaScript framework, such  as the ionic framework, and then import the mobile application into Adobe Experience Manager (AEM) 6.1. For information, see Ionic Framework.

Import the mobile application by dragging and dropping the mobile app from your file system into AEM, as shown in the following illustration.




Once imported into AEM, the mobile application becomes an AEM application and can use AEM functionality, such as the AEM DAM and AEM authoring capabilities. This development article walks you through how to build a basic Ionic mobile application, import it into AEM, and then configure it so it becomes an AEM application that can be authored, like other AEM content.

To read this development article, click   https://helpx.adobe.com/experience-manager/using/aem61_apps.html.

Adobe Digital Marketing Community


Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Tuesday, 17 November 2015

Creating an AEM HTL Component that uses the QueryBuilder API

You can create an Adobe Experience Manager (AEM)  HTL (formally Sightly)  component that can be used within the AEM Touch UI view. Furthermore, you can use HTL and the QueryBuilder API to develop the AEM component that displays AEM JCR data.

HTL  is an AEM  template language that can be used to replace the use of JSP when developing an AEM component. HTL helps you to separate your design from your application logic.  In this use case, the HTL logic is located within an HTML file and displays the result set. The Java part of the HTL component uses the QueryBuilder API.




Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Thursday, 5 November 2015

Creating an AEM System User for AEM 6.1

In AEM 6.1, you must create an AEM System User to successfully get a session using code such as:

Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "datawrite");
ResourceResolver resolver = null;

try {
           
    //Invoke the adaptTo method to create a Session used to create a QueryManager
 resolver = resolverFactory.getServiceResourceResolver(param);
    session = resolver.adaptTo(Session.class);

Note - see this article:

Querying Adobe Experience Manager 6 data using the Sling getServiceResourceResolver method

This code will not work in AEM 6.1 using a standard user, 

Note: All AEM 6.x HelpX  Articles will be updated soon to use a System user to obtain a Session object from within an OSGi bundle.

To create a system user, perform these tasks:


  1. Open http://localhost:4502/crx/explorer/index.jsp
  2. Login as admin
  3. Click User Administration
  4. Click Create System User
  5. Set the UserId
  6. Click Save

Once created, you can extend permissions like a normal user using the AEM ACL functionality. 




Monday, 2 November 2015

Using the Java Query Object Model within Adobe Experience Manager

You can create an AEM application that searches the CQ repository for JCR data and displays results to the end user. For example, you can search CQ pages under a specific repository node (for example, nodes under /content) and look for a specific search term. All content that satisfy the search criteria are included in the search results. To search the Adobe CQ repository, you use the JCR Query Object Model (JQOM) API. For information about the API, see Interface QueryObjectModel.

JQOM is an AEM query language that is like ‘prepared statements’ and SQL2 is like ‘statements’ in JDBC queries.  For example, a use case may require to retrieve all JCR nodes from ‘Geometrixx’ which has the property pageTitle.

QueryObjectModelFactory qf = currentNode.getSession().getWorkspace().getQueryManager().getQOMFactory();
Selector selector = qf.selector("cq:PageContent", "s"); 
Constraint constriant = qf.descendantNode("s", "/content/geometrixx");
constriant = qf.and(constriant, qf.propertyExistence("s", "pageTitle"));
QueryObjectModel qm = qf.createQuery(selector, constriant, null, null);

QueryObjectModelFactory gets the instance of the JCR Object Model.  The Selector is used to set the type of node that the query needs to look at. Constraint is used to add all the constraints which is like where condition into the query model. Finally a query is created with the selector and constraint that captures the response as a QueryObjectModel.




To read this development article, click https://helpx.adobe.com/experience-manager/using/jqom.html.

Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Thursday, 29 October 2015

Reading AEM OSGi Configuration Values

You can define OSGi configuration values by using CRXDE lite and dynamically read these values from within an OSGi service. By defining configuration values, you can define values used by an OSGi service and use these values while the service is running. Unlike hard-coding values in an AEM OSGi service, defining values in CRXDE lite lets you modify configuration values without re-compiling and re-deploying the OSGi bundle.



As shown in the previous illustration, you can define OSGi configuration values in CRXDE lite. To define configuration values, you define a node of type sling:OsgiConfig. Then you define properties which are the configuration values.




This development article guides you through creating an OSGi bundle that reads OSGi configuration values that are defined in CRXDE Lite. To read this development article, click:

https://helpx.adobe.com/experience-manager/using/osgi_config.html.



Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Thursday, 8 October 2015

AEM 2015 Communtiy Code Contest



During the month of November 2015, the AEM community team is running a special contest open to AEM developers. Have you written an AEM application, a custom eCommerce component, an AEM social component, a custom Touch UI component, an OSGi bundle, or any other type of AEM content that you want to share with the AEM community and compete in the contest? If so, consider entering the AEM code community contest.

To enter the contest, fill out this online form:

http://bit.ly/1LkcF9s

Be creative and show us and the AEM community how you use AEM. We are looking forward to seeing your submissions.

Official Rules


Participation constitutes entrant’s full and unconditional agreement to and acceptance of these Official Rules. The ADOBE EXPERIENCE MANAGER CODE COMMUNITY CONTEST
starts at 12 a.m. PST on NOV 1, 2015 and ends at 11:59 p.m. PST on NOV 30, 2015.

(1) Eligibility:  The AEM Community Code Contest (now referred to as the Contest) is open to AEM community members from the United States, India, Canada, Australia, and European Union countries whom are at least eighteen (18) years of age (or the age of majority in his/her jurisdiction).

(2) How To Enter; Entry Limits:
To enter the contest, fill in the online form (link above). You can then submit the final AEM code by Nov 30, 2015. To submit AEM code, package up your AEM application in a package and email the package to scottm@adobe.com. In the email, describe your application and how it works. To be considered a wining submission, the code must be functional and work within AEM 5.6, 5.6.1, or 6.x. Code that works with previous AEM versions is not considered valid for the purposes of this Contest. This Contest is not open to Adobe employees.

Limit on Entries:  You may only submit one submission. Multiple submissions are not allowed.

(3) Prize:  Three (3) total prize will be awarded in this Contest as follows:
Prize:  Winners will each receive:

  • 1st place - $150  USD Amazon Gift Card 
  • 2nd place - $100 USD Amazon Gift Card
  • 3rd place - $50 USD Amazon Gift Card

Odds of winning a prize in this contest will depend on the total number of eligible entries received.
All prize entries, including functioning AEM code is at the community members’ sole discretion. All prizes are awarded “as is” with no warranty or guarantee, either express or implied. The prizes are delivered via email. Winners are responsible for all applicable federal, state, territorial, provincial, municipal and local taxes, any costs associated with currency exchange, or any other costs and expenses associated with prize receipt, acceptance and/or use not specified herein as being provided.

(4) Selection of Winner:
Early December 2015, three (3) potential winners will be selected by a committee of Adobe AEM employees. Potential winners will be notified by a direct message from Adobe through his/her email account.

  (5)  Entrants’ and Winners’ Agreement to these Official Rules and the Decisions of Sponsor: Participation in the Contest and/or receipt of any prize constitute each Entrant’s and winner’s full and unconditional agreement to and acceptance of these Official Rules, Sponsor’s online Terms of Use and Privacy Policy (available by region and incorporated herein by reference), and Sponsor’s decisions, which are final and binding in all matters related to the Contest. Sponsor will not enter into any correspondence. Winning a prize is contingent upon Entrant(s) fulfilling all applicable requirements as set forth herein.

 (6)  General Conditions; Sponsor’s Right to Cancel, Terminate or Modify the Contest, Disqualify Entrants or Eliminate or Void Entries: Proof of submission of an Entry is not proof of delivery or receipt of such Entry by Sponsor. Entries generated by script, macro or other automated means, or otherwise intended to subvert or circumvent the entry process or any stated entry limits are void. Use of a false email account will disqualify an Entry. In the event of a dispute as to any Entry, or the identity of a Participant, the Entry at issue will be declared to be made by the authorized account holder and natural person assigned by an Internet access provider to the email addressed associated with the Entry and he/she must comply with these Official Rules. Participants may be required to show proof of being the authorized account holder. Sponsor has the right, in its sole discretion, to reject or void any Entry, and/or to disqualify any Entrant who (whether in fact or by attempt) subverts, circumvents, or tampers with the entry process or the lawful operation of the Contest, or who it finds to be acting in an unsportsmanlike or disruptive manner or in a manner otherwise in violation of these Official Rules.

 (7)  Release of Claims; Limitations of Liability; Warranty and Indemnity: Adobe does not guarantee that only by submitting code you will win the Contest. Adobe is not in any way responsible or liable for: (i) any loss (including loss of opportunity), injury, damage (including, but not limited to, direct, indirect or consequential loss), cost, expense, or claim arising from or in relation to the Contest, participation in the Contest or any Contest -related activity, or (ii) the authorized or unauthorized or fraudulent actions of Participants or other third parties, or (iii) events requiring a cancellation or postponement of the Contest, or (iv) for Entries that are lost, late, intercepted, incomplete, incorrect, delayed, illegible, garbled, damaged, misdirected or not otherwise received by Sponsor, or (v) for difficulties or impediments of any kind, whether human, electrical or technical in nature, relating to or in connection with the Contest, its administration, the processing of Entries or the announcement of prizes or winners.
Participants assume sole liability and accept all risk of loss for injuries, including personal injuries and/or damage to property, caused or claimed to be caused by participating in the Contest, or the acceptance, shipping and handling, receipt, possession, loss, use or misuse of any prize. By participating in the Contest, each Participant agrees to the maximum extent allowable under applicable law, to indemnify and keep indemnified, to defend, release and hold the Released Parties at all times harmless from and against any liability, personal injury, death, damages, losses, claims, demands, causes of action, suits or proceedings, costs and expenses (including reasonable attorney’s fees) arising from, accruing out of, or in any way connected with his/her participation in the Contest, or for the shipping and handling, receipt, possession, loss, use or misuse of any prize awarded.

(8)  Governing Law; Venue; Disputes: All issues and questions concerning the construction, validity, interpretation, and enforceability of these Official Rules, or the rights and obligations of Sponsor and Participants hereunder, shall be governed by, and construed in accordance with, the laws of the state of California, United States of America, without giving effect to any choice of law or conflict of law rules or provisions (whether of the State of California or any other jurisdiction) that would cause the application of laws of any jurisdiction other than the State of California, and all claims must be resolved in the appropriate State Court located in Santa Clara County, California.

(9)  Personal Data: AEM code and other IP data collected from Participants may be used in public-facing Adobe AEM content including: Adobe AEM developer articles, Knowledge base articles, or videos. The community whom contributed the code featured in the article will have their name appear in the article.
By entering, each Participant consents to the collection, use and disclosure of his/her personal information as described herein. Nothing in these Official Rules shall be deemed to restrict or exclude any Participant’s statutory consumer rights pertaining to personal data. Except as otherwise stated in these Official Rules or on the Site, personal information collected by Sponsor from Participants online is subject to Sponsor’s online Privacy Policy at http://www.adobe.com/privacy/policy.html.

 (10) Winners’ List:  Following conclusion of the Contest, and after three winners have been determined and verified, a winners’ list will be available at http://help-forums.adobe.com/content/adobeforums/en/community/top-contributors.html.


© Adobe Systems Incorporated. All Rights Reserved. All trademarks are the property of their respective owners.

Wednesday, 7 October 2015

Creating an AEM HTL component that uses Sling Models to parse a web page

You can create an Adobe Experience Manager (AEM) custom component by using AEM HTML Language Template (HTL - formally Sightly) and Sling Models that is able to parse a Document Object Model (DOM) and write the results out to an AEM web page. For example, assume you have a requirement to parse a web page and write out the images in an AEM web page. Using a custom DOM parser component, you can implement this requirement.

This AEM development article walks you though how to use HTL and Sling Models to create a custom AEM component that is able to parse a DOM.


The previous illustration shows the results produced by the custom AEM DOM parser component that parses images from the AEM community page located here:


To read the AEM 6.1 development article that uses AEM HTL and Sling Models, click  https://helpx.adobe.com/experience-manager/using/domparser.html.


To watch the video and see this component in action - click: 




Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Monday, 5 October 2015

Setting up two factor authentication for Adobe Experience Manager

You can create an OSGi bundle for Adobe Experience Manager (AEM) that is responsible for supporting two factor authentication. That is, you can configure AEM to use a one-time password (OTP). An OTP is an automatically generated numeric or alphanumeric string of characters that authenticates the user for a single transaction or session.

The benefit of using an OTP is it's more secure than a static password. An OTP token is typically generated by a mobile application that displays a number. The number changes every 30 or 60 seconds, depending on how the token is configured.


When the user logs into AEM, they enter their user name, password, and OTP value. 


To read this development article, click   https://helpx.adobe.com/experience-manager/using/twofactor.html.


Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Thursday, 1 October 2015

Fall 2015 Sessions of Adobe Experience Manager Ask the Community Experts

The remaining 2015 sessions of Ask the AEM Community Experts are:

Nov 2015

Join the AEM Applications Eng team for a discussion about AEM Apps. By joining this session, you will gain a better understanding of using AEM and applications. You will get a chance to ask the Eng team questions related to this subject.

This session is at 11 AM EST Nov 24, 2015.


To view this session, see https://communities.adobeconnect.com/p3lesjf5nzq/?launcher=false&fcsContent=true&pbMode=normal.

Oct 2015

Join Scot Macdonald and Russell Whitchurch (SR Community Manager for Adobe Analytics) for a discussion about how to integrate Adobe Experience Manager and other Digital Marketing products.  Included in this discussion is an emphasis on AEM and Analytics.  By joining this session, you will gain a better understanding of how to take advantage of AEM and the other Adobe Digital Marketing products.

To view this session, see https://communities.adobeconnect.com/p2xb1k2411b/?launcher=false&fcsContent=true&pbMode=normal.




Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.


Monday, 28 September 2015

Customizing the Adobe Experience Manager Sidekick to improve the activate process

You can customize the AEM sidekick to add functionality tio meet your business requirements. For example, typically, once you activate an AEM page in author, in order to view it in publish, you typically copy its URL, paste it in new tab and change the host-name and port name to see the results. To simplify this use case, you can add a custom button to the AEM sidekick that performs these actions with 1 click.

The new sidekick button automatically give you the link to the page in publish instance once you activate it. That is, with a single click, you can see your current page in publish instance.




Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Friday, 18 September 2015

Creating an external OAK Login Module for Adobe Experience Manager

You can create a custom OAK Login Module for Adobe Experience Manager (AEM) that is called when a user logs into AEM from a 3rd party authentication system such as LDAP. To create a custom OAK Login Module, you use the javax.security.auth.spi.LoginModule interface. One use case for writing a custom OAK login module is to add custom application logic to a callback. That is, when a user logs in from LDAP, a callback is invoked.




 A custom OAK login module is implemented as an OSGi bundle. To read this development article, click  https://helpx.adobe.com/experience-manager/using/oak-login.html.


Note; For information about using LDAP with AEM 6.x, see Configuring Adobe Experience Manager 6 to use Apache Directory Service.

Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Wednesday, 16 September 2015

Configuring Adobe Experience Manager 6 to use Apache Directory Service

You can configure Adobe Experience Manager (AEM) 6 to  synchronize user account information from a third-party LDAP service. By configuring AEM to use a third-party LDAP service, you can authenticate LDAP users when logging into AEM. This article describes how to setup Apache Directory service (a popular open source LDAP service), create a new user, configure AEM 6 to use Apache Directory service, and finally login to AEM with the new user entered into Apache Directory service.



To configure AEM 6 to use LDAP, you configure these OSGi configuration settings:
  • Apache Jackrabbit Oak LDAP Identity Provider
  • Apache Jackrabbit Default Sync Handler
  • Apache Jackrabbit External Login Module
This AEM community article walks you through how to configure AEM 6 to authenticate Apache Directory service users. To read this development article, click https://helpx.adobe.com/experience-manager/using/configuring-aem6-apache-directory-service.html.

Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

Friday, 11 September 2015

Using Jackrabbit UserManager APIs to create AEM Users and Groups

You can develop an Adobe Experience Manager (AEM) OSGi bundle that uses the Jackrabbit UserManager APIs to perform AEM user operations. This API provides access to both AEM users and groups and is located in the org.apache.jackrabbit.api.security.user Java package.

In this development article, a custom Sling Servlet is created that dynamically creates AEM users and groups using the UserManager API. For more information, see Interface UserManager.

AEM 5.6

The following illustration shows the AEM page that performs a POST operation to the AEM custom Sling Servlet that creates the user and group.


To read this development article, click https://helpx.adobe.com/experience-manager/using/jackrabbit-users.html.


AEM 6.1/6.2

The following illustration shows the AEM page that performs a POST operation to the AEM custom Sling Servlet that creates the user and group.


To read this development article, click https://helpx.adobe.com/experience-manager/using/using-jackrabbit-usermanager-apis-6.html.

Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.

September Version of Ask the AEM Community Experts on Dispatcher

Join Scott Macdonald and Jörg Hoh @joerghoh (an Adobe employee and top AEM community member) for insight into using Dispatcher with Adobe Experience Manager.  By attending this session, you will gain a better understanding of Dispatcher as well as best practices for configuring, using and securing communication between Dispatcher and AEM.  We will also cover when it is appropriate to disable Dispatcher. This is your chance to ask questions on anything Dispatcher.

To watch this session, go to:

https://communities.adobeconnect.com/p8h87dumxgv/?launcher=false&fcsContent=true&pbMode=normal

Here is an older Dispatcher presentation that is very useful:

https://my.adobeconnect.com/_a295153/p7th2gf8k43/?launcher=false&fcsContent=true&pbMode=normal

Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.


Thursday, 3 September 2015

Using Query Builder API from within an AEM 6.1 Sling Servlet

You can create an AEM application that searches the AEM JCR for assets and displays results to the end user. For example, you can use a custom Sling Servlet to search CQ pages under a specific repository node (for example, nodes under /content) and look for a specific search term. All content that satisfy the search criteria are included in the search results. To search the AEM repository, you use the Query Builder API from within a Sling Servlet. This API requires that you define search parameters, and an optional filter. After you execute the query, the results are stored in a result set. You can display the result set in an AEM web page.

When working with the Query Builder API, you can use a Java API or a Restful API. This development article uses the AEM Query Builder API within a custom Sling Servlet to perform searches.



Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.


Wednesday, 26 August 2015

Integrating Adobe Experience Manager 6.1 with Activation - Dynamic Tag Management

You can integrate Adobe Experience Manager (AEM) with the Digital Cloud Service named Activation (formally named Dynamic Tag Management). Activation is a Digital Marketing cloud service that allows a marketer to manage Adobe and third-party tags used for tracking or other analytic purposes. It is done through client-side scripting that injects tag related code throughout the pages of the site. For example, you can inject JavaScript code into all footers and headers that belong to AEM pages.

You define rules in the Activation web client, as shown in this illustration.



The previous illustration shows an Activation rule named TestOnLoadChrome. This rule is basically an event handler that is fired when a page is opened. The condition is define so that this rule fires only when the browser is Chrome. The logic that is defined is simply JavaScript that creates a pop-up message.

alert("Hello Chrome"); 

Once you define and approve Activation rules using the Activation web client, you can embed these rules into AEM web pages. When this rule is embedded into an AEM web page, this rule is fired when an AEM web page is opened in Chrome, as shown in this illustration.


To read this development article, see https://helpx.adobe.com/experience-manager/using/dtm.html

Adobe Digital Marketing Community

Join the Adobe Digital Marketing Community. Start by clicking this banner



I (Scott Macdonald) am a Senior Digital Marketing Community Manager at Adobe Systems with over 18 years in the high tech industry. I am also a programmer with knowledge in Java, JavaScript, C#,C++, HTML, XML and ActionScript. If  you would like to see more CQ or other Adobe Digital Marketing end to end articles like this, then leave a comment and let me know what content you would like to see.

TwitterFollow the Digital Marketing Customer Care team on Twitter @AdobeMktgCare.