Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

AEM6.5 Disable Some selected fields in Action Bar for specific Metadata schema Folder [DAM]

Avatar

Level 7

Hi Team,

 

when I tried to disable the "Properties",  "To Collection" , "Annotate" , "Quick Publish"

from Action Bar for specific Schema folder. It is disabling for all the schema folder.

image.png

 

The requirement here is

- Suppose we have two schema folder in DAM, with different metadata schema, eg. public and central-library having their respective metadata schemas

image.png

Now, If I open central-library schema folder and I need to restrict "Properties",  "To Collection" , "Annotate" , "Quick Publish" from Action Bar only for central-library schema, not for Public folder.

 

How to Restrict that for specific folder?

image.png

 

 

@arunpatidar  @Vijayalakshmi_S  @kautuk_sahni  @Theo_Pendle  @BrianKasingli  @vanegi 

 

Thank you.

 

Topics

Topics help categorize Community content and increase your ability to discover relevant content.

1 Accepted Solution

Avatar

Correct answer by
Employee

@Theo_Pendle authored this article around render conditions that is highly relevant to your ask : https://levelup.gitconnected.com/aem-creating-custom-granite-render-conditions-28a21958f420

 

Cheers


~Marc

View solution in original post

3 Replies

Avatar

Correct answer by
Employee

@Theo_Pendle authored this article around render conditions that is highly relevant to your ask : https://levelup.gitconnected.com/aem-creating-custom-granite-render-conditions-28a21958f420

 

Cheers


~Marc

Avatar

Community Advisor

Hi @tushaar_srivastava,

If metadata schema is associated to a folder in DAM, respective folder/jcr:content will have a property named metadataSchema with value being the schema path.

Conditional logic in this use case to control the display of actions goes like this,

Check if a DAM folder has central-library schema(via a check using the property above) for which DAM folder path is retrieved from requestPathInfo object via requestPathInfo.suffix.

Using this conditional check in granite:renderconditions or in granite:hide will work only on page load. As we switch between folders within /assets.html, conditional check will not be evaluated for the same reason mentioned above.

You can make use of JS

  • To get the DAM folder path on select of an asset by listening to click event on Quick action - "Select"  button. (based on your AEM version, use the selectors considering all 3 view - list, column and card)
  • Perform the logic using the path retrieved in previous step
    • via AJAX call to servlet (conditional check based on schema using property above) or
    • conditional check based on folder path (Only if it is known that schema is limited to one or two folder paths and this logic need not be moved to servlet, can be written as is in JS)
  • Display/hide desired action elements by .addClass() or .css() jQuery function based on the outcome of previous step

Avatar

Community Advisor

you have to use the path render condition to show hide menu items

One of the examples of rendercondition is https://aemlab.blogspot.com/2019/07/aem-granite-custom-render-conditions.html



Arun Patidar