Object Oriented Enhancements to the Portal.

Goals:
Single Error handling code
Single assignment, validation code for major parameters

Files:

Portal::Base - provides Error handling code
Portal::Args - provides assignment, validation code for base Portal application parameters, derives from Portal::Base
Portal::App - provides assignment, validation code for base application parameters, derives from Portal::Base
Portal::AppState - provides assignment, validation code for application state modules, derives from Portal::Base
Portal::ObjArgs - provides assignment, validation code for base object parameters, derives from Portal::Base

Certain modules that do not need the capabilities that Portal::Args will provide will only derive from Portal::Base.  Examples are:  Portal::Application, Portal::Auth, Portal::Log, Portal::Methods, Portal::SessionHandler, etc.
Most Objects will also fit in this category.

Mainly the Portal apps will take advantage of Portal::App


Portal::Base
new(langObj)
  The Portal::Language module and any Portal apps Language modules will have to provide their own error handling code that has the same api as what the Portal::Base module will provide.  Reason:  If they go to instantiate Portal::Base to derive from it then we have a circular loop that requires a langObj passed in and they are the langObj!

    The langObj will be used to make all errors that the Portal::Base module generates be in the users language.

    Do we duplicate the html encoding methods from the HTMLObject module or instantiate/require an instance of the HTMLObject module for each instance of the Portal::Base module.  Instantiating/requiring the HTMLObject will be extremely expensive in memory and makes Object modules harder to work with.

    If the user doesn't specify a langObj, do we blow an error or just assume lang=en and instantiate it ourselves?  This will make imediate porting easier, but when someone does port to another language and we don't have all the modules passing in their langObj then they are going to get confused when they see errors in English.

    variables defined:



The following modules all derive from Portal::Base as their base.

Portal::Args
new(langObj, configObj, cookieObj, input, portalDB, logObj, browserType, browserVersion, browserMaker, methods, applicationObj, authObj)

    The Portal.pm needs to take portalDB - index.cgi needs to pass it in and authObj also.
    Desktop.pm and Help.pm need to take applicationObj and use it instead of instantiating it.

Portal::App
new(langObj, configObj, cookieObj, input, portalDB, browserType, browserVersion, browserMaker, methods, appObj, applicationObj, userObj, companyObj, portalSession, authObj)

Portal::AppState
new(langObj, configObj, cookieObj, input, dbHandle, logObj, browserType, browserVersion, browserMaker, methods, appObj, applicationObj, userObj, companyObj, portalSession, authObj, sessionObj)

Portal::ObjArgs
new(langObj)