Commit 311b5ef9 authored by Patrick Etcheverry's avatar Patrick Etcheverry

Stabilisation du clonage de la démarche

parent e330a140
......@@ -154,4 +154,43 @@
</div>
</div>
</body>
<!-- Modal Dialog -->
<div class="modal fade" id="confirmDelete" role="dialog" aria-labelledby="confirmDeleteLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Delete Parmanently</h4>
</div>
<div class="modal-body">
<p>Are you sure about this ?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{'cancel'|trans}}</button>
<button type="button" class="btn btn-danger" id="confirm">{{'delete'|trans}}</button>
</div>
</div>
</div>
</div>
<!-- Dialog show event handler -->
<script type="text/javascript">
$('#confirmDelete').on('show.bs.modal', function (e) {
$message = $(e.relatedTarget).attr('data-message');
$(this).find('.modal-body p').text($message);
$title = $(e.relatedTarget).attr('data-title');
$(this).find('.modal-title').text($title);
// Pass form reference to modal for submission on yes/ok
var form = $(e.relatedTarget).closest('form');
$(this).find('.modal-footer #confirm').data('form', form);
});
<!-- Form confirm (yes/ok) handler, submits form -->
$('#confirmDelete').find('.modal-footer #confirm').on('click', function(){
$(this).data('form').submit();
});
</script>
</html>
......@@ -21,9 +21,10 @@
{{ form_start(delete_form) }}
{# Bouton supprimer #}
<i class="fa fa-trash-o" aria-hidden="true"></i>
<input class="boutonSansBordure" type="submit" value="{{'delete'|trans}}">
<input style="cursor: pointer;" data-toggle="modal" data-target="#confirmDelete" data-title="Supprimer le scénario pédagogique" data-message="Êtes-vous sûr de vouloir supprimer le scénario pédagogique ?" class="boutonSansBordure" value="{{'delete'|trans}}">
{{ form_end(delete_form) }}
</h4>
</div>
</div>
{% endblock %}
......@@ -57,4 +57,7 @@
</h4>
</div>
{% endif %}
{% endblock %}
......@@ -361,15 +361,23 @@ class ScenarisationProcessController extends Controller
public function cloneAction(ScenarisationProcess $scenarisationProcess)
{
$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
// Repository de question : on en aura besoin pour récupérer à partir d'un ID
$questionRepo = $em->getRepository('ScenarisationProcessBundle:Question');
// On clone la démarche
$scenarisationProcessCopie = clone $scenarisationProcess;
// On change le titre
$scenarisationProcessCopie->setTitle($scenarisationProcessCopie->getTitle() . " - (copie)");
/* Dans le cas où une question est présente dans deux étapes différentes de la démarche à cloner,
il ne faut pas cloner la question deux fois mais 'se souvenir' qu'on l'a déjà clonée */
/* Ce tableau enregistre les ID des questions qui ont été clonées */
$questionsAlreadyCloned = array();
/* Ce tableau enregistre les ID des clones */
$questionsCloned = array();
// On clone chacune des étapes avec le lien bien sûr...
foreach ($scenarisationProcess->getScenarisationStageOrder() as $currentScenarisationStageOrder)
{
......@@ -384,18 +392,13 @@ class ScenarisationProcessController extends Controller
$scenarisationStageCopie->addScenarisationStageOrder($scenarisationStageOrderCopie);
$scenarisationProcessCopie->addScenarisationStageOrder($scenarisationStageOrderCopie);
// Et puis on enregistre
//$em->persist($scenarisationStageOrderCopie);
// 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()));
/* On regarde la question actuelle a déjà été clonée précédemment */
$positionTrouvee = array_search($currentQuestionOrder->getQuestion()->getId(), $questionsAlreadyCloned);
if ($questionCopie == null)
if ($positionTrouvee === false)
{
/* On clone la question et la classe d'association */
$questionCopie = clone $currentQuestionOrder->getQuestion();
......@@ -403,6 +406,18 @@ class ScenarisationProcessController extends Controller
$questionCopie->setFrWording("Copie - " . $questionCopie->getFrWording());
$questionCopie->setEsWording("Copia - " . $questionCopie->getEsWording());
$questionCopie->setEnWording("Copy - " . $questionCopie->getEnWording());
/* Il faut flush maintenant car la base de données va affecter au clone
un 'id' correct. En effet, l'id avant flush est identique au clone */
$em->persist($questionCopie);
$em->flush();
array_push($questionsAlreadyCloned, $currentQuestionOrder->getQuestion()->getId());
array_push($questionsCloned, $questionCopie->getId());
}
else
{
$questionCopie = $questionRepo->find($questionsCloned[$positionTrouvee]);
}
// Dans tous les cas on clone la classe d'association
......@@ -413,10 +428,10 @@ class ScenarisationProcessController extends Controller
$scenarisationStageCopie->addQuestionOrder($questionOrderCopie);
// Et puis on enregistre
//$em->persist($questionOrderCopie);
$em->persist($questionOrderCopie);
}
}
$em->persist($scenarisationProcessCopie);
$em->flush();
......
<!-- Modal Dialog -->
<div class="modal fade" id="confirmDelete" role="dialog" aria-labelledby="confirmDeleteLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Delete Parmanently</h4>
</div>
<div class="modal-body">
<p>Are you sure about this ?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{'cancel'|trans}}</button>
<button type="button" class="btn btn-danger" id="confirm">{{'delete'|trans}}</button>
</div>
</div>
</div>
</div>
<!-- Dialog show event handler -->
<script type="text/javascript">
$('#confirmDelete').on('show.bs.modal', function (e) {
$message = $(e.relatedTarget).attr('data-message');
$(this).find('.modal-body p').text($message);
$title = $(e.relatedTarget).attr('data-title');
$(this).find('.modal-title').text($title);
// Pass form reference to modal for submission on yes/ok
var form = $(e.relatedTarget).closest('form');
$(this).find('.modal-footer #confirm').data('form', form);
});
<!-- Form confirm (yes/ok) handler, submits form -->
$('#confirmDelete').find('.modal-footer #confirm').on('click', function(){
$(this).data('form').submit();
});
</script>
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