User Profile Data Organization

User Profile and Layout Use Cases

Two profiles share a layout

As of uPortal 3.2, a user may have two separate profiles that share a single layout. The default template user defines one mobile profile, and one desktop profile, both of which share a single default layout. The two profiles are associated with separate structures and themes, which ensures that the same layout is rendered differently on desktop and mobile devices.

Two profiles each use separate layouts

In the future, some institutions may want to define separate layouts for desktop and mobile devices. In addition to allowing for separate mobile content, this feature would enable uPortal to start providing layout editing on mobile devices.

Define a default tab

The default tab is currently represented as a structure parameter. The uPortal data model should support setting default parameters for a structure and overriding them with new defaults at the profile level.

Examples of other structure parameters include tab external IDs.

Allow users to override the default tab

In addition to setting structure-level defaults and overrides at the profile level, users should be able to set user-specific structure parameters. These parameters should be specified separately for each profile; for example, I might want to set a different default tab for my mobile and desktop profiles.

Define a default skin

The default skin is currently represented as a theme parameter. The uPortal data model should support settign default parameters for a theme and overriding them with new defaults at the profile level.

Allow users to set a skin preference

In addition to setting theme-level defaults and overrides at the profile level, users should be able to set user-specific theme parameters. These parameters should be specified separately for each profile; for example, I might want to set a different skin for my mobile and desktop profiles.

Data Objects

System-level

Theme and Structures

Themes and structures should each be system-level objects, as they are now. Both themes and structures should have system-level default parameters that can be overridden by individual users.

Structures - > default structure parameters
Themes -> default theme parameters

Profiles

As of uPortal 3.2, profiles are defined for system-level users (system and template users), then copied to create user profiles for individual users. We would like to stop creating profiles for individual users, and instead simply associate user profile preferences with a user and a system-level profile. This should simplify uPortal's data model and prevent unnecessary and messy data coyping.

A profile should have a unique fname-style identifier and reference the following system-level objects:

  • Structure
  • Theme
  • Profile-specific default structure parameters
  • Profile-specific default theme parameters
  • System-level layout

User-level

User-level objects should become a mechanism for overriding system-level defaults, rather than a bucket of duplicated data. Users will need individual layouts associated with system layouts and will need individual overrides for theme and structure parameters.

Each user will have two objects for holding profile-specific preference information, as follows:

Map<Profile, Map<String, String>> structureParameters;
Map<Profile, Map<String, String>> themeParameters;

This page does not yet describe updated plans for handling layouts