Draft for beta1
second iteration...
Abstract
The UX concept for favorites contains a variety of uses cases for favorites. For beta1 we're aiming to implement the two most basic bookmark related ones. Also see the clickable prototype.
- store a bookmark to a user's favorites under a certain name
- navigate to a previously stored bookmark
Implementation
Storage
Basics
- favorites will be stored in JCR (per user)
- as users only operate on their own bookmarks we drop the user from the API but internally get it from the MgnlContext
- there's other user related information to be stored later so we
- create workspace profiles
- store bookmarks under /userName/favorites/bookmarks
Grouping
Bookmarks can be grouped in the ui - that's why we go for Bookmark nodes and group nodes
Bookmark nodes will
- have node name = title of the bookmark
- have url stored String property
- have icon stored String property
- be stored directly under the bookmark root (ungrouped) or under a bookmark group node
- be of NodeType: nt:base (see Open Issues)
Group nodes will
- have node name = group name
- be of NodeType: mgnl:folder (see Open Issues)
BookmarkStore
- getBookmarkRoot() -> returns root node hosting bookmark for current user
Packaging
- don't model a proper type - use normal jcr nodes
- ui will go into admincentral / shell apps
- make sure to use MVP pattern
Open Issues
- NodeTypes to be used for bookmark nodes and bookmark groups?
- favorite -> mgnl:favorite
- groups -> mgnl:favoriteGroup
- can Bookmark groups only contain bookmark nodes or again groups (judging from current ui it should only be nodes)?
- no
- when re-ordering etc. on client, how to persist
- as in HierarchicalJcrContainer: use NodeUtil.moveNodeXXX() methods
- simple persist the adapter structure (AbstractJcrNodeAdapter#getNode())??
- use ui forms
- no - too heavy
- no - too heavy
Overview
Content Tools