The Profile System is designed to manage and store user preferences.
- Preferences can either apply to individual applications or be meant to be applied globally (e.g. a user might want all the histograms to be displayed in blue across all web applications) Do we really need global preferences?
- Global preferences can be overwritten at the application level
- Provide a simple Front End for users to modify their preferences
- Provide a developer Front End to add new preferences or modify existing ones
A preference has the following properties
- default value
- application to which it applies to (null if global?)
- type (Is this really needed?)
- allowed values (comma separated list?)
A database preferences table should be created with the above fields to store all the possible preferences. We also might need an application table with the list of all the possible applications and a type table? What are the possible types? String, int, double, Color, Date ... How is type checking done?
Developer Front End
Application developers can add new preferences, modify exising ones or simply view the list of exising ones via a simple Front End. This Front End should be accessible only to application developers. Need to create a new group in the Group Manager. Can all application administrators inherit from an "Admin" group?
The Developer Front End would access the preferences table and display the list of all the preferences dividing them by application. We might want to have a search box to filter either on the name or the description. Preferences can be added, removed, edited. Probably we should not allow to change the application value from one application to another, but we might want to allow changin it to global.
User Front End
The User Front End is a simple interface to allow users to modify their preferences. This Front End can be linked by applications that make use of the Profile System.
A user would be displayed with the subset of all the preferences that is applicable to a given application. The application can be selected via a drop down menu or all the applications can be selected. The list of applicable preferences is divided in global and application specific. For preferences with a limited set of allowed values a drop down menu is available, for string a text field (Would we provide a color chooser for colors?)
We need to find a user friendly way to overwrite global preferences. Olso we have to show that a given global preference is overwritten but a subset of applications.
To track users preferences we need a userpreferences table with the following fieds
- user foreign key (from the Group Manager)
- preference foreign key
- application (this is needed to overwrite global preferences)
How do we know which global preferences are used by a given web application? Do we need another table for this?
Do we really need global preferences?