Adding multiple dependencies

Added a selector that allows multiple dependencies to be added without
going back to the task's page.
This commit is contained in:
Emmanuel BENOîT 2016-01-17 00:40:01 +01:00
parent fa45d59ea8
commit d6f170db68
2 changed files with 39 additions and 4 deletions

View file

@ -488,6 +488,12 @@ class Ctrl_DependencyAdd
implements FormAware implements FormAware
{ {
private $form; private $form;
private $more;
public function __construct( $more = false )
{
$this->more = $more;
}
public function setForm( Form $form ) public function setForm( Form $form )
{ {
@ -496,6 +502,10 @@ class Ctrl_DependencyAdd
public function handle( Page $page ) public function handle( Page $page )
{ {
if ( $this->more ) {
return null;
}
$id = (int) $this->form->field( 'to' )->value( ); $id = (int) $this->form->field( 'to' )->value( );
$dependency = $this->form->field( 'dependency' ); $dependency = $this->form->field( 'dependency' );
$error = Loader::DAO( 'tasks' )->addDependency( $id , $dependency->value( ) ); $error = Loader::DAO( 'tasks' )->addDependency( $id , $dependency->value( ) );
@ -503,7 +513,7 @@ class Ctrl_DependencyAdd
switch ( $error ) { switch ( $error ) {
case 0: case 0:
return true; return $this->checkForMore( );
case 1: case 1:
$dependency->putError( 'The task you selected has been deleted.' ); $dependency->putError( 'The task you selected has been deleted.' );
@ -524,6 +534,16 @@ class Ctrl_DependencyAdd
return null; return null;
} }
private function checkForMore( )
{
$field = $this->form->field( 'moar' );
if ( $field === null || !$field->value( ) ) {
return true;
}
return Loader::Ctrl( 'dependency_add_form' , true );
}
} }
@ -629,8 +649,14 @@ class Ctrl_DependencyAddFiltering
$select->addOption( $task->id , $task->title ); $select->addOption( $task->id , $task->title );
} }
} }
return true;
if ( count( $this->task->possibleDependencies ) > 1 ) {
$this->selector->addField( Loader::Create( 'Field' , 'moar' , 'select' )
->setDescription( 'Add more dependencies:' )
->setMandatory( false )
->addOption( '0' , 'No' )
->addOption( '1' , 'Yes' ) );
}
} }
private function getItemsToDisplay( $depsByItem ) private function getItemsToDisplay( $depsByItem )

View file

@ -433,6 +433,12 @@ class Ctrl_EditNoteForm
class Ctrl_DependencyAddForm class Ctrl_DependencyAddForm
extends Controller extends Controller
{ {
private $more;
public function __construct( $more = false )
{
$this->more = $more;
}
public function handle( Page $page ) public function handle( Page $page )
{ {
@ -458,10 +464,13 @@ class Ctrl_DependencyAddForm
->addField( Loader::Create( 'Field' , 'to' , 'hidden' ) ->addField( Loader::Create( 'Field' , 'to' , 'hidden' )
->setDefaultValue( $id ) ) ->setDefaultValue( $id ) )
->setURL( 'tasks/view?id=' . $id ) ->setURL( 'tasks/view?id=' . $id )
->addController( Loader::Ctrl( 'dependency_add' ) ); ->addController( Loader::Ctrl( 'dependency_add' , $this->more ) );
// Handle filtering and re-displaying
$filters = $this->handleFiltering( $page , $form , $task ); $filters = $this->handleFiltering( $page , $form , $task );
if ( $this->more ) {
return $form->controller( );
}
return array( $form->controller( ) , $filters ); return array( $form->controller( ) , $filters );
} }