demonstration site
customizable database-driven applications for the web



ProjectApp v2 (Basic Edition)


:: Installation
:: Configuration
:: Database Schema
:: Customization
:: User and Administration Interfaces
:: Support



Installation

The installation process entails..
    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.


Configuration



  • Change the admin password:

    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

    Customization

    To make changes to you application, an understanding of Active Server Pages, VBScript and relational database design is needed.

    Changing the style and look

      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'

      <link rel=stylesheet type="text/css" href="default.css">

    Changing page content and functionality

      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

      -- The 'i_header.asp' include file is displayed

      -- Forms and content are displayed

      -- The 'i_footer.asp' include file is displayed

    Creating other user access levels / Modifying security

      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)


    The User and Administration Interface

    All administrative features can be accessed via 'admin.asp'.


    • User Management

      - 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.
      1. nt_login.asp - authenticates Windows users and manages login.
      2. nt_ins_user.asp - creates an account in the app database (Users table) for a specified Windows user.
      3. 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".

    • Project and Task Management

      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 Figure 1 - projects 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 Figure 2 - the 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...

      1. sales - understand business goals
      2. needs / requirements analysis
      3. conceptualize / design
      4. production
      5. launch and maintain
      6. complete / in-active
      Task Workflow
      The Task workflow cycle will be continually repeated as the Project moves from inception to completion.
      1. A project is selected.

      2. 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.

      3. Project Team members are alerted of the "NEW" Task via their Inbox.

      4. 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".

      5. 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.

      6. 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.


    Support and Customer Assistance

    Assistance can be found in the support forums at ASPapp.com. Email and telephone support is not provided for this free version.




  • Copyright ©2000-2002 Iatek | ASPapp.com