v2.4 Release Notes
Release Date: 17 August 2011
This time around, we have a significantly longer release cycle than normal. Within the core team, there were new jobs, conferences, at least one alien abduction, lots of projects, and some travel. Regardless, this is a solid release that includes some major accomplishments.
Downloading & Installing
The only official distribution site is Sourceforge. Check out the Installation page to get started.
Reporting Problems
For more information, support, or to discussion upcoming features, please visit our Support Forums.
Any and all issues discovered should be added to our our Issue Tracking System. Feature requests should be marked as such and not described as issues. Please remember to mark Feature Requests as requests and not bugs.
If you’re not familiar with submitting a bug, please read my post: How To Submit a Bug
New Features
- Added timezone configuration as an option at install time instead of as a post-install step;
- Issue 78 - Projects - Task dependencies not cascading
- ’'’Previously an “Open/Known Issue”:’’’
-
The cascading dependencies are still not 100% but very close. Although long chains (A->B-C->D->E) work fine and tasks with multiple dependencies work fine, there are a limited number of scenarios where dependencies do not behave as expected. -
One such scenario is when you have a Dynamic Task A with children chain (B->C-D->E) and Task F which is dependent on Task A. If B, C, D or E shift, they shift the rest of the chain as expected and the Dynamic Task (A) as expected but unfortunately F does not get updated.
-
- ’'’Previously an “Open/Known Issue”:’’’
- Issue 515 - Tasks - Detailed percent complete tracking
- Issue 862 - Tasks - Task duration and end date using server-side code
Fixes/Bugs Closed
- Added an additional autoloader option to allow the Holidays module to work properly;
- Added filtering to the iCal token to close a security issue;
- Fixed an oddity where creating a Department from certain places didn’t set company_id;
- Fixed an oddity where task_project was overwritten accidentally;
- Fixed breadcrumbs in the Forums module;
- Fixed some bad grammar;
- Fixed some header oddities when the User isn’t logged in;
- Fixed some IE7 display oddities;
- Fixed the case where some systems - Windows and some BSD - don’t have strfmon available;
- Fixed the File List to properly display and link the current and previous versions of files;
- Fixed the SendQueuedMail to use the key/value pairs correctly;
- Fixed to preserve linebreaks in some textareas in FF and IE;
- Removed the PHP 5.3 dependency;
- Updated the Contacts search filter to be blank instead of displaying zero;
- Updated the FileFolder addedit and display formatting;
- Updated the FileFolder class to collect the queries into a single place;
- Updated the Task Reminders to apply timezones based on the receiver, not necessarily the sender;
- Updated the vCard import set the contact_owner;
- Issue 560 - Tasks - Incorrect start/stop date when Dependency tracking on
- Issue 583 - Calendar - Default Event Start and Stop times
- Issue 604 - Tasks - dependence issue between tasks
- Issue 623 - Core Infrastructure - Reminders sent for Template projects and inactive projects
- Issue 713 - Translation/Languages - French accent in months name aren’t printed correctly on screen.
- Issue 732 - Calendar - Event e-mail with wrong time
- Issue 765 - System Admin - wrong timezone for admin
- Issue 766 - Core Infrastructure - Deprecated class Mail
- Issue 768 - Projects - add project contact doesn’t work
- Issue 770 - Core Infrastructure - LDAP Login broken in 2.3
- Issue 772 - Files - Cannot delete file in file list view
- Issue 774 - Gantt Chart Generation - Tasks of the Todo Gantt are created Twice
- Issue 776 - Tasks - Line break in task description not work
- Issue 777 - Projects - Project List View is broken in flat mode
- Issue 778 - Contacts - Contact search box erases first character on search
- Issue 779 - Projects - Project gets wiped off when importing tasks with bad date start/end
- Issue 781 - Files - Displays the correct name of the folder instead of (Root):
- Issue 785 - Projects - Project Report Printing
- Issue 786 - Files - Folder Explorer HTML broken
- Issue 787 - System Admin - solution: timezone install script sets w2p software version to an obsolete value
- Issue 788 - Forums - forum layout bugs out with different forum rights
- Issue 789 - User Admin - Tasks ending before they begin = 500 error
- Issue 791 - Files - Cannot Checkin File (V. 2.3.1)
- Issue 792 - Tasks - Assigned resources display loss
- Issue 793 - Files - Files related to deleted project are impossible to edit/remove by admin.
- Issue 794 - Projects - UTF-8 issues : some non-English characters are displayed corrupt
- Issue 795 - Links - Links not visible
- Issue 796 - Cosmetic/Typo - missing graphic: style/web2project/images/icons/priority+0.gif missing from 2.3 code base
- Issue 797 - Core Infrastructure - Order by company on project page not work
- Issue 798 - User Admin - Adding single deny rule in role leaves users blind to all modules
- Issue 800 - Tasks - problem for changing dependant tasks
- Issue 801 - Contacts - Update key do not store in Database
- Issue 802 - Tasks - Move this task to project list contain ‘array’ in task edition page
- Issue 805 - Browser Compatibility - Tooltips not showing properly in IE 7 & 8
- Issue 808 - Tasks - The message Can not create task. Project Task not set.
- Issue 809 - User Interface - Login Box disappears
- Issue 813 - Files - Extra column in the Files List
- Issue 814 - Project Designer - Project Designer Problem with milestone date update
- Issue 822 - Projects - Required ‘short name’ of project is pre-filled, but not accepted
- Issue 825 - User Interface - Change password - strange notice
- Issue 827 - Project Designer - Task selection checkboxes can’t be checked individually
- Issue 828 - Tasks - Set task start date based on dependency causes crash of database
- Issue 829 - Tasks - Dependency tracking has no effect
- Issue 834 - Files - Upload file does not work
- Issue 835 - Projects - Missing Validations in Budget
- Issue 849 - PDF Generation - Gantt chart and PDF Printing
- Issue 851 - Companies - Can’t use correct e-mail address
- Issue 853 - Forums - Forum title disappears
- Issue 855 - Contacts - Have to delete department to be able to delete it’s previous owner
- Issue 856 - User Admin - edit user preferences returns to sysadmin instead of user admin
- Issue 860 - User Admin - LDAP failed with error: ‘contact owner is not set’
- Issue 861 - Reports - Clicking on any of the buttons in the Task List report does not alter the dates
- Issue 866 - User Admin - Bug adding permissions to users
- Issue 867 - Gantt Chart Generation - Generated gantt shows only one of the assigned task users.
- Issue 869 - Calendar - When using module ‘Holiday’ the week view doesn’t work
- Issue 871 - Cosmetic/Typo - CSS fix for Snow Ball style
- Issue 873 - Tasks - Assignment of contacts to task is not removed from DB
- Issue 882 - Links - Code Error in Links setup.php
- Issue 883 - Files - Files view - All Files -> Folder is always ROOT
- Issue 892 - Tasks - task email charset encoding does not work
- Issue 893 - Project Designer - ProjectDesigner - Actions tab does not work
- Issue 897 - Project Designer - Task description in ProjectDesigner is wrong
- Issue 898 - Calendar - ICal feed with wrong time
- Issue 900 - Reports - Reports -> Tasks sorted by user does not work with the last snapshot
- Issue 903 - Contacts - Importing a vCard with no first name gives an ‘Access Denied’ message when trying to view Contact details
- Issue 904 - Contacts - Importing a vCard with no birth day results in beeing unable to edit the imported contact without providing a valid birth day
- Issue 906 - Projects - Subprojects are not removed from main project after removing their subproject-status
- Issue 912 - Tasks - startdate, enddate in task notification not emailed
- Issue 914 - Projects - Project tab - Scheduled hours is not calculated
- Issue 921 - Tasks - task log email does not indicate that it is a ‘task log’ email
Misc Changes/Improvements
- Added an override to the LDAP config to allow for one config string to override everything else;
- Added functionality to add tasklogs directly from the calendar;
- Added the percent complete for predecessor and dependent tasks on the Task View screen;
- Added the Swedish translation;
- Deprecated $task->peek();
- Eliminated deprecated & duplicated code;
- Eliminated dotProject commits:
- Fixed Bugs:
- 3295 - Updated the birthday check to actually work;
- 3288 - Added proper escaping to the company name;
- 4154 - Fixed the formatCurrency function;
- 4664 - Updated the project duration calculation to work;
- Removed code already implemented in core:
- 2971, 3104, 3244 - Dropped the custom query in favor of core;
- 3282 - Removed queries from the Contacts class to use core;
- 3293 - Cleaned up the Forums module to use our OO structures instead of raw results arrays;
- 4158 - Removed the canDelete query in favor of the core;
- Removed unused/unnecessary code:
- 3034, 3040, 3041, 3225, 3281, 3219, 3292 - Eliminated duplication, unnecessary globals, and re-declaration of declared objects;
- 3058, 4740, 5369 - Removed dead code;
- 3100 - Removed unnecessary fields from query;
- 3152 - Killed off duplicate & unnecessary code from PDF generation;
- 3201 - Deprecated setTasksStartDate javascript because it’s better calculated on the back end;
- 3202 - Removed the setMilestoneEndDate function;
- 3212 - Eliminated the old upgrade path;
- 3220 - Removed unused loadArrayList function;
- 3266, 4723, 4734 - Reverted commit;
- 3297 - Removed the unnecessary utf-8 check;
- 3662 - Deprecated the concat() method on Query to do it in PHP instead;
- 3665 - Deprecated the ifNull() method on Query;
- 3267 - Removed unused execXML function;
- 4627 - Dropped the unnecessary parts of the query;
- 4635, 4578 - Removed a bunch of junk from the Department View;
- 4657 - Removed the unused project/task filters;
- 5384 - Eliminated duplicate query declarations;
- Reimplemented to bring up to current standards:
- 3083 - Rebuilt the History module installer to meet our standards;
- 3103, 3260 - Converted the variable check/filtering to follow our standards;
- 3106 - Updated the reports module to use our standard translation structure instead of the file-based stuff;
- 3144 - Updated the Custom Field classes to use the fieldName() and fieldExtraTags() methods instead of raw properties;
- 3197 - Reimplemented the user logs to be timezone aware and eliminated unnecessary processing logic;
- 3265 - Cleaned up the addedit/cancel buttons to use our common methods;
- Simplified:
- 3016 - Updated the variable checks to do it the PHP way;
- 3077 - Simplified the translation paths;
- 3086 - Simplified the query usage in the Forums module;
- 3279 - Simplified basepath determination;
- 3328 - Simplified the count calculation;
- Fixed Bugs:
- Moved all the stray functions to a single spot - includes/cleanup_functions.php;
- Moved test data into individual directories to keep it managable;
- Rebuilt the Custom Field Editor from the ground up:
- Implemented our standard store and delete methods;
- Moved the Custom Field code into its own class structure outside of the System module;
- Reimplemented the optionlist store() and delete() methods to match our standards;
- Reimplemented using our own best practices;
- Simplified the flows (controllers) to be consistent and logical;
- Refactored the Forums module to move the queries from the views into the classes;
- Refactored the Reports module’s Javascipt to eliminate lots of duplication;
- Refactored the User Controller and class to match our patterns for store() and check();
- Removed code that duplicated core functions;
- Removed TCPDF;
- Removed the odd updates to the Task table done during load().. which shouldn’t change anything;
- Simplified templates for better XHTML compliance;
- Simplified the autoloader by eliminate the duplicate paths/classes;
- Simplified the Contact, Project, and User lookups;
- Simplified the Gantt Chart creation by making them consistent;
- Simplified the generation of Departments Addedit & View, Task List, and Task List cells;
- Simplified the validation methods;
- Updated CAppUI to w2p_Core_CAppUI to be consistent with new class structures;
- Updated convertTZ to return itself to make it fluent;
- Updated the Authenticator to collect all the functionality in one place;
- Updated the Authenticator to support a series of fallbacks;
- Updated the BaseObject to bubble up errors that come from canDelete;
- Updated the BaseObject child classes to use zero’s for _id’s instead of nulls;
- Updated the CAppUI to use DISPLAYFORMAT instead of constantly calculating it;
- Updated the check() to not modify core data, only check it;
- Updated the core classes to use the protected $_query property instead of creating new queries each time;
- Updated the Gantt Charts to use the contact_display_name instead of concatenating the first & last names;
- Updated the Module module to use remove() instead of raw db access;
- Updated the Projects class to accept project_contacts as either strings or arrays;
- Updated the Reports translations for Brazilian Portuguese, Czech, English, Farsi, French, German, Italian, Polish, Portuguese, Russian, Spanish;
- Updated the store() and delete() handling to use the _error property correctly;
- Updated the tests to handle a project import failure;
- Updated the User assignment to eliminate some extra queries;
- Updated the User Controller to match our common patterns;
- Updated w2Pacl to w2p_Extensions_Permissions to be consistent with new class structures;
- Issue 488 - Tasks - task ordering
- Issue 510 - Core Infrastructure - Bad consequences upgrading 1.2 to 2.0
- Issue 656 - Core Infrastructure - holiday module installation
- Issue 682 - Core Infrastructure - Autoconfigure Default Timezone
- Issue 754 - System Admin - timezone setting in initial call of sys admin after installation
- Issue 812 - Projects - add ability to show departments in project lists
- Issue 832 - Tasks - Set time by dependency
- Issue 836 - User Interface - Hardcoded CSS-styles (company / active projects)
- Issue 868 - Cosmetic/Typo - Assigned users for task are not shown one per line
- Issue 901 - Files - Folders name can not be longer then 64 characters
Open/Known Issues
- If you upgrade from dotProject, you may have an oddity with your default theme/display as the name has changed. If this happens, edit your preferences, change to one of the existing themes, and save.
System Metrics
Here are some core metrics that may be of interest to the geekier among us.
By running these commands, we get the metrics below:
# Assuming web2project is the your base directory
php phploc.php --count-tests --exclude=../web2project/lib ../web2project/
php phpcpd.php --exclude=../web2project/lib/ --exclude=../web2project/unit_tests/ ../web2project/
- Lines of Code: 67763 (11229 of comments, 56534 of code)
- Overall Cyclomatic Complexity/LoC: 0.09
- Classes: 89 (87 Concrete, 2 Abstract)
- Lines of Code/Class: 761
- Class Constants: 6
- Methods: 806 (47 static, 759 non-static)
- Lines of Code/Method: 84
- Cyclomatic Complexity/Number of Methods: 7.68
- Functions: 215
- Constants: 64
- Test Classes: 13
- Test Methods: 486
- 1.91% duplicated lines of code (~1196)