PCX Portal - Changelog
- Improving the error output such that setError() will now create and prefix
all error strings it is passed with the callers function name and the
'() - Error!\n<br>' phrase internationalized.
- Adding postfixError() and prefixError() to allow you to add error strings
to a current errorString at the beginning or end of the current error.
- Added the resetError() method to reset the error condition.
- Language phrase files are now named by the code of the language not the
full name. Ex: English.pm -> en.pm
- Improved the error display code in the Language Phrase files.
- AUTOLOAD now outputs the caller trace when $self is not an object.
- createBaseURL now outputs the AppName when type = 'App'.
- Added support for a misc directory under the portal webspace.
- Fixed some install bugs in the install.pl script in regards to the cut
command and linking to the cron jobs forgot the /usr/lib/pcx_portal prefix.
- Redid the colorScheme CSS definition to actually be real CSS and all I do
is make sure they get output in the right order.
- Added apache config files for Debian and RedHat which will make getting the
Portal up and running under Apache much nicer. They are in
/etc/pcx_portal/apache and the rpm installer tries to add it to the RedHat
config file automatically.
- Created apache.pcxportal which is the apache config file that setups /portal
to be under /usr/share/pcx_portal/portal which is where we want things
installed to now.
- fixed the pg_db_*.exp expect scripts so that they force a password prompt.
functions that work with form items in a generic way. They don't need to
know which form they are working with, etc.
- Added generatePickerCode() to the Methods.pm module to allow creating the
necessary form items in a cleaner way for color and calendar pickers.
- Added the getCurrentDate() method to Portal::Methods.
- I now use Date::Manip and Time::Local to work with dates. Added several
other date methods to get dates, add offsets to dates, etc. which wrap
around the Date::Manip, Time::Local and gmtime, localtime methods.
- All dates in the Portal are now ISO. The Portal DB is no longer setting
the use US Date format when using PostgreSQL.
- Removed all uses of /bin/date from the Portal itself. Other Portal apps
may still need to be worked on (XIWA in particular).
- Improved the setupDB.pl script after JT bugged me and provided the
beginnings of the enhancement code. PostgreSQL support has been greatly
enhanced so that checks are made and you are only informed of those things
that need to be done. The portal user is attempted to be created
automatically and it's password set. If this fails, then you will have to
manually create still, but this is better. MySQL support will come in the
future. (hint: patches welcome) The pg_hba.conf file can be edited by the
script, but it only supports localhost (127.0.0.1) connections.
- Added the db_host fields to the app_tb, app_servers_tb and company_app_tb
tables so that the applications can connect to their databases on different
IP's than the web part is running on. This causes the database version to
change from 2 to 3.
- Updated the appinstall.pl script so that it asks the user to specify the
dbHost value when assigning the app to a company. This way each company
can have their databases on different servers than the app overall instead
of the old way of assuming the database was on the same box as the app.
- Implemented the user lockout feature to prevent an attacker from trying to
brute force a username/password.
- Moved the config_tb helpers to Portal::Methods and added the necessary
helper methods for the User Lockout feature to Portal::Methods.
- Added the ability to specify extra error details for missing and invalid
entries. See the Portal::Base manpage for more details.
- urlBuilder now requires the baseUrl parameter so that I can return a
complete url with the baseUrl?arguments all put together.
- Massive work on Portal::App so that the derived Portal Apps don't have to
do any of the session setup, database connections, etc. The run() method
is now provided by Portal::App and has been designed to make sure
user permissions are checked as early as possible and the derived app still
has the flexibility to do extra things before and after the specified
state/command is sourced and run. Xiwa is the only app currently using this
ability, but other apps may/should be using it in the future.
- Updated Portal::AppState to implement the States run() method and provide
the closeApp code via processCloseAppEvent().
Added setupCSS() method to handle creating an HTMLObject::Normal doc and
getting the current colorScheme for the user and adding it to the $doc
instance. Added a call to includeCoreJSFiles() in setupCSS() also.
- Debianized! We are no longer maintaining RedHat rpms as we don't use
RedHat Linux anymore.
- Renamed the AppArgs.pm -> App.pm and AppStateArgs.pm -> AppState.pm.
- Added documentation defining what are reserved names in the Portal::
- Fixing the expect scripts that allow me to dump, create and import databases in the system so that they run under apache.
- Updated the configuration file and setup.pl scripts to ask the administrator for the database admin user/password so that install scripts can run stuff as postgres or root when needed.
- Implement the Force Authentication if the user tries to access parts of the Portal when not logged in.
- Added the dbCreate, dbDump, dbImport methods to the Methods module.
- Making the Portal more OO by making Portal::Base, Portal::Args, Portal::AppArgs and Portal::AppStateArgs modules that all Portal modules/applications should derive from to have a consistent interface and error handling implementation.
- Fixing up the SQL statements so that they work in PostgreSQL 7.2.
- Adding XML Config file modules and converting to using config files named
after the Portal module (Portal Config.pm => Portal.xml, etc.)
- The cookieDomain can now be a host name or a domain.
- Added webUser/webGroup config variables so directories and files can be set
by us to be owned by the webserver instead of relying on the user to do it.
- Updated the database files with the changes that needed to be made.
- Made the sql update files which will update a database at version 1 to 2.
- Moved the database sql create/upgrade files into the webRoot/install/Portal
directory so that there is an easier location to find files and so in the
future we might be able to provide a web-based database upgrade path.
- Made a top level install.sh script to help automate the install process.
This script can not be included in the MANIFEST file as the make install
step bombs while trying to cat it to install?
- All cron scripts should now be placed in /usr/lib/pcx_portal/cron/APP/X
where APP = Portal or the name of the Portal app (ex. Accounting) and X is
hourly, daily, weekly, or monthly. The install_app.pl script will create
symlinks from the script into the /etc/cron.daily, etc. folders. This way
the user can stop a cron job from running but still have the script
available for later.
- Updated the Copyright info and changed our name from
PC & Web Xperience, Inc. to just Xperience, Inc.
- Added the app_lock_tb to the database definition so we can keep track of
apps that are locked out for all users, specified users or all users of a
specified company. The only user let in to that app is the administrator
that locked the app.
- Added the Lock App methods to the Application module to allow the admin
users to lock Apps in the Portal.
- Updated and implemented the Dynamic Content display code. Added the
ability to specify the preferences that define the Dynamic Content interface
via the UserProperties app.
- Updated install_app.pl to properly handle the cron job file installation
code. It is first tested by XIWA.
- Added Methods module which will provide common methods to do consitent
look and feel for all Portal Apps. This provides a common menu creation
URL creation for Portal or App urls.
- Portal::Methods will now be passed into every app spawned in index.cgi as
methods. It is upto each app writer to make sure this is checked for in
each module of their app as it is now the preferred way for URL's to be
created, menus displayed, etc. See the man page for Portal::Methods for
a list of available methods. See the latest Template App project for an
example of how to use the new methods.
- colorSchemes are now defined as xml documents in install/colorSchemes
and will be installed into install/App/colorSchemes which is where the
colorSchemeInstall.pl script will look for them.
- developed the colorSchemeInstall.pl script to handle importing colorSchemes
into the Portal.
- Updated the Portal to use the Portal::Methods::portalDBSetup method for
instantiating portal and billing database objects.
- Added a map method to the Language module so that we can do some error
handling when outputting language phrases. Converted the Portal to use.
- Implemented the displayMenu method and updated the Desktop and Help modules
to use it.
- Fixed the setupDB.pl script so it no longer blows out errors about the
Portal Database when working with the Billing Database.
- Fixed up the MySQL database structures. Apparently index is a reserved
word for them but not for PostgreSQL. Also had to convert \012 to \n so the
xml was properly being inserted.
documenting how to use them in the Portal_JS_Scripts.html file that is in
the docs directory in cvs. This will be on the website.
- Updated the versions of packages we are looking for and made the spec file
be aware of the new package names for the Crypt modules.
- Fixing the Log.pm issues with PostgreSQL 7.2 database changes.
- Updated Help.pm to display an Overview for a Menu. If defining a sub menu
of help items, just add an _overview_ entry and that will be displayed at
the top of the list before all menu items for that sub menu.
- Fixed the handling of Other webRoot locations in setup.pl when editing data.
- Added the passThrough support. If you specify the appToRun and appToRunArgs
values and the app is assigned to you and the appToRunArgs has command and
state values then a window will be opened and the desired URL run to launch
the app and try to make it do whatever you want.
- Added Browser Capability detection code. The results are stored in the
portalSession in a browserCap hash. See the documentation for more details.
- Started working on Dynamic Content on the Desktop support. Implementation
has been reworked and will not be done till 0.2.xx since database changes
must be made.
- Made the Desktop use the BrowserCapabilities check to determine which
- Made the setupDB.pl script in /usr/lib/pcx_portal which will help the user
get the portal and billing databases created for the Portal.
- Added missing use statements for the UserRightObject and
UserPreferenceObject Objects in Auth.pm.
- Fixed the check for app in createUserRight.
- Fleshed out assignUserRight, deleteUserRight, deleteAllUserRights,
updateUserRight, assignAllUserRights, unassignAllUserRights,
getUserPreferenceInfo, isUserRightAssigned methods.
- Added isAppAssignedToCompany and isAppAssignedToUser methods in the
- Modified Auth.pm to allow the billingDB to be optional and only check for it
when calling a Billing related method. The next major change needs to be
to add validity checks against the current user to make sure they can
create, edit, delete user/company/billing info and not just allow anyone to
get at the info like it currently allows.
- Updated index.cgi to pass in an authObj which should have the correct
session info in it based upon where it was called from. This way I don't
have to keep instantiating authObj's everywhere.
- Fixed the rpm .spec file to point install.pl to the rpm build tree instead
of looking in the real perl tree.
- Updated the config file version to 0.4. cookieDebug is now configurable.
- Added session validation code to index.cgi.
- Updated to use DBIWrapper 0.15 which helps fix some error messages coming
out of XIWA (ledger.cgi).
- Updated isValid checking code to be simpler and cleaner.
- Added TODO file to the distro.
- Updated getListOfCompanies in the Auth Module to handle the parent / child relationship that companies now have. You can select a list of companies that have a certain parent_id value (-1 = parent, X > -1 = child)
- The Desktop now looks for the application icon in portal/images/App/...
- Added the helpDefined value to the Config.pm config file
- Moving the bulk of the install.pl and appinstall.pl scripts into the portal library directory and made them take (via command line arguments) the values that the application is wanting to use to actually do the work for them. These scripts will be called from a wrapper script that the application provides so that we have consistent installation code but also allow the application creator to do extra work if needed during the install steps
- Updated the version of the config file to 0.3
- Creating the User Rights and Preferences data Objects Modules
- Adding the methods to the Auth module to work with User Rights and Preferences
- Made the setup.pl script make sure the new non editable items in version 0.2 of the config file make it into a config file we are upgrading from version 0.1
- Started a user rights test script (rights_test.pl)
- Fixed the over zealous deletion of session info by Who->deleteWhoEntry when the Portal is going to log you out. It is now optional to delete all the session info (since the Portal will have already gotten rid of them by the time deleteWhoEntry is called)
- Updated the cron job session cleanup script to use the new removeSession option so that it's new behaviour is still done
- Moved all support scripts (that need to be used after the Portal is installed) into the scripts directory and updated install.pl to look for them there
- Finished the Branding of the Portal support. Started implementing the Dynamic Application content on the Desktop support. Made the company info also include the Company Code on the Desktop
- Updated Portal Documentation
- Continuing to implement the Replication Support (Auth, Application modules done)
- Further updates to logging code in Application and Auth modules
- Fixed Who->deleteWhoEntry where it wasn't actually removing the session that had expired but just the who_tb table entry. It now removes the session and any application sessions that were created by it and are now orphaned
- Added create_company.pl script to allow more companies to be created till the CompanyAdmin application is created
- Updating database to support replication, company_tb changes, user rights and preferences
- Started cleaning up the HTML being generated and used phrases as much as possible so that all content is generated in the language of the user. Errors may still be only in English though
- Added logging code to Auth and Application modules
- First public release of the code
- Changed version to be major.db.code
- Moved main configuration settings to /etc/pcx_portal/...
- Made setup.pl modify config file in /etc/pcx_portal/Config.pm
- Made all instances of Portal::Data::Config->new be wrapped in eval statements to catch any errors working with the config file
- The tarball is now named pcx_portal_ instead of just portal_ for clarification purposes
- Built rpm distribution