Hi masters!
I’m trying to customize the CQ-DAM search panel, in damadmin console. I’m following instructions in [1].
I’ve successfully added a new optionspredicate to add a custom search for ‘activated/deactivated’ assets, looking for a ‘jcr:content/cq:lastReplicationAction’ property, with ‘Activate’ and ‘Deactivate’ values. Nice!
The question is... I would like to add a predicate to filter assets that have a pending activation (thus, assets marked in the ‘Status’ column with a calendar icon, with a message like ‘Task Scheduled…’)
But I don’t know where this information is stored in the JCR repository, and how to define a new predicate with this information. Is it possible?
Do you have any advice?
Thank you very much!
[1] http://dev.day.com/docs/en/cq/current/dam/extending-cq-dam-search.html
Solved! Go to Solution.
Views
Replies
Total Likes
This is the reply from our Eng team:
That is not a simple predicate addition, because pending activation is not directly stored in some jcr property but is derived from jcr:content/cq:lastReplicationAction and then looking at the replication queue.
So, one will have to implement a filtering predicate
https://dev.day.com/docs/en/cq/current/javadoc/com/day/cq/search/eval/AbstractPredicateEvaluator.htm...
little bit of code that can help you find it is pending goes like this
replicationStatus = resource.adaptTo(ReplicationStatus.class);
Hope this helps.
Views
Replies
Total Likes
That is a good question. I will pass this question to the Eng team.
Creating a predicate to filter assets that have a pending activation is something that is not documented. But we will add this to the list.
Views
Replies
Total Likes
Thank you smacdonald2008! I'll be waiting for any news from Eng team. For our customer is important to have a list with the next assets planned to be published. I think it should be a very interesting functionality for many others customers...
Views
Replies
Total Likes
I agree - this will make a good community article - i will add this to our list to document.
I have passed this question to the Eng team. I am hoping to hear back from them soon.
Views
Replies
Total Likes
In addition, it would be great to know how to add the 'Status' column to the search panel, because this column is only visible in the 'Digital Assets' panel. Without the 'Status' column in the search panel, we will get the results, but we won't have the information about the planned publish date.
Thank you again :-)
Views
Replies
Total Likes
This is the reply from our Eng team:
That is not a simple predicate addition, because pending activation is not directly stored in some jcr property but is derived from jcr:content/cq:lastReplicationAction and then looking at the replication queue.
So, one will have to implement a filtering predicate
https://dev.day.com/docs/en/cq/current/javadoc/com/day/cq/search/eval/AbstractPredicateEvaluator.htm...
little bit of code that can help you find it is pending goes like this
replicationStatus = resource.adaptTo(ReplicationStatus.class);
Hope this helps.
Views
Replies
Total Likes
Hi smacdonald2008.
I've tried with a dummy component to test the ReplicationStatus.isPending() functionality (code at [1]). But the isPending() method always return 'false'. I've tried with a 'no activated' image, but with the activation pending marked in the 'status' column.
For recheck purposes, I've tried with activated images too, with and without pending activation, and getLastReplicationAction() is working fine, but isPending() always return 'false'.
Could you help me? Any advice will be very appreciated.
[1]
<%-- test Replication Status component. test Replication Status Component --%><% %><%@include file="/libs/foundation/global.jsp"%><% %><%@page session="false" %><% %><%@page import="org.apache.sling.api.resource.Resource"%><% %><%@page import="com.day.cq.replication.ReplicationStatus"%><% %><%@page import="javax.jcr.Session"%><% %><cq:defineObjects /><% // TODO add you code here //Session session = currentNode.getSession(); //Resource res = resourceResolver.getResource("/content/dam/test/Hydrangeas.jpg"); Resource res = resourceResolver.getResource("/content/dam/test/Lighthouse.jpg"); ReplicationStatus replicationStatus = res.adaptTo(ReplicationStatus.class); %><h1>test Replication Status component</h1> res.getPath() = <%=res.getPath()%><br/> res.getName() = <%=res.getName()%><br/> replicationStatus.isPending() = <%=replicationStatus.isPending()%><br/> replicationStatus.getLastReplicationAction() = <%=replicationStatus.getLastReplicationAction()%><br/>
Views
Replies
Total Likes
Hi smacdonald2008!
Have you been able to ask the last question to Eng. Team (about the 'isPending()' method)?
Could you help me, please? Any advise will be veru appreciated!
Thank you very much!
Views
Replies
Total Likes
With your code - you can never get a return value of true? I will pass this to the Eng team again.
Views
Replies
Total Likes
Are you using the right user session ? All damadmin uses same API & indicates status so should work. Try with admin session instead of user session & verify.
Views
Replies
Total Likes
@smacdonald2008: Correct: I never get a return value of true. This is a screenshot of the images referenced in the code:
[img]image1.png[/img]
As you could see, both images has pending activation. One of them is published, and the other is not published.
@Sham HC: I've made the tests with admin user, so I suppose the user session should not be the problem. Correct?
Thank you very much to both.
Views
Replies
Total Likes
I could not reproduce. File a daycare & get official help.
Views
Replies
Total Likes