You could have the need to customise the actions available via the siteadmin interface in CQ
For better understaing the one highlighted in the below screenshot

to do so you simply have to copy the
/libs/wcm/core/content/siteadmin/actions
as
/apps/wcm/core/content/siteadmin/actions
having care of recreating the correct folder structure and node types.
here a json extract
{
"jcr:createdBy": "admin",
"jcr:created": "Thu Oct 18 2012 16:55:43 GMT+0100",
"jcr:primaryType": "nt:folder",
"core": {
"jcr:createdBy": "admin",
"jcr:created": "Thu Oct 18 2012 16:55:43 GMT+0100",
"jcr:primaryType": "nt:folder",
"content": {
"jcr:mixinTypes": [
"rep:AccessControllable"
],
"jcr:createdBy": "admin",
"jcr:created": "Thu Oct 18 2012 16:55:43 GMT+0100",
"jcr:primaryType": "sling:Folder",
"siteadmin": {
"xtype": "siteadmin",
"sling:redirect": false,
"sling:resourceType": "cq/ui/components/widget",
"jcr:mixinTypes": [
"cq:Console"
],
"jcr:title": "CQ5 WCM",
"consoleDescription": "Create and manage multiple websites.",
"iconClass": "siteadmin",
"jsLibs": [
"cq.wcm.admin"
],
"sling:vanityPath": "/siteadmin",
"consoleTitle": "Websites",
"jcr:primaryType": "cq:Widget",
"sling:vanityOrder": 300,
"actions": {
"jcr:primaryType": "nt:unstructured"
//........
// here all the actions as subnodes
//........
}
}
}
}
}
Then you can simply customise the action you want: for example you could change the target, the conditions, the text or even the handler if you implement your own one.
Following an extract of the “Activate” menu (the OOTB one). I find each attribute self-explainatory.
"activate": {
"iconCls": "cq-siteadmin-activate-icon",
"cls": "cq-siteadmin-activate",
"context": [
"toolbar"
],
"jcr:primaryType": "nt:unstructured",
"split": true,
"text": "Activate",
"menu": {
"jcr:primaryType": "nt:unstructured",
"activateNow": {
"isDefaultAction": true,
"handler": "CQ.wcm.SiteAdmin.activatePage",
"cls": "cq-siteadmin-activate-now",
"conditions": [
"CQ.wcm.SiteAdmin.hasAnySelection",
"CQ.wcm.SiteAdmin.notLocked"
],
"context": [
"toolbar",
"contextmenu"
],
"target": "CQ.wcm.SiteAdmin.getAnyTarget",
"jcr:primaryType": "nt:unstructured",
"text": "Activate"
},
"activateLater": {
"privileges": [
"replicate"
],
"handler": "CQ.wcm.SiteAdmin.scheduleForActivation",
"cls": "cq-siteadmin-activate-later",
"context": [
"toolbar"
],
"conditions": [
"CQ.wcm.SiteAdmin.hasAnySelection",
"CQ.wcm.SiteAdmin.notLocked"
],
"target": "CQ.wcm.SiteAdmin.getTargetFromList",
"jcr:primaryType": "nt:unstructured",
"text": "Activate Later..."
}
}
}
if you instead just need to hide/show some commands on certain groups of users, you won’t need to custimise anything, just play with ACL! (See reference).
Once you overlayed you could realise that your changes are not reflected by the UI. This is done by the sling:vanityOrder. As
/siteadmin is a vanity path pointing to wcm/core/content/siteadmin. The /libs one are picked up. The default value (as of 5.5) is 300. Just update the one under /apps to a greater value. 301 is enough. As practice I like to have my vanitypath order as 400+ though.
Reference