Goal
This post can be useful if you'd like to disable some of the menu options of components added to par on a page, for example, you might want to disable Delete option for targeted components on a page, to avoid deletion by authors (An other ideal way is to statically include the component) Check the demo
Solution
1) Create folder /apps/clientlibs
2) Create /apps/clientlibs/myclientlib of type cq:ClientLibraryFolder and add property categories with String value cq.widgets
3) Create /apps/clientlibs/myclientlib/js.txt of type nt:file, add the following
disableDelete.js
4) Create /apps/clientlibs/myclientlib/disableDelete.js of type nt:file and add the following code
CQ.Ext.ns("MyClientLib");
MyClientLib.EditRollover = CQ.Ext.extend(CQ.wcm.EditRollover, {
handleContextMenu: function(e){
MyClientLib.EditRollover.superclass.handleContextMenu.call(this, e);
var component = this.element.linkedEditComponent;
if (!component || !component.menuComponent) {
return;
}
var menu = component.menuComponent;
var dTargeting = menu.find('text', "Disable targeting");
//if Disable targeting menu option doesn't exist, donot disable Delete
if(!dTargeting || dTargeting.length == 0){
return;
}
var del = menu.find('text', "Delete");
if(del && del.length > 0){
del[0].setDisabled(true);
}
}
});
CQ.Ext.reg("editrollover", MyClientLib.EditRollover);