Commit 9ce37ddb authored by Patrick Etcheverry's avatar Patrick Etcheverry

Clonage de question / étape

parent 311b5ef9
......@@ -193,6 +193,30 @@ class QuestionController extends Controller
return $this->redirectToRoute('question_index');
}
/**
* Clone a question
*
*/
public function cloneAction(Request $request, Question $questionToClone)
{
$em = $this->container->get('doctrine')->getEntityManager('default');
// On crée la nouvelle étape de scénarisation
$newQuestion = clone $questionToClone;
// On met à jour les attributs
$newQuestion->setFrWording("Copie - " . $questionToClone->getFrWording());
$newQuestion->setEnWording("Copy - " . $questionToClone->getEnWording());
$newQuestion->setEsWording("Copia - " . $questionToClone->getEsWording());
$em->persist($newQuestion);
$em->flush();
/* Message de reussite, à traduire */
$request->getSession()->getFlashBag()->add('success', 'La question a bien été clonée !');
return $this->redirectToRoute('question_index');
}
/**
* Creates a form to delete a question entity.
*
......@@ -333,4 +357,5 @@ class QuestionController extends Controller
break;
}
}
}
......@@ -365,72 +365,44 @@ class ScenarisationStageController extends Controller
));
}
// Il faut que je m'occupe de cette fonction..
public function cloneAction(ScenarisationStage $scenarisationStage)
public function cloneAction(Request $request, ScenarisationStage $scenarisationStage)
{
/*$em = $this->container->get('doctrine')->getEntityManager('default');
$em = $this->container->get('doctrine')->getEntityManager('default');
// Repository de question : on en aura besoin plus tard pour vérifier des présences/absences dans la BDD
$questionRepo = $em->getRepository('ScenarisationProcessBundle:Question');
// On crée la nouvelle étape de scénarisation
$newScenarisationStage = new ScenarisationStage();
// On clone l'étape
$scenarisationProcessCopie = clone $scenarisationProcess;
// On change le titre
$scenarisationProcessCopie->setTitle($scenarisationProcessCopie->getTitle() . " - (copie)");
// On copie les attributs
$newScenarisationStage->setTitle("Copie - " . $scenarisationStage->getTitle());
$newScenarisationStage->setGoals($scenarisationStage->getGoals());
$newScenarisationStage->setDescription($scenarisationStage->getDescription());
// On clone chacune des étapes avec le lien bien sûr...
foreach ($scenarisationProcess->getScenarisationStageOrder() as $currentScenarisationStageOrder)
// On clone chacune des questions avec le lien
foreach ($scenarisationStage->getQuestionOrder() as $currentQuestionOrder)
{
/* On clone l'étape et la classe d'association */
/*$scenarisationStageCopie = clone $currentScenarisationStageOrder->getScenarisationStage();
$scenarisationStageOrderCopie = clone $currentScenarisationStageOrder;
// On change le titre de l'étape
$scenarisationStageCopie->setTitle($scenarisationStageCopie->getTitle() . " - (copie)");
/* On clone la question */
$questionCopie = clone $currentQuestionOrder->getQuestion();
/* On fait les liens entre démarche -> association && étape -> association */
$scenarisationStageCopie->addScenarisationStageOrder($scenarisationStageOrderCopie);
$scenarisationProcessCopie->addScenarisationStageOrder($scenarisationStageOrderCopie);
$questionCopie->setFrWording("Copie - " . $questionCopie->getFrWording());
$questionCopie->setEsWording("Copia - " . $questionCopie->getEsWording());
$questionCopie->setEnWording("Copy - " . $questionCopie->getEnWording());
// Et puis on enregistre
//$em->persist($scenarisationStageOrderCopie);
// On clone la classe d'association
$questionOrderCopie = clone $currentQuestionOrder;
// On clone chacune des questions avec le lien bien sûr...
/*foreach ($currentScenarisationStageOrder->getScenarisationStage()->getQuestionOrder() as $currentQuestionOrder)
{
/* Ici on vérifie que l'on a pas déjà cloné la question que l'on s'apprête à cloner
Cela peut arriver dans les rares cas où une question est positionné dans deux étapes différentes d'une même démarche
Ce qui a priori parait impossible mais on sait jamais avec ces petits coquins d'utilisateurs... */
/*$questionCopie = $questionRepo->findOneBy(array('frWording' => "Copie - " . $currentQuestionOrder->getQuestion()->getFrWording()));
if ($questionCopie == null)
{
/* On clone la question et la classe d'association */
/*$questionCopie = clone $currentQuestionOrder->getQuestion();
$questionCopie->setFrWording("Copie - " . $questionCopie->getFrWording());
$questionCopie->setEsWording("Copia - " . $questionCopie->getEsWording());
$questionCopie->setEnWording("Copy - " . $questionCopie->getEnWording());
}
// Dans tous les cas on clone la classe d'association
$questionOrderCopie = clone $currentQuestionOrder;
/* On fait les liens entre étape -> association && question -> association */
/*$questionCopie->addQuestionOrder($questionOrderCopie);
$scenarisationStageCopie->addQuestionOrder($questionOrderCopie);
// Et puis on enregistre
//$em->persist($questionOrderCopie);
}
/* On fait les liens entre étape -> association && question -> association */
$questionCopie->addQuestionOrder($questionOrderCopie);
$newScenarisationStage->addQuestionOrder($questionOrderCopie);
}
$em->persist($scenarisationProcessCopie);
$em->persist($newScenarisationStage);
$em->flush();
return $this->redirectToRoute('scenarisation_process_index', array('id' => $scenarisationProcess->getId()));
*/
/* Message de reussite, à traduire */
$request->getSession()->getFlashBag()->add('success', 'L\'étape \'' . $scenarisationStage->getTitle() . '\' a bien été clonée !');
return $this->redirectToRoute('scenarisation_stage_index');
}
private function updateMenu()
......
......@@ -22,3 +22,8 @@ question_delete:
path: /{id}/delete
defaults: { _controller: "ScenarisationProcessBundle:Question:delete" }
methods: DELETE
question_clone:
path: /{id}/clone
defaults: { _controller: "ScenarisationProcessBundle:Question:clone" }
methods: GET
......@@ -63,3 +63,8 @@ move_scenarisation_stage_in_a_process:
path: /{current_stage_id}/process/{scen_process_id}/management/{scen_stageOrder_id}/{position}/sort
defaults: { _controller: "ScenarisationProcessBundle:ScenarisationProcess:sort" }
methods: GET
scenarisation_stage_clone:
path: /{id}/clone
defaults: { _controller: "ScenarisationProcessBundle:ScenarisationStage:clone" }
methods: GET
......@@ -36,6 +36,9 @@
<i class="fa fa-pencil" aria-hidden="true"></i>
</a>
&nbsp;
<a title="CLONER" href="{{ path('question_clone', {'id': question.id }) }}">
<i class="fa fa-clone" aria-hidden="true"></i>
</a>
</td>
</tr>
{% endfor %}
......
......@@ -35,7 +35,7 @@
<i class="fa fa-comments-o" aria-hidden="true"></i>
</a>
&nbsp;
<a title="CLONER" href="#">
<a title="CLONER" href="{{ path('scenarisation_stage_clone', { 'userRole': currentRole, 'id': scenarisationStage.id }) }}">
<i class="fa fa-clone" aria-hidden="true"></i>
</a>
</td>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment