Chuyển đến nội dung chính

[CQ ADMIN] Overriding the default damadmin or siteadmin pages in CQ5



Overriding the default damadmin or siteadmin pages in CQ5


Overriding foundation content in CQ5 was made fairly easy by our friends on the Adobe CQ team.  In the vastmajority of cases, we can just replicate the path of the original code under libs to our apps folder.  In the case of siteadmin and damadmin, this would mean we need to copy the root node from the original path: /libs/wcm/core/content/damadmin or /libs/wcm/core/content/siteadmin to /apps/wcm/core/content/damadmin.  However, since these particular nodes are accessed through a vanityURL (/damadmin and /siteadmin respectively) instead of their path in the repository, there is a slightly different approach to overriding them.  Although it is still best practice to override in the same folder structure as the libs node (so you can default back to them for any un-overridden piece), there is an extra step to getting your content to actually appear when using vanity urls.
This little gem of an property is called: vanityOrder
On both the damadmin and siteadmin nodes there is a property called vanityOrder.  Typically, this property is not necessary as any vanityPaths set in custom content will be unique.  In this case, however, since the original content is under libs, we need to set a vanity order to establish what content the vanity url maps to.
Let's do a little example:
We're going to add a button to the "Tools" dropdown in the damadmin.  The first step is to copy the damadmin node to your apps folder, as seen below (Note: Folders must be of type sling:folder):

[[{"type":"media","view_mode":"media_large","fid":"73","attributes":{"alt":"","class":"media-image","height":"398","typeof":"foaf:Image","width":"440"}}]]

Now that you have a copy in your apps folder, delete any child nodes that you will not be overriding (we want to revert back to the libs version in case of future updates).  As we're adding a "Tools" item, it is safe to remove the grid, treeRoot, search, tabs, and tags nodes.  After removing these items, it will look as follows:
[[{"type":"media","view_mode":"media_large","fid":"74","attributes":{"alt":"","class":"media-image","height":"257","typeof":"foaf:Image","width":"409"}}]]

Now that we have just the portion we want to override copied over, lets create some changes (so we can prove that we're overriding the default).  I'll start with something extremely simple, we'll copy an existing item and change the text.  In the example below, I copied "References..." and set the text to "Export Item":
[[{"type":"media","view_mode":"media_large","fid":"75","attributes":{"alt":"","class":"media-image","height":"314","typeof":"foaf:Image","width":"440"}}]]

So now we have an updated damadmin console!  Lets go to our browser and see the changes (http://localhost:4502/damadmin):
[[{"type":"media","view_mode":"media_large","fid":"76","attributes":{"alt":"","class":"media-image","height":"180","typeof":"foaf:Image","width":"480"}}]]

Interesting, it doesn't seem to have picked up our changes!  A new item was supposed to be under "Download" in the tools dropdown.  This is where we need to modify the "vanityOrder".  You see, since we're using a vanity path, we need to specifically tell CQ which item will take priority.  This is also where the different CQ versions will act differently (unfortunately).  You can see on the copied damadmin node, the vanityOrder is set to 290 (seen in the first screenshot under properties).  In CQ5 (without any SP), we need to set our overridden version to have a higher number.  Let's see what happens when we set it to 291:
[[{"type":"media","view_mode":"media_large","fid":"77","attributes":{"alt":"","class":"media-image","height":"331","typeof":"foaf:Image","width":"454"}}]]

Now lets see if our changes have been picked up:
[[{"type":"media","view_mode":"media_large","fid":"78","attributes":{"alt":"","class":"media-image","height":"159","typeof":"foaf:Image","width":"463"}}]]

Huzzah! It worked.  Now that we know how to make changes, you can actually modify the default buttons and interactions of this console.

By Ryan McCullough

Nhận xét

Bài đăng phổ biến từ blog này

How to custom CQ Login Module

In order to manage the login process in our project, we will use a custom CQ Login Module. We will admit the root URL of CQ instance is: http://localhost:4502/ . This value may change depending of your environment. The %CQ_HOME% variable we will mention refers to the CQ install path. It admits you have defined %CQ_HOME% as an environment variable. 1.         Update the repository definitions The login module must be referenced in the repository definitions. You have to edit the next file: %CQ_HOME%/crx-quickstart/repository/repository.xml Do a copy of repository.xml to repository.xml.original In repostiory.xml, replace  security  part of repository.xml with following: <Security appName="com.day.crx">         <SecurityManager class="com.day.crx.core.CRXSecurityManager"> <WorkspaceAccessManager class="org.apache.jackrabbit.core.security.simple.SimpleWorkspaceAccessManager"/>  ...

[DAM] Custom DAM management / Add 'Alt' into images

Issue: We need, for each asset to be able to edit the ‘alt’ text. The ‘alt’ text must be used on the site each time an asset is displayed. When displaying an asset, the mechanism is the following : -       Get the Locale from the request -       When getting the asset, get the associated Alt property corresponding to the locale. -       Populate the alt attribute with this value. Resolution: To achieve this, we can customize the DAM Asset Editor. The AssetEditor is the form used to input asset properties and metadata. Below is a screenshot of a customized form with four “alt” input (for four different locales). The DAM uses the following nodes to render Asset Editor forms: -       /libs/dam/content/asseteditors/formitems -       /libs/dam/content/asseteditors/images/formitems -      ...

[COMPONENT] What is the automatically generated div tag around a component used for / How to remove DIV tag is generated by CQ

Question: If a component is included for example by the <cq:include> tag, a div tag is added automatically around the component in the generated HTML. What is this div tag used for and is it possible to suppress the automatic creation of it? Resolution: Add the below code in to global.jsp, which you include for all the component jsp's. if (WCMMode.fromRequest(request) != WCMMode.EDIT && WCMMode.fromRequest(request) != WCMMode.DESIGN) {          IncludeOptions.getOptions(request, true).forceSameContext(Boolean.TRUE); } This will not generate any more extra <div> tags for any number of components you add. Reference: This div tag is used for the editing system of CQ5 (drawing the edit bars, rollover frames etc), the Designer system of CQ5 (set CSS class name, Designer CSS styling) and also for identifying the component in the client DOM. It's possible to suppress this generated div tag either...