Dependency display

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 commit is contained in:
Emmanuel BENOîT 2012-02-05 19:59:51 +01:00
parent 9677ad4dd3
commit fd50fda73a
6 changed files with 121 additions and 11 deletions
includes/t-tasks

View file

@ -272,7 +272,7 @@ class View_TaskNote
class View_TaskDependencies
implements View
extends BaseURLAwareView
{
private $task;
private $reverse;
@ -286,16 +286,35 @@ class View_TaskDependencies
public function render( )
{
$source = $this->reverse ? 'reverseDependencies' : 'dependencies';
if ( empty( $this->task->$source ) ) {
return HTML::make( 'div' )
->setAttribute( 'class' , 'no-table' )
->appendText( 'This task has no dependencies.' );
}
$list = HTML::make( 'ul' )->setAttribute( 'class' , 'dep-list' );
$prevItem = null;
$itemList = null;
foreach ( $this->task->$source as $dependency ) {
if ( $prevItem !== $dependency->item ) {
$itemList = HTML::make( 'ul' );
$list->appendElement( HTML::make( 'li' )
->appendText( 'In ' )
->appendElement( HTML::make( 'a' )
->setAttribute( 'href' , $this->base . '/items/view?id=' . $dependency->item )
->appendText( $dependency->item_name ) )
->appendElement( $itemList ) );
$prevItem = $dependency->item;
}
$link = HTML::make( 'a' )
->setAttribute( 'href' , 'tasks/view?id=' . $dependency->id )
->setAttribute( 'href' , $this->base . '/tasks/view?id=' . $dependency->id )
->appendText( $dependency->title );
if ( ! $this->reverse ) {
$link->setAttribute( 'class' , ( $dependency->completed == 't' )
? 'satisfied' : 'missing' );
}
$list->appendElement( HTML::make( 'li' )->appendElement( $link ) );
$itemList->appendElement( HTML::make( 'li' )->appendElement( $link ) );
}
return $list;
}
}