We still haven't settled on how we are going to generate navigations in J2. I have some modifications to the Profiler and to the theme logic which may give us some direction. I am bringing this up as I have been privellage to quite a few vendor portal demos lately allowing me to see both the good and the bad of multiple implementations.
- I would say we replace the getDesktop() with getFolders(). There is really no need for a "root" item or Folder per se since we will be leaving this job to the current set of profilling rules that have been assigned to the Profiler.
- Folders will contain any number of pages and/or folders.
- Folder items would be ordered the following way: first by assigned index then by alphabetical order.
- Remove defaultPage logic from Folder, the focused Folder item would be set in this fashion: set the focus to the last selected child in that Folder then by Folder Item ordering algothrim defined above.
- It should be the Profiler's responsibility to preserve a user's active item on a per Folder basis.
- A Folder would still posses the defaultTheme capabillity but with the added abillity to enforce the defaultTheme on its childern and its childrens' children by overriding the theme settings for those items with its own.
- Rendering the contents of the Profiler.getFolders() would be left entirely up to the theme (currently called the layout decorator). Example: a theme could render the first 2 levels as tabs and the rest as a hierarchical menu to the left of the layout area.
- DO NOT introduce the idea of controls and controllers. It has been stated before that these easily confuse people and I agree 100%. We need to keep things simple.
I think the first profiling/navgation implementation would be assigning n number of roles to a top-level folder. Then allow the Profiler to aggregate what Folders a user has access to by comparing the roles that user is assigned to the ones required the Folders required roles (ACL?) I think this approach is already somewhat in place but it just needs some final implementation details.