Goal
Sort browse dialog tree nodes of pathfield (CQ.form.PathField) on dialog open.
Package install (contains a sample component using sortable pathfield)
Browse dialog of Product
Browse dialog tree nodes in descending order
Solution
1) Login to CRXDE Lite (http://localhost:4502/crx/de) and create folder /apps/sort-pathfield-tree
2) Create node /apps/sort-pathfield-tree/clientlib of type cq:ClientLibraryFolder and add a String property categories with value cq.widgets
3) Create file (nt:file) /apps/sort-pathfield-tree/clientlib/js.txt and add
sort-tree-nodes.js
4) Create file (nt:file) /apps/sort-pathfield-tree/clientlib/sort-tree-nodes.js and add the following code
CQ.Ext.ns("ExperienceAEM"); //asc=true for ascending order and asc=false for descending order ExperienceAEM.sortTags = function(pathfield, asc){ pathfield.browseDialog.treePanel.on('load', function(node){ node.childNodes.sort(function(a,b){ a = a["text"].toLowerCase(); b = b["text"].toLowerCase(); return asc ? ( a > b ? 1 : (a < b ? -1 : 0) ) : ( a > b ? -1 : (a < b ? 1 : 0) ) ; }); }) };
5) Here is a sample component dialog using sort on pathfield
<?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" jcr:primaryType="cq:Dialog" helpPath="en/cq/current/wcm/default_components.html#Text" title="Text" xtype="tabpanel"> <items jcr:primaryType="cq:WidgetCollection"> <tab1 jcr:primaryType="cq:Widget" anchor="100%" title="Text" xtype="panel"> <items jcr:primaryType="cq:WidgetCollection"> <path jcr:primaryType="cq:Widget" fieldLabel="Select path" name="./path" xtype="pathfield"> <listeners jcr:primaryType="nt:unstructured" dialogopen="function(){ExperienceAEM.sortTags(this, false);} "/> </path> </items> </tab1> </items> </jcr:root>
Hi Sreekanth,
ReplyDeleteThanks a lot for sharing these articles.
I was trying this particular thing on my OOTB 5.6.1 instance. I installed the package you have provided here.
As far as I understood, this package needs to be installed and when the "select path" window opens up , it should be sorted in ascending or descending order. But it doesn't seem to be working.
Can you please let me know if whatever I am doing is correct. I come from a support background and am trying to learn.
Your inputs on this will be really really helpful.
Hi Sreekanth,
ReplyDeleteAny thoughts on the above will be really helpful.