This article will shows you how to: one write ExtJS plugin and calls it in CQ dialog and two generating rootPath with ExtJS plugin.

We know that with xtype pathfield, we can set rootPath value to any location we want. The drawback is that it is static. If we set rootPath to /content, we fall into providing “no so good author experience” as content author needs to click through pages list to get to the desired page.

The solution would be to dynamically generate the value of rootPath. In this example, we will show you how to generate a list of child pages dynamically.

Using CQ Component Dialog

In the pathfield node’s properties, we add a property named: plugins and set its value to the name of the ExtJS plugin (i.e. customRootPathPlugin) that we are going to create.

In clientlibs, we create our plugin with categories: cq.wcm.edit

Our clientlibs’ folder

The clientlib’s properties

 

In /cq.wcm.edit.productNav/js/script.js, we would have our ExtJS plugin script:


    (function($) {
        var plugin = CQ.Ext.extend(CQ.Ext.emptyFn, {
            init: function(widget) {
                // create some JS logic to get the locale here
                // current path can be obtained via
                // widget.findParentByType('dialog').responseScope.path
                widget.treeRoot.name = CQ.HTTP.getPath();
            }
        });
        CQ.Ext.ComponentMgr.registerPlugin('customRootPathPlugin', plugin);
    }($CQ));

Finally, the dialog

In the dialog box, we would get the list of child pages that looks like this:

 

Credits

This blog post uses code originally written by Tomek Rekawek on Stack Overflow.