Sat 31 Mar 2007
Managing tasks whilst maintaining productivity can often feel like an uphill struggle. Over the years, I’ve refined the way I like to work and found I am most productive when working from a single list of tasks.
The order of my tasks depicts the priority. This means that, once my tasks are ordered correctly, all I need to do is work my way down the list from the first item.
ActiveCollab has provided me with a great set of tools to manage projects. However, I feel the current version (0.71) lacks an efficient way of managing tasks and doesn’t provide a single combined list from ALL projects. This, coupled with the fact that I’ve been yearning for a drag and drop sortable list has driven me to hack activeCollab’s My Tasks page and add a new feature that I’ve called ‘Prioritask’.
Principal
activeCollab works on the following hierarchical principal:
Project > Milestone(optional) > Tasklist > Task.
Milestones are optional and are probably better understood if one thinks of them as completion dates for 1 or more tasklists. I like to think of ‘tasklists’ as small goals and ‘tasks’ as the steps needed to achieve them.
There are times when it makes more sense to carry out steps relating to different goals(and different projects) in sequence. For instance; 2 unrelated tasklists might each have a step that involves a visit to the post office. It would be more productive for those steps to be grouped.
Enter Prioritask…
Prioritask is built to display a single list of tasks (steps) that can be ordered however one wishes. Project and Tasklist info is always attached to the task. The information in each field is linked to the related activeCollab page.
Milestones are also taken into account and the days remaining to completion are displayed. If the task is late or due today, the task is highlighted red.
To order, simply drag and drop the task to it’s new position. When the drag begins, sibling tasks (belonging to the same tasklist) are highlighted to help with placement in relation to each other.
To save the new order click on the Save Order button.
Prioritask saves the order for both Tasklists and Tasks meaning that their order will be reflected throughout all other activeCollab pages.
Other Features
- Prioritask is added to My Tasks so no existing features or functionality is lost.
- No database changes are made.
- Task field links to the task comments hack task_details page. See here.
- Easy uninstall*
*I’ve tried to keep all Prioritask code within the new my_tasks.php file. Although this goes against the MVC schema of activeCollab it provides the next best way (to a plugin) to isolate the new code from the default installation. To revert, simply replace the new hacked my_tasks.php with the original my_tasks.php file.
Some Notes
- Tasks are only featured in the list if they belong to the user (or Anyone)
- Milestone Data is only featured in the list if Milestone belongs to the user (or Anyone)
- Completed tasks are not taken into ‘ordering’ account
- Tasklists with no Tasks are not displayed in the list (and therefore not ordered)
Thanks to
The fantastic Scriptaculous library and Greg Neustaetter who’s precious time saving PHP class is used by Prioritask.
Installation
- Download and unpack the zip file
- Backup /application/views/dashboard/my_tasks.php
- From the zip file, upload all the files and folders
from (but not including) Files/dashboard/ to /application/views/dashboard/ - Backup and then replace the following 2 files*
/application/models/projects/Project.class.php
/application/models/project_milestones/ProjectMilestone.class.php
*or amend the existing files yourself by changing lines 154 (Project.class.php) and 875 (ProjectMilestone.class.php) from ‘order’ => ‘created_on’ to ‘order’ => ‘`order`’
April 3rd, 2007 at 11:58 am
One short note: the file SLLists.class.php uses short tags, if your server does not support short tags you have to replace them, otherwise it wouldn’t work
BTW: Looks great haris!
April 3rd, 2007 at 12:01 pm
Haris,
Links to task detail opens in a new window, is there a particular reason fir it?
April 3rd, 2007 at 12:30 pm
Hi Attiks!
I noticed the SLLists.class.php had short tags but it slipped my mind to change them before uploading. Will sort that out and upload a fresh copy.
Forcing the new window was not the ultimate intention. It was a quick and dirty solution I implemented very early on in order to stop accidentally leaving the page and losing any order changes.
I have since written in javascript that checks if the order has changed before leaving the page that then offers the user the option to cancel leaving. I’ll therefore also remove the forcing of a new window seeing as it’s no longer needed. In future, I’m thinking of deactivating links if the user starts dragging.
Glad you like it. Nice to see you on the blog!
April 3rd, 2007 at 1:20 pm
Just uploaded a new download file (version 37) with the following changes:
- Removed forced opening of new windows
- SLLists.class.php now uses full <?php tags
BTW, to find the version number of Prioritask open my_tasks.php.
At the top of the file look for:
$Id: my_tasks_prioritask.php version number
April 4th, 2007 at 12:27 pm
Hi,
This looks great and I can’t wait to try it. Will let you know how it goes.
Some of your limitations seem to be benefits to me, such as not showing empty task lists etc.
Thanks for this..
Paul.
PS Sorry I deleted your account on my blog. I am so used to deleting the hundreds of spammers every day - I just about caught your post though. I really must upgrade but about ten versions behind now!!! Nice site BTW.
April 4th, 2007 at 1:51 pm
You’re welcome, thanks for the compliments, would be great to hear your feedback.
The limitations are really just notes to be aware of… Actually I’ll change that heading now…
PS. No worries about the account, I can set one up again
May 23rd, 2007 at 12:55 am
Just curious, how hard would it be to change this to be able to reorder task lists? I use task lists to keep track of my open issues i have at my work… So i have it set like this:
Project Name: Open Issues
-Task List name: Open issue #1
-Task task related to clearing open issue
-Task 2 related to clearing open issue
- Task List name: Open issue #2
I would like to be able to drag task list “open issue #2 above #1 so i know it’s more important.
not sure that i have the knowledge to do this… just asking how hard/time consuming it would be.
May 23rd, 2007 at 8:10 am
Task Lists are already ordered based on where the tasks are placed.
As per you example. if you where to drag ALL tasks belonging to ‘Open issue #2′ above the tasks belonging to Open issue #1 then Prioritask would reorder the Task Lists.
Since, at the time I put this together, scriptaculous didn’t allow dragging multiple items, it means that tasks need to be moved one by one.
I may look into drag/dropping Tasks in Task List groups if they add that functionality but for the time being that would require extensive changes.
Hope that helps
June 6th, 2007 at 7:16 am
This works really great!
Except one small thing:
“htv_shorten” function uses “substr” and “strlen”. These functions tend to break words in the middle of multibyte characters.
Changing “stlen” to “mb_strlen” and “substr” to “mb_substr” fixes the problem.
June 6th, 2007 at 8:13 am
Thanks for the input JK, glad it works well for you
June 11th, 2007 at 6:28 pm
Great work!
Is it possible to make the same thing for list in one project?
I mean here:
index.php?c=task&a=view_list&id=4&active_project=4
(numbers are of course mine
June 12th, 2007 at 8:22 am
Thanks Sebastian.
There are a few issues that one would have to resolve first before being able to set that up. These go beyond the scope of a simple hack.
I may update Prioritask in the future but for the time being it’s feature set won’t be changing much.
July 2nd, 2007 at 3:46 am
The Personal Development Carnival - July 1, 2007…
Welcome to the July 1, 2007 edition of the Personal Development Carnival.
Anmol Mehta presents 4 Key Universal Laws For Manifesting Desire If You Absolutely Must posted at Mastery of Meditation, Enlightenment & Kundalini Yoga, saying, “If…
January 30th, 2008 at 12:42 am
Hi there,
I’ve just started using activeCollab 1.0, and your work here would improve it greatly, however will your hacks work with 1.0, do you know?
Thanks in advance,
Karen
December 2nd, 2008 at 3:53 pm
Hey Haris - great Extension, just plugged it into ProjectPier and it works like a charm. Thanx a lot!
January 7th, 2022 at 5:01 pm
200 Private Proxies Cheap…
I found a great……