11-09-2016 05:17 AM
Hello everyone,
I am struggling with implementation of a filter which would display only specific nodes under a folder.
Let's be more specific: I have custom type with property called status. This property can have values such as Draft, In Review, Approved, ... It is set by constraints by the content model. Then I will go to folder ABC under a site and my goal is to create an action in Share that would display only Approved files under the folder ABC.
At first, I checked Options -> Hide/Show Folders functionality. If I understand that well, it works in following way:
So far, I created an extension module which adds my custom filter buttons under Options tab. Then I extended default Alfresco.DocumentList by a new one in my custom JS so I am able to react on clicked custom filter. And here I stopped because I did not find any easy way how to extend it for my custom property.
Maybe, I could create a new DataUrlResolver or totally a new logic which would requite changes in custom JS, similar Share webscript as "surf-doclist.get.js" and finally Alfresco webscript (similar to "slingshot/doclib2/doclist") to return only relevant nodes.
Another solution, which can be consider as "nasty hack" can be to extend surf-doclist.lib.js and do changes directly in model.json. So it would remove not needed nodes as a post processing method.
By the way, I tried to extend filters on left side (similar to All documents, I'm Editing, ...) but they will filter out everything for a whole site, not only for a specific folder.
Do you know what is a correct approach to create such filters?
PS: I am using 5.1.
Thank you for comments,
Filip
11-09-2016 05:20 AM
When you are using Alfresco 5.1 you may want to check out the "Smart Folders" feature. This allows you to define virtual folders that use search-based operations to determine which elements should be displayed. That could allow you to filter nodes in the Share view without having to customize any webscripts / UI components. It also allows you to provide different kinds of views with different filter logic instead of forcing all views to use the same logic from the backend.
11-09-2016 09:15 AM
Hi Axel,
Thank you, that's definitely good idea.
Since I would need to use it in all sites and maybe even in some other folders under repository. Should I be afraid of any performance issues in case I use it in almost whole repository?
So far I set it by "smart.folders.config.type.templates.qname.filter=cm:folder" with smart folder template "cm_folder.json":
{
"name": "Smart Folders Example",
"nodes": [{
"id": "1",
"name": "Approved",
"description": "Approved nodes",
"search": {
"language": "fts-alfresco",
"query": "(PATH:'%ACTUAL_PATH%/*') AND (TYPE:'tieto:type') AND (=tieto:status:'Approved')"
}
}]
}
Maybe it will help someone how to set it.
Br,
Filip
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.