Smart Folders currently provide access to physical content within a virtualised ("smart") context that is typically pre-configured by a business admin.
It is possible to have physical folders appear within a smart folder hierarchy however the current design is such that the first-level is virtualised but any subsequent sub-folders and context are returned with their actual physical locations.
It should be noted that the physical folder itself may be subject to a different smart folder template. This implies that a different smart folder context applies from that point in the hierarchy =>
Multiple Virtual Folder Templates at the same time: child of a smart folder is a physical folder that executes another template
Otherwise, for sub-folders, the client could/should currently switch to the actual physical location. However, existing clients provide a mixed UX currently:
- CMIS workbench will navigate to the physical location
- Share provides a slightly inconsistent UX (see
- WebDAV via CyberDuck allows navigation to continue down the hierarchy
Proposed New Behaviour
The idea here (to be reviewed with product management & validated with customers) is that we could allow the physical folders to be navigated within the virtualised context.
This means that the APIs would return so-called virtual ids (and virtual paths) such that clients can continue to navigate/browse down the physical hierarchy but remain within the context of the ancestor smart folder(s).
It should be noted that: if using Sites then this could be within the same Site or could be across Sites (see
- ensure that the virtual id can scale to a deep physical folder hierarchy
- ensure that the virtual id is not dependent on the parent of the physical folder (or content within) to allow moves within the sub-hierarchy
Suggested stories (to be refined)
- Story 1: Design & Implement virtual ids for physical folders & files (that does not statically depend on parent hierarchy). Includes tasks to add unit tests.
- Story 2: Update list methods for VirtualFileFolderServiceExtension. Includes tasks to add tests/verify via CMIS, V1 REST APIs, Share etc.
- Story 3: Update list methods for VirtualNodeServiceExtension. Includes tasks to add tests/ verify via Node Browser, etc.