Project Manager

Online demo
Design docs:
   Interface spec
   Mailing lists

SourceForge Logo

Technical design documentation

Note: the files used in project manager have more than one function per file, and most of those functions have to be processed by the server. When a "function" is defined, the page can be reloaded with the function name as a CGI parameter (no value is required) and the function parameters can be added to the URL (example: install.php?SetProjName=&ProjectName=Project%20Manager would call the function SetProjName in install.php with the parameter "ProjectName = Project Manager"). Some functions will use the function name as one of their parameter names. Some parameters will have defaults, which will be used when no value is given.

Normal php functions will be called php functions in this document.

Sets up the databases and settings for the project.

Login script (uses HTTP authentication, but cookie support to stay logged in may be added later). Included in every other file except install.php.

Contains project settings as a list of commented variables. Included by all files that use project settings.

Displays main tree view or a single node. The tree view is a default function (with no name) that is executed only if the node display isn't used.

Add functions to edit nodes and add objects to nodes

Adds a link to the current node. Only available to node users (with user permission for the node).
  • AddLink: Name of the link, or 'enterlinkdata' to edit information
  • Node: The ID of the node to add it to
  • URL: The URL
  • Description: The description of the link

Adds a file to the current node. Only available to node users (with user permission for the node).
  • AddFile: Name of the file, or 'enterfiledata' to edit information
  • Node: The ID of the node to add it to
  • DL: The URL to download the file
  • Description: The description of the file

Edits a node. Can only be used by users with admin permission for the node. If Description and Name are set, the information will be comitted.
  • EditNode: The ID of the node to edit
  • Description: The new description
  • Name: The new name

Displays a node of the project tree. This includes objects set to full display on their node page, and short descriptions with links for objects which aren't set to full diaplay on the node page.
  • ShowNode: the ID of the node to show

Creates a node in the tree.
  • CreateNode: The name of the node to display in the tree view. When the value is input, show a page to enter the data. When it's something else, create the node.
  • Parent: The ID of the parent node, 0 for top level
  • Description: The node description

Toggles open/closed state of a node and show normal view (Default Function)
  • SetNodeState: ID of node to toggle

    Default function
Default function, displays the main tree view. Not called when ShowNode is called. Uses cookies (cookie name is node ID+"status" (ex: 101status), set to "1" for open or 0 for closed (if closed, the cookie may not exist).

For each <node in db where level=0>
   Display node link
   If node open, display children (level=this.level+1, parent=this)

Displays database entry listing, searches/filters databases, creates and edits databases. Links to all the functions are included on the node view page. The links are entry listing (link text is database name), search, filter, and edit. A link at the bottom of every node page will allow the administrator or node admins (users who have permission to administrate that node or one of it's parents) to create new database tables.

Searches the database. Search results are displayed in the normal database listing format.
Note: a formatting for the search parameters that doesn't use any characters that are likely to be part of the search parameters or a simple escape system (that doesn't require any extra work from the user) needs to be found.

Shows a page to add a search requirement.

Creates a database table(only available to Administrator and node admins). When the parameter "fields" is empty or non-existant, the database table creation page is displayed, where fields can be added until the table is created. If the parameter "editing" exists, the table fields are being edited (and not created). When the Create function is used and "editing" is not defined, the table will be created. The page will show the list of current fields, with an area at the bottom to define a new field. The two action buttons will add the new field or create the database.
  • Fields: fields in format name1|type1,name2|type2...
  • Editing: if this is defined, the database table definition is being edited. If it's not defined, the database table will be created.

Edit a database table.
  • Edit: 'input' to edit, empty to commit
  • ID: the ID of the table to edit
  • Ops: a list of operations to do. This is a comma-separated list in the form <field name>:<operation>[:<type>]. The operation can be t for type change, a for add, or d for delete. When using a or t, the parameter type will contain the type code (type code listing in the description of the field fields in database table tables).

    Default function
Displays a database listing, sorted by index field in ascending order. Only called if no other functions are called.
  • table: the ID of the table to list
  • Startat (default 0): The index of the first database entry to display.

Change project settings, add/remove/edit users. This page can only be accessed by users who have "ADMIN" in their access permissions (the default setup includes one user, admin, that has access to this page).

Database Tables
Project Manager users.
  • ID: User ID (just in case we need it :) (integer)
  • username: username
  • password: password
  • access: access permissions, in a comma separated list of nodes and permissions. Permission codes are u for user (allowed to use the tables and add/edit items), v for visitor (allowed to add items to tables), a for node admin (allowed to create and edit any item in the node). A user with no access code can view the node but not change anything. Users with ADMN as one of their access permissions have admin access to every node. Each permission code is in the format <node ID>:<access codes> If the user has no access permissions for the node but it is in the list, the : must be included after the node ID (example: 1010:)
  • name: the user's name
  • email: email address
  • ICQ: ICQ number (these two are for user information display)

The database tables created for the project. Lists names and fields.
  • name: name of the table
  • ID: the table ID
  • node: the ID of the node the table is attached to
  • tblfields: a description of the fields, as a comma separated list of field description codes. The codes are in the format <field name>:<type>.

    The allowed types are dd for a drop-down list (these entries will have the format <field name>:dd:<drop-down list name>), se for a short edit field (40 chars max), le for an unlimited-length one-line edit field, ta for a text area, and ca for a comment area (like a text area, but you can only add lines, not edit the entire text). The format is
    <first comment block>

    Added at 1:59 AM on Dec 5, 2000 by krogoth:

    <second comment block>

    When using a drop-down type field, the drop-down list name will be used to get the list of options. The drop-down lists are stored in the table dropdowns. Decide where to put the drop-down list editing functions. Should they go in db.php?

A list of drop-down lists.
  • name: the name of the dropdown list (used in tables)
  • options: a comma-separated list of options

The tree nodes
  • ID: ID
  • name: name of the node
  • level: level (0 for top)
  • parent: parent node (if level > 0)
  • parents: a comma separated list of all the parents up to level 0 (if any), with top level parent first
  • description: description, displayed under the node name on the node page

The files.
  • node: the ID of the node the file is attached to
  • name: the name of the file
  • URL: the URL to download
  • description: a description of the file

The links.
  • node: the ID of the node the link is attached to
  • name: the name of the link
  • URL: the URL
  • description: a description of the link

FastCounter by bCentral