1) "unzipping" the '.zip' file
2) extracting or copying the files to a Web accessible folder
3) connecting to the Access (.mdb) or SQL server database
For Access
- unzip the .zip file to a Web shared (alias or virtual created via IIS) folder
- make sure the '/data' folder is write accesible to the IUSR_MACHINE account
- make sure the database connection paths (cn.Open, user_cn,Open) in 'i_utils' are valid paths to the database
The most common reason for problems is that the Internet Guest account (IUSR_MACHINE) does not have 'Write' permissions
on the database file (.mdb). To fix this problem, use the Security tab in Windows Explorer to adjust the properties for this file so that the Internet Guest account has the correct permissions. When using Microsoft Access databases with ADO, it is also necessary to give the Internet Guest account Write permissions on the directory containing the .mdb file. This is because Jet creates an .ldb file to handle database locking. You may also need to give read/write permission on the Temp folder because Jet may create temporary files in this directory.
For security reasons, it is recommended to change the default admin account password (admin) via 'admin_users.asp'
To change the password, email address, or any other account fields, click the [edit] link in the row for username 'admin'.
Database Schema
Database Tables:
pm_Projects, pmTasks, pm* - These tables are used to enable the project and task management features.
Users - This table is used to manage all "registered" users and for login validation. The "user_id" field also relates the user to data stored in the
'Links', 'Content', 'Classifieds', 'Disc_Forums', 'Disc_Topics', 'Disc_Replies', 'MessageRecipients', 'Messages', 'Surveys', 'Events' and 'Auctions'. Using the "user_id" any data that is posted by
or intended for any given user can be tracked.
UserLinks - This table is used to track and manage a user's favorite links.
NOTE: Other tables may exist that are not used by this version of the application
Your own custom design can also be applied by editing the 'i_header.asp' and 'i_footer.asp' HTML files that create a "wrapper" around the page content.
Most fonts and colors used throughout the application are defined in the default.css file. You can change the style by modifying the values in the default.css, or reference a different
.css file in 'i_header.asp'. Several other example other style sheets are provided(default1.css, default2.css, etc..). The code that references the .css file is in the section of 'i_header.asp'
The application home page (default.asp), is the most common page that clients and developers wish to modify. You may
want to change the layout, or display different database-driven content. Familiarity with HTML, ASP, VBScript, and database
design is useful when undertaking this task. To modify the home page (or any other page),
simply open the page in any standard text or HTML editor. Modify 'i_menu.asp' to change the navigation throughout the site.
If you would like to modify other application pages, consider the following page architecture that is
used consistently throughout all pages in the application.
-- The 'i_utils.asp' file (database and login functions library) is included at the top of every page.
-- Variables are declared (dim)
-- The "request_" and "validate_" subroutines
-- The "db_" subroutines
-- Key database fields are requested
-- The action variable is requested and handled using the "select case action" statement
You may also want to create different levels of security in your application, where only certain users
can access certain pages. Out of the box, the application has 3 levels of access:
accesslevel = null or 0 -- anonymous users that are not logged in
accesslevel = 1 -- (member) these users can view project and some task data but cannot modify it. This level is suitable for client access.
accesslevel = 2 -- (editor) these users can view projects and edit tasks data. This level is suitable for uses that will be completing and updating tasks (designer, developer, production staff).
accesslevel = 3 -- (admin) these users can edit project, project members and task data, and can also access some of the 'admin_' pages. This level is suitable for management and any staff that needs edit project and task data.
accesslevel = 4 -- (super admin) these users can access all of areas, including user and file management.
When a user logs in, the session 'user_id' and 'accesslevel' variables are set. For example, the following code
could be used to display a section only to users with an accesslevel of 2 or greater...
<% if session("accesslevel") >= 2 then %>
response.write "you are seeing this because you're logged in with an access level of at least 2"
<% end if %>
To set an access level for an entire page, just modify the check_security statement at the
top of the page...
<% check_security(n) %>
''' (where n is the value(1,2,3,4..) of the accesslevel field in the Users database table)
- Adding users: Login to the admin area using the default admin account (usr: admin, pwd: admin).
Goto user administration ('admin_users.asp'), comlete the add user form, and click the 'Add User' button. Specify access level of 1 for basic users.
Specify access level of 2 (or greater) for application administrators and forum moderators. Users can also be added
via the 'register.asp' page. This page is set to create basic users that will be added with an accesslevel of 1.
User data is stored in the 'Users' table of the application database.
- Logging in: 'login.asp' is used to prompt users for their username and password.
When a user requests a security enabled page (check_security function) an permission level is obtained by
referencing the current session 'user_id' and 'accesslevel' variables. If these session
variables have not been set, the user is redirected to login.asp and prompted to login
using their username and password credentials. The 'login.asp' also enables users to lookup a
lost password. The user specifies their email address, and it is referenced in the 'Users' table.
If a matching email address is found, the related password is emailed to the specified email address.
As described above, there may be situations where no user_name or password exist, but an email address does.
If a user attempts to lookup a password for an account with a non-existent user_name, they will be
redirected to the registration form (register.asp). To find out more about the user email notification
features click here.
Once logged in, users can view and manage their own profile via 'user_profile.asp' and 'upd_user.asp'. The 'user_profile.asp' page
also lets users view and compose internal messages, and view their favorite links, active discussions, and any links or content
they have submitted.
Using Windows authentication (NT, Windows 2000 and XP networks) -- optional:
3 files are included that let you authenticate users on your Web server's local network. The 'Users'
table in the application database is still used to manage and track the site users, but use of the 'nt_' files
will first authenticiate the user on your local network and add them to the 'Users' table in the application
database.
nt_login.asp - authenticates Windows users and manages login.
nt_ins_user.asp - creates an account in the app database (Users table) for a specified Windows user.
nt_upd_user.asp - updates an account in the app database (Users table) for a specified Windows user.
To enable Windows authentication for your site:
Rename the 'nt_login.asp' file to 'login.asp' so that it becomes the login page.
How it works:
Once you have renamed the nt_login.asp page, site users will be authenticated on your local network. When a user
requests a security enabled page (check_security function) a permission level is obtained by referencing the
current session 'user_id' and 'accesslevel' variables. If these session variables have not been set, the user is
redirected to login.asp and prompted to login to the Windows network. The "WWW-Authenticate" HTTP Header (NTLM)
response is sent to the browser and the user logs in using their Windows credentials.
Once the user is validated as a user on the Windows network, the login page (nt_login.asp) will query the 'Users' table
in the application database to assure that the user_name and password used match a record in the 'Users' table.
If a matching username and password is found:
The user has previously visited the site and thus has a record in the 'Users' table. The values of the user_id and accesslevel
are stored in session variables, and the user is "logged-in".
If a matching username but mismatched password is found:
The user has previously visited the site and a record in the 'Users' table exists, but the password in the 'Users'
table doesn't match the password from the Windows network. In this scenario it's possible that it's the wrong user
account or the user's password has changed in the Windows network so that the record in the 'Users' table must also
be updated. In this case, the user is redirected to 'nt_upd_user.asp' to verify the old password, record is updated,
the values of the user_id and accesslevel are stored in session variables, and then the user is "logged-in".
If no matching username is found:
The user has an account on the Windows network, but doesn't have one in the application database 'Users' table. This
is most likely a new visitor to the site. In this scenario, the user is redirected to 'nt_ins_user.asp', prompted for
an email address, and then their Windows username, password, and email address are added to the 'Users' table.
The user_id and accesslevel of the newly inserted record are obatined and then the user is "logged-in".
The applications enables teams to enter, assign, and track specific project tasks. Each task can have
an assignee, review date, related skill/area of expertise, and related collateral.. other files and documents that can be uploaded to the Web.
A Project, Team, and Related Tasks
Understanding Project Teams
The application lets organizations define any "types" of team members. From to business
managers, administrators, and any other roles that are involved in projects.
An Example Project Team
Since projects involve clients, partners, and vendors a project team might contain members from several organizations.
Using Project Phases to Create a Framework
Since any cross-functional group might have it's own process framework by which a
project is defined, the system lets organizations define a custom "methodology". This lets
the team understand what stage (or phase) the project is at.
For example, a Web development company might define the following project phases...
sales - understand business goals
needs / requirements analysis
conceptualize / design
production
launch and maintain
complete / in-active
Task Workflow
The Task workflow cycle will be continually repeated as the Project moves from
inception to completion.
A project is selected.
Specifics of the task are entered into the system.
title or short descriptive label for the task.
the type of task is selected. (ie; bug fix, writing, consulting)
additionally the task can be given a longer description, related
collateral can be uploaded, and required skills can be specified.
Project Team members are alerted of the "NEW" Task via their Inbox.
The Task is assigned to a Team member. With the proper access level,
any Team member (Project Manager, Developer, Etc..) can accept or assign a Task. You might want
to set-up the organization so that only Project Managers can enter or assign new Tasks.
The assigner of the Task...
estimate the required hours.
enters a "due" or expected completion date.
update the Task status to "OPEN" or "HOLD".
The Task is active. As the assignee works on the Task they can update the
description as progress is made, and/or close the Task when it is completed.
Once the Task is completed, it is "Closed" in the system. The user closing the
Task is usually the assignee who..
enters the actual hours.
optionally provides closing remarks.
The project and task managment features are enabled by the 'pmprojects.asp' and 'pmtasks.asp' pages. Each project that is created can have 1 or more
associated tasks. Each task has a related name, type, description, assignee and status. If there is no assignee (assignee_user_id) for
the given task, it's status will be set to 'new' (the status field in the 'pmTasks' table will be set to 0). Inversely,
if the task status is set to new, the 'assignee_user_id' field in the 'pmTasks' table will be set to null. This provides a means
of tracking and managing new tasks that need to be assigned to a specific user. As progress is made on a project or it's tasks,
updates can be made via the 'pmProjects.asp' page. A separate form on the 'pmTasks.asp' page is used to "close" tasks when completed.
This form will update the task in the pmTasks table by setting the status to "closed" (Status=2), recording the completion date (dtComplete),
and the actual hours (ActualHours) required to complete the task can be entered at this time.
How tasks relate to users
The assignee of the task is identified by the assigned_user_id field in the 'pmTasks' table.
The submitter of the task is identified by the user_id field in the 'pmTasks' table.
The last modifier of the task is identified by the last_user_id field in the 'pmTasks' table.
Project and task data
There are several different ways to manage project and task data. The Inbox (user_profile.asp) displays active (non closed) tasks that are assigned to the current (logged in) user.
Tasks can also be viewed via the 'pmtasks.asp' page. This page will list all tasks that were submitted by, assigned to, or last modified by the current user.
A minimum accesslevel of 2 is required to access this page.
Projects and their related tasks can also be viewed via the 'pmprojects.asp' page. This page lists the projects that the current user created, and projects that the current user
is a member of. In order for a user to be a "member" of a project, they must be added to the "project team". The project members are tracked via the 'UserProjects' table.
From the 'pmprojects.asp' page the user can click on the project name to get an amplified view of the project and it's related tasks. Users with an accesslevel of 3 or greater will
also be able to edit the project data. The list of tasks for the selected project will display below the project detail.
The user can click on the task name to view details of the task. Users with an accesslevel of 2 or greater will
also be able to edit the task data, and attach related files.