Search code examples
javaaemjackrabbitjcrsling

Set a CQ5 component to editable or not editable


Is it posible if i want to set a cq5 component editable in page A, but not editable in page B.

For example: at page A, i have C component we allow authors to open dialog and edit the component. But we do not allow authors to open dialog to edit component C on Page B. I try to research cq:EditConfig link, but It's not enough documentation to resolve my issue.


Solution

  • You can set ComponentContext.BYPASS_COMPONENT_HANDLING_ON_INCLUDE_ATTRIBUTE before the include, and remove it after the include.

    Set:

    slingRequest.setAttribute(ComponentContext.BYPASS_COMPONENT_HANDLING_ON_INCLUDE_ATTRIBUTE, true); 
    

    Remove:

    slingRequest.removeAttribute(ComponentContext.BYPASS_COMPONENT_HANDLING_ON_INCLUDE_ATTRIBUTE);
    

    More details are here: https://dev.day.com/docs/en/cq/current/developing/boilerplates.html

    You can write a Sling component filter:

    And you can check the page and the component, and if you want to disable editing, just set the attribute, do the filter, and unset the attribute...