phpProject Management - v0.1.1b *WARNING BETA CODE*

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# This application and associated scripts are licensed under the  #
# GNU Public License For more information on this license see:    #
# http://www.gnu.org/copyleft/gpl.html                            #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

This application was built upon the framework started by O.M. Jenkins
(omjenkins@yahoo.com) and submitted to FreshMeat. I needed a way to keep track
of the simple development projects I'd quoted, allow for me and other
programmers to submit updates of hours worked and status, and track if a
particular project was ready to be billed. This is a working framework of that
application. I plan to develop more as I find holes in the features, but for
now this should provide enough structure to allow for some immediate benefit. 

If you are interested in submitting fixes/enhancements, please be sure to
comment your changes. It makes it easier to merge.

BETA WARNING:
This is a test release to see what kind of problems people have with the menu
system and the new authentication stuff. If you are planning on using this as
a critical tool, you might want to play with this an wait a few weeks until
I release the final update. I think I am done mucking with the DB structure
for now, so feel free to pop data in it without worrying about the final
release. If you have requirements outside the scope of the work I've done so
far, drop me a line for a quote to include your features.

REQUIREMENTS:
You will need PHP with GD/Gif support. I have been struggling getting the
PNG support compiled into my version of PHP, so the PNG version of this
app will have to be a roll your own solution. The menu system uses two blank
button gifs, one normal and one rolled over, to float the menu text over
before sending it to the browser. This is the same code used for the menus on
the AWTREY.COM site.

You will need access to a MySQL database. I use MySQL primarily because it is
provided as a free DB on my webhost provider, but I have found it fast and very
simple to use and work with. Many people claim that without transaction
support, MySQL is not a solid platform for critical data. When you need those
features for data that critical you can afford to buy Oracle or Sybase or DB2.
This application is not complex enough in my opinion for those concerns to be
entirely valid in this case. That being said, it is always a good idea to dump
and backup your MySQL database regularly. This is especially true with project
information like this application will track. For more information see:
'man mysqldump'.

INSTALLATION:

To install this app, use your favorite MySQL management program to create a
database and import the .sql files in the sql/ directory to create the table
structure. Once that is done, update the db.inc in the include/ directory to
reflect the host/user/password/database you are using and fire up the browser.
If you have any problems with it, drop me an email so I can patch and update
the version I'm handing out. Enjoy!

UPGRADE:

If you are already using v0.1.0 of this application and want to preserve the
data you have already collected, here are the changes in the database
structure and the SQL statements to alter the existing tables.

Table:  projects
Change: Added a new field for tracking customer id.
SQL:
ALTER TABLE projects ADD proj_cust int(11);

Table: owners
Change: Added authentication for updating / deleting projects updates.
SQL:
ALTER TABLE owners ADD owner_username varchar(30) NOT NULL,
ALTER TABLE owners ADD owner_password varchar(30) NOT NULL,

Table: updates
Change: Increased limit on hours in an update
SQL:
ALTER TABLE updates MODIFY up_hours dec(12,2),

The other two tables (customers.sql and todos.sql) are new and can be
populated independently. The first thing you should do is add a username
and password into the 'owners' table. Next, you should add the contacts for
the existing projects and go to the project edit page to tie the existing
projects to particular customers. Once that is done, the app should be able to
be used normally.

SECURITY:

I have not decided how to authenticate the owner manager page yet, so all the
authentication in the other parts of the app are defeated by the fact that
anyone can go change the existing passwords. Use htaccess for now, but I'll
keep poking around with another fix in the future.

CUSTOMIZATION:

You can customize the look and colors of the application very simply. The
layout is handled through the inclusion of headers and footers that separate
the content from the layout. If you want to change the logo or the menu buttons
the files are:

common/button1.gif: 125 x 25 - rollover button (normal)
common/button2.gif: 125 x 25 - rollover button (rolled over)
common/logo.gif:    226 x 50 - logo in upper left corner

Changing the size of the side buttons will require looking at:

include/menu.inc

The sizes are hard coded in the include, but some day I will write an automated
way of handling it.

Colors on the <H{1,2,3,4,5}> tags is handled in the style sheet. It looks like
it does to cover the bugs in Netscape's broken CSS implementation. Basically,
BODY does not inherit through tables, so you have to re-specify the font
characteristics for the TABLE, TH, and TD tags. I have actually forgotten
the reasons for doing some of the things I have done, but it works on both
Netscape and IE browsers now and I don't change it much just out of habit.
Keep a copy to go back to in case things start looking weird in the app.

Tony

Anthony Awtrey Consulting
http://www.awtrey.com/
tony@awtrey.com
