Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
Devstatus
Statusdraft
Targetbeta1

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

Remember: a bookmark is just a special favorite stored under the /bookmark node.

Implementation

Storage

Basics
  • favorites will be stored in JCR (per user)
  • as users only operate on their own bookmarks favorites 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 favorites under /userName/favorites
    • store bookmarks under  bookmarks under /userName/favorites/bookmarks
Grouping

Bookmarks Favorites can be grouped in the ui - that's why we go for Bookmark favorite nodes and favorite group nodes

Bookmark nodes will

  • have node name =  title of the bookmarkfavorite
  • 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)mgnl:favorite

Group nodes will

  • have node name = group name
  • be of NodeType: mgnl:folder (see Open Issues)favoriteGroup
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

Assumptions

  • favoriteGroups can only contain favorites - no other favoriteGroups
    • that's how we'll implement it now, but we won't restrict on a jcr level

Visual design

Questions

  • store hostnam+port/web-app-context as well - might get outdated soon
    • alternatively we could strip that before storing and re-add when navigating there
  • NodeTypes to be used for bookmark nodes and bookmark groups?
    • we'll start as proposed above
  • can Bookmark groups only contain bookmark nodes or again groups (judging from current ui it should only be nodes)?
  • 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?