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)