The previous implementation of sub-tasks did not work as expected: it
was possible to mark sub-tasks as completed before the parent task's
dependencies were satisfied. In addition, it was impossible to retrieve
a task's path from the database without running a recursive query.
Full paths to sub-tasks added to views, since it is now possible to
obtain them.
In addition to normal dependencies, the application now supports
sub-tasks. Sub-tasks can be added into any existing task (including
other sub-tasks, Inception-style).
Dependencies can only be added between global tasks, or between
sub-tasks of the same task. It is no longer possible to mark a task as
finished if it has incomplete sub-tasks, and conversedly, it is not
possible to reactivate a sub-task if its parent is marked as completed.
A pair of buttons allowing tasks to be moved up and down in the task
hierarachy have been added.
Tasks can be assigned to users. An user may decide to "claim" a task
directly, which will assign the task to him. Otherwise, it is possible
to set some arbitrary user as the assignee or remove the assignee
completely through the edition form.
Marking a task as completed will remove the assignee, while
re-activating a task will assign it to the user who re-activated it.
Also, fixed a bug which allowed a completed task to be edited.
If there is a display name, it will be used in all views (task lists,
task details, comments).
Made a view for task lists, because it was cleaner and because they're
all more or less the same anyway.
A description field has been added to items in the database, form fields
have been added to both item creation and modification. Removed some
French text that was still around.
Tasks that have missing dependencies will be displayed in a red-ish
colour on the item views and in the full tasks list. Added a "blocked
tasks" mode to the tasks list page.
Task views now include the list of dependencies and reverse
dependencies. In addition, it is impossible to mark a task as completed
if it has unsatisfied dependencies, and it is impossible to re-activate
a task that has completed reverse dependencies.
This initial import is a heavily modified version of the code I had
here, as Arse was modified for other purposes in the meantime and the
application no longer worked with it.
In addition:
* I did not import the user management part yet,
* task dependencies are supported in-base, but there is no interface
for that yet.