Moving tasks - buttons and empty form

This commit is contained in:
Emmanuel BENOîT 2016-01-03 09:54:47 +01:00
parent ff4a209d99
commit fd39819304
5 changed files with 76 additions and 4 deletions

View file

@ -277,9 +277,15 @@ class Ctrl_ItemTasks
{
$tasks = Loader::DAO( 'tasks' )->getTasksAt( $this->item );
return Loader::View( 'box' , 'Tasks' , Loader::View( 'tasks_list' , $tasks , array(
'deps' , 'assigned' , 'completed' ) ) )
->addButton( BoxButton::create( 'Add task' , 'tasks/add?to=' . $this->item->id )
$box = Loader::View( 'box' , 'Tasks' ,
Loader::View( 'tasks_list' , $tasks ,
array( 'deps' , 'assigned' , 'completed' ) ) );
if ( !empty( $tasks ) ) {
$box->addButton( BoxButton::create( 'Move tasks' , 'tasks/move?type=i&id=' . $this->item->id )
->setClass( 'icon move' ) );
}
$box->addButton( BoxButton::create( 'Add task' , 'tasks/add?to=' . $this->item->id )
->setClass( 'list-add' ) );
return $box;
}
}

View file

@ -165,6 +165,10 @@ class Ctrl_TaskListSubtasks
Loader::View( 'tasks_list' , $this->task->subtasks , array( 'deps' , 'assigned' , 'completed' ) ) );
if ( $this->task->completed_by === null ) {
if ( !empty( $this->task->subtasks ) ) {
$box->addButton( BoxButton::create( 'Move sub-tasks' , 'tasks/move?type=s&id=' . $this->task->id )
->setClass( 'icon move' ) );
}
$box->addButton( BoxButton::create( 'Add sub-task' , 'tasks/add?parent=' . $this->task->id )
->setClass( 'list-add' ) );
}

View file

@ -32,6 +32,7 @@ $package[ 'ctrls' ][] = 'task_details';
$package[ 'ctrls' ][] = 'task_list_subtasks';
$package[ 'ctrls' ][] = 'task_move_down';
$package[ 'ctrls' ][] = 'task_move_up';
$package[ 'ctrls' ][] = 'task_move';
$package[ 'ctrls' ][] = 'task_notes';
$package[ 'ctrls' ][] = 'toggle_task';
$package[ 'ctrls' ][] = 'view_task';

View file

@ -786,3 +786,63 @@ class Ctrl_TaskMoveUp
}
}
class Ctrl_TaskMove
extends Controller
{
public function __construct( )
{
$this->dTasks = Loader::DAO( 'tasks' );
$this->dItems = Loader::DAO( 'items' );
}
public function handle( Page $page )
{
try {
$id = (int) $this->getParameter( 'id' );
$type = $this->getParameter( 'type' );
} catch ( ParameterException $e ) {
return 'tasks';
}
$subtasks = ( $type === 's' );
$failure = $subtasks ? 'tasks' : 'items';
// Get the parent
if ( $subtasks ) {
$parent = $this->dTasks->get( $id );
} else {
$parent = $this->dItems->get( $id );
}
if ( $parent === null ) {
return $failure;
}
// If the parent's empty, go back to displaying it
$failure .= '/view?id=' . $id;
if ( $subtasks ) {
$tasks = $parent->subtasks;
$name = $parent->title;
} else {
$tasks = $this->dTasks->getTasksAt( $parent );
$name = $parent->name;
}
if ( empty( $tasks ) ) {
return $failure;
}
// Generate form
$page->setTitle( $name . ': move tasks' );
$form = Loader::Create( 'Form' , 'Move tasks' , 'move-tasks' )
->addField( Loader::Create( 'Field' , 'type' , 'hidden' )
->setDefaultValue( $subtasks ? 's' : 'i' ) )
->addField( Loader::Create( 'Field' , 'id' , 'hidden' )
->setDefaultValue( $id ) ) ;
// $this->addDependencySelector( $form , $task->possibleDependencies , $task->parent_task === null );
return $form->setURL( $failure )
// ->addController( Loader::Ctrl( 'dependency_add' ) )
->controller( );
}
}

View file

@ -17,6 +17,7 @@ class Page_TasksTasks
'view' => 'view_task' ,
'deps/add' => 'dependency_add_form' ,
'deps/delete' => 'dependency_delete_form' ,
'move' => 'task_move' ,
'move/down' => 'task_move_down' ,
'move/up' => 'task_move_up' ,
'notes/edit' => 'edit_note_form' ,