Color Scheme documentation

ColorScheme entries are constructed as follows:

Portal:(CSS string)CSS
Portal:(CSS string)fgColor
Portal:(CSS string)bgColor

Note:  If dealing with a different Portal app (say Accounting) then you would substitute Portal: with the app name:.
Ex:  App = 'Accounting', Accounting:(CSS string)CSS, etc.

Note: CSS entries should not specify the foreground and/or background properties as they will be added on by the Portal code and will use the values associated with the CSS entries fgColor and bgColor values.  
Ex:  Portal:(a:link)CSS would add "color: Portal:(a:link)fgColor; background-color: Portal:(a:link)bgColor;" to the Portal:(a:link)CSS string, where Portal:(a:link)fgColor and Portal:(a:link)bgColor are the values of the named entries.

The output algorithm finds all CSS entries that exist with the correct prefix and then generate the complete string by looking up the fgColor and bgColor values for the specified CSS entry. 

If working with an app other than Portal, display all Portal entries first.  For each portal entry, see if the app has specified a value.  If they did, then work with it and don't display the Portal version.  If they didn't, display the Portal version. Need to keep track of those Portal App entries already generated so we don't duplicate them.

Install Updates:  When an app installs itself into the Portal (registers itself, etc.) and it wants to define colorScheme entries, it needs to use the {create|update}ColorScheme methods from the Application module and provide the colorScheme object it wants to make.  It must provide a CSS, fgColor, bgColor combo for every css entry it wants defined or overloaded.  This method will then load all colorScheme entries in the colorScheme_tb table and for all System entries (-1) it will make sure the entries exist.  If an entry already existed, we then update the value associated with it.  For all user entries we only make sure that any non-existant entries are added.  We leave the values alone for any that already existed so that the user can keep their customizations.

Update
- instead of passing a hash, we specify an xml ColorScheme file.  Any entries that begin with a - are removed from all colorschemes they are found in.  Otherwise all entries are the same as before.  Also, the Portal will have it's color schemes specified using the colorSchemeInstall.pl script.  This means that the database no longer has to have the colorScheme_tb pre-populated.  We need to create another portal helper script who's sole purpose is to install color schemes, this app is colorSchemeInstall.pl.  The color scheme xml file should be in install/colorSchemes/colorSchemeName.xml.  Where colorSchemeName.xml is the name of the colorScheme being defined (Default, Blue, Green, etc.).  It is up to the installer to walk over all files in the install/AppName/colorSchemes directory (after the files are installed in the web tree) and process them.

If an app wants to totally remove a colorScheme, then they should use the deleteColorScheme(colorScheme) method which takes the name of the colorScheme to remove from the colorScheme_tb table.  The app should then remove it from it's install/colorScheme directory so that it is not added back in the next time the app is upgraded or re-installed.

ColorScheme Editor Notes:  The editor should group all Portal entries together (sorted) and then each app that has entries that the user has assigned to them after it.  Hopefully they will all sort in the same order.

Extra Notes:  We do not delete entries for an app that is un-installed or un-assigned from a user so that when the app is re-installed or re-assigned the previous settings are already there and the user does not have to re-customize the apps colorscheme entries.

Links:

Normal
Portal:(a:link)fgColor
Portal:(a:link)bgColor
Portal:(a:link)CSS
Portal:(a:active)fgColor
Portal:(a:active)bgColor
Portal:(a:active)CSS
Portal:(a:visited)fgColor
Portal:(a:visited)bgColor
Portal:(a:visited)CSS
Portal:(a:hover)fgColor
Portal:(a:hover)bgColor
Portal:(a:hover)CSS

Menu
Portal:(a.menu:link)fgColor
Portal:(a.menu:link)bgColor
Portal:(a.menu:link)CSS
Portal:(a.menu:active)fgColor
Portal:(a.menu:active)bgColor
Portal:(a.menu:active)CSS
Portal:(a.menu:visited)fgColor
Portal:(a.menu:visited)bgColor
Portal:(a.menu:visited)CSS
Portal:(a.menu:hover)fgColor
Portal:(a.menu:hover)bgColor
Portal:(a.menu:hover)CSS

Desktop Icons
Portal:(a.icon:link)fgColor
Portal:(a.icon:link)bgColor
Portal:(a.icon:link)CSS
Portal:(a.icon:active)fgColor
Portal:(a.icon:active)bgColor
Portal:(a.icon:active)CSS
Portal:(a.icon:visited)fgColor
Portal:(a.icon:visited)bgColor
Portal:(a.icon:visited)CSS
Portal:(a.icon:hover)fgColor
Portal:(a.icon:hover)bgColor
Portal:(a.icon:hover)CSS

Help
Portal:(a.help:link)fgColor
Portal:(a.help:link)bgColor
Portal:(a.help:link)CSS
Portal:(a.help:active)fgColor
Portal:(a.help:active)bgColor
Portal:(a.help:active)CSS
Portal:(a.help:visited)fgColor
Portal:(a.help:visited)bgColor
Portal:(a.help:visited)CSS
Portal:(a.help:hover)fgColor
Portal:(a.help:hover)bgColor
Portal:(a.help:hover)CSS

Form Items:

Portal:(input)fgColor
Portal:(input)bgColor
Portal:(input)CSS
Portal:(input:hover)fgColor
Portal:(input:hover)bgColor
Portal:(input:hover)CSS
Portal:(input:focus)fgColor
Portal:(input:focus)bgColor
Portal:(input:focus)CSS
Portal:(input:hover:focus)fgColor
Portal:(input:hover:focus)bgColor
Portal:(input:hover:focus)CSS

Portal:(select)fgColor
Portal:(select)bgColor
Portal:(select)CSS
Portal:(select:hover)fgColor
Portal:(select:hover)bgColor
Portal:(select:hover)CSS
Portal:(select:focus)fgColor
Portal:(select:focus)bgColor
Portal:(select:focus)CSS
Portal:(select:hover:focus)fgColor
Portal:(select:hover:focus)bgColor
Portal:(select:hover:focus)CSS

Portal:(textarea)fgColor
Portal:(textarea)bgColor
Portal:(textarea)CSS
Portal:(textarea:hover)fgColor
Portal:(textarea:hover)bgColor
Portal:(textarea:hover)CSS
Portal:(textarea:focus)fgColor
Portal:(textarea:focus)bgColor
Portal:(textarea:focus)CSS
Portal:(textarea:hover:focus)fgColor
Portal:(textarea:hover:focus)bgColor
Portal:(textarea:hover:focus)CSS

Portal:(button)fgColor
Portal:(button)bgColor
Portal:(button)CSS
Portal:(button:hover)fgColor
Portal:(button:hover)bgColor
Portal:(button:hover)CSS
Portal:(button:focus)fgColor
Portal:(button:focus)bgColor
Portal:(button:focus)CSS
Portal:(button:hover:focus)fgColor
Portal:(button:hover:focus)bgColor
Portal:(button:hover:focus)CSS

Global Defaults:

Portal:(body)fgColor
Portal:(body)bgColor
Portal:(body)CSS
Portal:(.error)fgColor
Portal:(.error)bgColor
Portal:(.error)CSS
Portal:(.error)TextfgColor
Portal:(.error)TextbgColor
Portal:(.error)TextCSS
Portal:(.status)fgColor
Portal:(.status)bgColor
Portal:(.status)CSS
Portal:(.status)TextfgColor
Portal:(.status)TextbgColor
Portal:(.status)TextCSS

Figure out what we want to do in regards to fonts!
fontName
fontSize

Login Screen:

Portal:(.login)fgColor       
Portal:(.login)bgColor
Portal:(.login)CSS

Menubars:

Portal:(.menu)fgColor
Portal:(.menu)bgColor
Portal:(.menu)CSS
Portal:(.menuHilight)fgColor
Portal:(.menuHilight)bgColor
Portal:(.menuHilight)CSS

Desktop:

Portal:(.cell)fgColor
Portal:(.cell)bgColor
Portal:(.cell)CSS
Portal:(.cellTitle)fgColor
Portal:(.cellTitle)bgColor
Portal:(.cellTitle)CSS

Help:

Portal:(.helpTopic)fgColor
Portal:(.helpTopic)bgColor
Portal:(.helpTopic)CSS