DEPRECATION WARNING

This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

EXT: PAE Project Management

Author:Kasper Skårhøj
Created:2002-11-01T00:32:00
Changed by:Alban Cousinié
Changed:2009-02-16T11:34:02.650000000
Author:Communauté d'Agglomération du Pays d'Aubagne et de l'Etoile / Mind2Machine
Email:extensions@mind2machine.com
Info 3:
Info 4:

img-1 img-2 EXT: PAE Project Management

EXT: PAE Project Management

Extension Key: pae_project

Copyright 2000-2008, Communauté d'Agglomération du Pays d'Aubagne et de l'Etoile / Mind2Machine, <extensions@mind2machine.com>

This document is published under the Open Content License

available from http://www.opencontent.org/opl.shtml

The content of this document is related to TYPO3

- a GNU/GPL CMS/Framework available from www.typo3.org

Table of Contents

EXT: PAE Project Management 1

`Introduction 3 <#1.1.Introduction|outline>`_

What does it do? 3

Screenshots 4

`Users manual 8 <#1.2.Users%20manual|outline>`_

Extension installation 8

Extension usage9

Adding user authentication 14

User roles in PAE project management 16

Setting parent to child project relationships 18

FAQ 20

`Configuration 21 <#1.3.Configuration|outline>`_

Plugin flexform settings 21

Typoscript settings 21

`Localisation 25 <#1.4.Localisation|outline>`_

`Known problems 26 <#1.5.Known%20problems|outline>`_

`To-Do list 27 <#1.6.To-Do%20list|outline>`_

`ChangeLog 28 <#1.7.ChangeLog|outline>`_

Introduction

What does it do?

  • This extension permits to include a project management application on your website where multiple project administrators and workers can collaborate on updating project informations.

  • The extension is capable of compiling the information from several sub-projects for displaying a synthetic view in the parent project display : it will compute the global cost, the global worked days count, the project start and end dates, and the global progress of the project. Thus, each parent task displays a synthesis of its child tasks up to the root project.

  • The extension allows the definition of exceptions and worked days : exceptions are exceptional periods which are not worked, such as holidays. You can define an exception and attach it to some project. Thus some projects which have manpower can still be worked while some others affected by exceptions are suspended for a fixed period of time. Worked days allow specifying days of the week which have workers present. If only 3 days are worked per week and a project requires 9 days of working, the extension will automatically spread the duration of the project on 3 weeks.

  • Last but not least, the extension displays the tasks as bars on a Gantt style graph. The Gantt graph applet is programmed in Flash (using Actionscript 3.0) and the full source code and Flash project files can be found in the /res/ directory of the extension and can be used under the terms of the GNU/GPL Licence.

    The development of this extension has been funded and sponsored by the Communauté d'Agglomération du Pays d'Aubagne et de l'Etoile ( http://www.agglo-paysdaubagne.com/ ), a public group of cities located in the south of France.

    Beside the fact they needed such an extension, they have been using successfully Typo3 for 3 years on their web site and they were desirous to provide the Typo3 community something useful and valuable in return.

    The programming has been done by Mind2Machine ( http://www.mind2machine.com ). All the code of this extension, included the Actionscript code of the Flash applet is available under GPL Licence. Please send us any improvements you may achieve.

Screenshots

img-3

This is the projects list

img-4 Display of a child project (leaf project in the project tree)

img-5 Same project in edit mode

img-6 Exception editing

img-7 The Gantt graph detailed

Users manual

Extension installation

In the extension manager look for extension key “pae_project” and install it the regular way. Once installed, you may alter the default extension options :

img-8

For most users, basic settings should apply and you can skip to the next section “Extension usage”.

More detail on these settings follow :

The “TypeNum” setting gives the page type value for accessing the XML description of projects managed by the extension. This XML data is read by the Flash applet for displaying the project summary. But you could also use the XML project descriptions in order to have them displayed by a third party application, such as a program located on a distant server. Notice however that in the current version of the extension, only the relevant display information is published, not the full project properties.

The XML data can be viewed using an URL of the following format :

http://www.yoursite.com/index.php?id=page_uid_where_the_plugin_i s_inserted&type=TypeNum

A real world example would be :

http://www.mysite.com/index.php?id=245&type=9003

You may want to alter the TypeNum value if some extension already installed in your Typo3 setup already uses the default page type.

The “date format” setting specifies how dates show be displayed. The default setting is the French setting. You may want to specify another format related to your locale as specified in the php date() function documentation :

http://fr.php.net/manual/en/function.date.php

Extension usage

Using PAE Project management requires users to be identified so the extension can perform rights check upon the current user profile. If the user is not identified, the extension will display projects in read only mode.

Let's go for a basic setup in read only mode first. We will add user authentication after.

Create a regular Typo3 page (we will name it “PAE project test page”) and a sysfolder named “projects”. It may be a good idea to put the sysfolder right below the page in order to group your project stuff, but you may also put the sysfolder anywhere you like.

img-9 The “Projects” folder will be used to store our project records.

Edit “PAE project test page” page in Page mode and insert the plugin “PAE project manager” in it :

img-10 Then you can edit the plugin properties :

img-11 For now, just add the “Projects” sysfolder as a startingpoint . Save the form .

Switch to list mode and get into your projects sysfolder .

Create a new record of type “Project element”.

img-12 Notice just below the “Project element” record type there is another record type belonging to this extension : “Worked days exception”. This record type will allow specifying days that are exceptionally not worked on certain projects.

You may now type a project title such as “My first project” here and you add a description.

By default, projects are created with the current day specified as start and end dates with a project duration of 1 day.

You may also attach some documents to the project so they can be downloaded by people looking at the project record in frontend.

img-13 Now you can preview your Typo3 page holding the project plugin :

img-14 As you can see, your first project appears in the Gantt graph. It is very small because it lasts only one day.

You can also see a warning because we have not defined a global administrator. We will do this in the next section.

Right under the warning goes the list of current projects. You can see “My first project listed” with its description (cropped to the first 300 characters).

Hit the “view” button to access the project file :

img-15

There you can see your first project file. Estimated information appears in grey, real information in orange.

Now we can add roles to our projects, but it requires user authentication to be enabled.

Adding user authentication

In order to manage user roles, they have to be identified. The PAE project management relies on Typo3 generic user system so you can use you favorite login box and put it anywhere you like in your page template. Our preference goes for Macmade's loginbox (ext key : loginbox_macmade ) because it allows specifying the sysfolder used for storing your user profiles and features high customization possibilities. Therefore we will use the macmade loginbox in this example, but any other loginbox should work.

Create a sysfolder where to store your frontend users if you don't have any yet. You may also use the GRSP (General Record Storage Path)

Install extension loginbox_macmade

Insert the loginbox before the PAE project management extension in your page :

img-16

img-17

Adjust the loginbox settings. Set the startingpoint parameter with the folder where your user profiles are due to be stored. Save and close the loginbox extension properties.

img-18

Switch to List mode . Get into your users sysfolder and create a record of type “website usergroup”. Let's name it “PAE project user profiles”. This step is required because you can't create a frontend user if it doesn't belong to any group.

img-19

img-20

Now create a record of type “website user” in the same folder, and set “superadmin” as a username. This will be our global administrator profile. You may add some additional information, but username and password are the only required informations.

img-21

Also create 2 other frontend user profiles for testing with the following usernames : “admin” and “worker”. Read next section to know more about the usage of those profiles.

Preview your PAE Project test page in the browser. The authentication form should now properly show up.

User roles in PAE project management

In PAE project management, there are 3 types of user roles : Global administrator, project administrator, project worker.

The Global Administrator(s) is specified in the plugin settings. He has access to any editing feature of any project and exceptions in the frontend view.

The project Administrator has the capacity to modify any fields of a project where he is defined as an administrator and the same goes also for all of its children projects (user rights are inherited automatically between parent and child projects).

The worker has the capacity to modify the fields of a project related to real world data (estimated data can only be set by the administrator) where he is defined as a worker. The same goes also for all of its children projects. Thus a worker can not specify a project, but as he is working on the project he can update its progress data so other frontend users and administrators can be informed of the progress of his work.

Setting the Global administrator

In page mode, edit the plugin settings were your inserted it on the page. Add the “superadmin” user previously created to the plugin, the save the form.

img-22

Now you can login in the frontend with the superadmin user :

img-23

Notice there are now new buttons on top of the project list : you can now create a new project, list and create new exceptions. You can also edit and delete an existing project.

Setting the project administrator and the workers

Edit the project record of your interest in frontend or backend mode. You can add any existing FE user on the system in the “Administrators” and “Workers” fields :

img-24 Frontend editing for administrators and workers

img-25

Backend editing for administrators and workers

Setting parent to child project relationships

In order to set a project as a child of another project, you must, when you create or edit your child project, set the “parent” field with the parent project of your choice. As all editing operations, this can be done with frontend project editing form of with the backend form :

img-26 Frontend parent field

img-27 Backend parent field

img-28

Parent to child relationships are reflected in the project display

Important notice : an important thing to understandwhen working with parent / child relationships is that when a child is assigned to a project, this parent project then acts as a container : its own cost, duration, start and end dates become ignored because they get replaced at display by the synthetic information aggregated from its child projects. This is because a parent project can also be defined as the sum of the sub-projects / sub-tasks that compose it. Thus, in a project tree, the time and cost settings that count are the values located in “leaf” projects, a “leaf” project being located at the very end of a branch.

The aggregated data can be consulted when looking at a parent project file in “view” mode. It can only be seen in frontend.

img-29

FAQ

Why is it mandatory to have real start date specified, even though working for real on my project hasn't started ?

This has been forced in order to fix a problem : When no start date is specified, Typo3 sets the date value at 0 which is the basic value of Unix time. This value translate to date 01/01/1970 which causes problems for displaying the Gantt graph as the way from 1970 to 2008 is a looooooong way. We may code a more stylish solution to this problem in the future, but for now this is the quick and dirty solution.

Send your questions to extensions@mind2machine.com

Configuration

This extension can be configured using the plugin flexform as well as with Typoscript. For now the flexform and typoscript settings are complementary and do not redefine each other, so you will find different settings in both of these.

Plugin flexform settings

Global administrators : List of users with full frontend management capability over this extension

Gantt graph display order : Specifies if the Gantt graph should be shown before or after the project text content

Show Gantt graph policy : Allows to set the Gantt graph display to occur only in project listing mode or to completely get rid of it.

List mode display :Allows choosing between displaying all projects or root projects only in the projects list. In root projects only mode, children projects can still be accessed either by their parent project file display or by clicking their title in the Gantt graph which continues to display all projects.

Typoscript settings

projectDisplayFields

Property

projectDisplayFields

Data type

text

Description

Lists the fields to be displayed in Frontend. You can filter some fields that have no interest for your users by redefining the list of fields and removing field labels / block labels you are not interested in.

Default value is :

projectDisplayFields = title, description, documents, worked_days, estimated_data, estimated_start_date, estimated_end_date, estimated_duration, estimated_days_project_duration, estimated_cost_per_day, estimated_cost, real_data, real_start_date, real_end_date, real_duration, cost_per_day, real_cost, real_cost_per_day, computed_estimated_data, computed_real_data, real_days_project_duration, progress, parent, children, dependencies, exceptions, administrators, workers

Default

defaultValues

Property

defaultValues

Data type

object

Description

Lists the values to be set automatically when creating a new project.

This is especially useful when hiding some fields using projectDisplayFields: this will warranty you some values are set at the value you want by default even if you don't have access to edit these.

Default values for defaultValues are :

defaultValues {

title = New project

description = type description here

worked_days = 1,2,3,4,5

estimated_start_date = now

estimated_duration = 1

estimated_cost = 0

estimated_cost_per_day = 0

real_start_date = now

real_duration = 0

cost_per_day = 0

progress = 0

parent =

dependencies =

administrators =

workers =

}

worked_days is a coma separated list of days worked during the week. Valid values range from 1 to 7.

estimated_start_date and real_start_date specify a date in the GNU date input format ( http://www.gnu.org/software/tar/manual/html_node/Date-input- formats.html )

estimated_duration and real_duration specify a duration in days. Float values such as 0.3 are accepted.

estimated_cost, estimated_cost_per_day, cost_per_day are currency free int values. Just put 400 if your daily cost is 400$ or 400€ or £400.

progress : set a value from 0 to 100

parent : set with the parent project record uid int value. Only one value / parent is allowed.

dependencies : coma separated list of project record uid int values.

administrators, workers : coma separated list of fe_user record uid int values. Will be inherited by all children projects.

Default

adminButtonsOverride

Property

adminButtonsOverride

Data type

Description

You may want to alter the labels or the shape of the admin buttons (admin buttons are “List all projects”, “New project”, “List all exceptions”, “New exception”). This typoscript setting allows you to alter the text of label or even to specify an image to replace it.

When using an image, you'll want to get rid of the borders around. You can do so by redefining the adminBtnLink class in your custom CSS stylesheet. To do so, have a look at the cssStylesheet typoscript setting below.

Example usage :

adminButtonsOverride{

listAllProjects = List all tasks

createProject = New task

listAllExceptions = <img src="/fileadmin/new-ex.gif" />

createException = <img src="/fileadmin/crea-ex.gif" />

}

Default

editButtonsOverride

Property

editButtonsOverride

Data type

Description

You may want to alter the labels or the shape of the edit buttons (edit buttons are “View”, “Edit”, “Delete”). This typoscript setting allows you to alter the text of label or even to specify an image to replace it.

When using an image, you'll want to get rid of the borders around. You can do so by redefining the btnLink class in your custom CSS stylesheet. To do so, have a look at the cssStylesheet typoscript setting below.

Example usage :

editButtonsOverride{

view = Project sum-up

edit = Edition

delete = <img src = "/fileadmin/templates/imgproject/res/del.gif" />

}

Default

useExceptions

Property

useExceptions

Data type

Int

Description

Set to 0 if you want to disable the display of exceptions in frontend. If exceptions exist and are attached to projects, they will still be computed though.

Default

cssStylesheet

Property

cssStylesheet

Data type

text

Description

Absolute path to your custom CSS stylesheet.

You may copy and customize the extension stylesheet located in /typo3conf/ext/pae_project/res/pae_project.css

Example :

cssStylesheet = /fileadmin/templates/css/custom_pae_project.css

Default

[tsref:plugin.tx_paeproject_pi1]

((generated))
Default setup

These are the Typoscript values applied to the extension by default. Redefine any of these according to your need on your page template / setup field:

plugin.tx_paeproject_pi1 {
    projectDisplayFields = title, description, documents, worked_days, estimated_data, estimated_start_date, estimated_end_date, estimated_duration, estimated_days_project_duration, estimated_cost_per_day, estimated_cost, real_data, real_start_date, real_end_date, real_duration, cost_per_day, real_cost, real_cost_per_day, computed_estimated_data, computed_real_data, real_days_project_duration, progress, parent, children, dependencies, exceptions, administrators, workers
    defaultValues{
            title =  New project
            description =  type description here
            worked_days =  1,2,3,4,5
            estimated_start_date = now
            estimated_duration =  1
            estimated_cost = 0
            estimated_cost_per_day = 0
            real_start_date =  now
            real_duration =  0
            cost_per_day = 0
            progress = 0
            parent =
            dependencies =
            administrators =
            workers =
    }
    adminButtonsOverride{
            listAllProjects =
            createProject =
            listAllExceptions =
            createException =
    }
    editButtonsOverride{
            view =
            edit =
            delete =
    }
    useExceptions = 1
    cssStylesheet =
}

Localisation

This extension is localisation enabled. Even the Gantt graph flash applet is localized. In the initial release, only French and English localizations are available.

You can easily add your own language by editing the two XML language definition files locallang_db.xml and pi1/locallang.xml located in the directory /typo3conf/ext/pae_project/

In each file, simply add another <languageKey> tag with you country's ISO2 code as value in the “index” parameter of the tag. Then copy all label values and translate the text located between the <label></label> tags. DO NOT alter the value of the “index” parameter inside the <label> tag.

Since the extension has been initially written on your web server's disk by Typo3 and not by you using an FTP client, these files will likely be owned by your webserver's unix user/group (usually named “apache” or “www”). Thus you'll likely be forbidden to overwrite the genuine files.

In order to circumvent this problem, there are 2 solutions :

  • If you have a root access to the server, log in as root and set the permissions 777 on these files.
  • If you do not have root access to the server, try to alter the permissions on this file to 777 using your FTP client
  • If the previous method fail, you can upload the script PHP File Manager ( http://phpfm.sf.net ) on your server using FTP, then run this script by connecting to its URL in your web browser. As the script is run by your webserver, it will use your webserver's unix user/group and will be authorized to change rights on files owned by this user. Use the script to chmod the 2 files to 777, then you'll be able to overwrite the localization files using an FTP upload. When you are done, don't forget to delete the PHP file manager script as it puts your webserver security at risk.

Please send us any localization you have done with us ( `extensions@mind2machine.com <mailto:extensions@mind2machine.com>`_ ) so we can supply it to all users in next versions of this extension.

Known problems

Project titles may be incorrectly positioned in the Gantt graph

To-Do list

Here are some features we thought would usefully enhance this extension :

  • Provide control over Flash applet display settings such as :
    • width and height of the flash movie
    • transparency
    • background color
    • ...
  • Improve Gantt Flash applet ergonomics (possibly using Flash 10 3D functions):
    • intuitive, fluid and interactive zooming / panning
    • showing day marks within week marks when zoom level is sufficient
    • Fullscreen mode
    • Allow lower zoom levels
  • Add a project page browser / selection filter, as dealing with projects may become tricky when their number gets high
  • Handle caching : projects are being computed at every page display. Computing calculations are speedy yet complicate. Computation overhead could appear with many projects and high trafic.
  • Email notification of all people having a role in the project when some field gets updated in the project file.
  • Dependencies management : Issue warning when a dependent task starts at a date where master task is not completed. Dependencies are currently displayed only for informational purpose and have no functionalities associated.
  • Let's dream a bit : sliding a project bar using the mouse in the flash applet could update the start date in the project properties in Typo3. Also we could drag the end of the bar for adjusting the project's duration.
  • Manage workforce for a given project (this one is complicate to code, trust me...):
    • Adding or removing users would increase / decrease the workforce and the duration of the project would adjust automagically.
    • Exceptions could also be defined per user, so inputing a worker's holidays would update the completion delay of all the projects he is participating.

ChangeLog

09-02-16 Alban Cousinié, Mind2Machine <extensions@mind2machine.com>

version 0.9.5

* Added german translations to locallang_db.xml and pi1/locallang.xml supplied by Till Conzelmann, ConfidIT (Thanks !!!)

* Added wmode=transparent to flashvars by default

08-10-24 Alban Cousinié, Mind2Machine <extensions@mind2machine.com>

version 0.9.4

* fixed workers/ administrators Typoscript values being ignored

07-12-18 Communauté d'agglomération du pays d'Aubagne et de l'Etoile, Mind2Machine <extensions@mind2machine.com>

version 0.9.0

* Initial release

28