Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Txuleton
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patrick Etcheverry
Txuleton
Commits
dbff1041
Commit
dbff1041
authored
Sep 04, 2017
by
Patrick Etcheverry
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fonctions des tableaux dynamiques de question / réponses seq/ seances stabilisées
parent
b3068f05
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
443 additions
and
264 deletions
+443
-264
app/Resources/translations/messages.en.yml
app/Resources/translations/messages.en.yml
+9
-7
app/Resources/translations/messages.es.yml
app/Resources/translations/messages.es.yml
+9
-7
app/Resources/translations/messages.fr.yml
app/Resources/translations/messages.fr.yml
+9
-7
app/Resources/views/base.html.twig
app/Resources/views/base.html.twig
+2
-2
src/ScenarioBundle/Controller/PedagogicalScenarioController.php
...enarioBundle/Controller/PedagogicalScenarioController.php
+98
-49
src/ScenarioBundle/Controller/ProjectController.php
src/ScenarioBundle/Controller/ProjectController.php
+2
-0
src/ScenarioBundle/Controller/TrainingCourseController.php
src/ScenarioBundle/Controller/TrainingCourseController.php
+2
-0
src/ScenarioBundle/Entity/SequenceAnswer.php
src/ScenarioBundle/Entity/SequenceAnswer.php
+1
-1
src/ScenarioBundle/Entity/SessionAnswer.php
src/ScenarioBundle/Entity/SessionAnswer.php
+31
-0
src/ScenarioBundle/Resources/views/pedagogicalscenario/edit.html.twig
...Bundle/Resources/views/pedagogicalscenario/edit.html.twig
+3
-1
src/ScenarioBundle/Resources/views/pedagogicalscenario/stagequestionsanswersedit.html.twig
...s/pedagogicalscenario/stagequestionsanswersedit.html.twig
+24
-171
src/ScenarioBundle/Resources/views/project/edit.html.twig
src/ScenarioBundle/Resources/views/project/edit.html.twig
+3
-1
src/ScenarioBundle/Resources/views/trainingcourse/edit.html.twig
...narioBundle/Resources/views/trainingcourse/edit.html.twig
+3
-1
src/ScenarisationProcessBundle/Controller/QuestionController.php
...narisationProcessBundle/Controller/QuestionController.php
+2
-0
src/ScenarisationProcessBundle/Controller/ScenarisationProcessController.php
...ocessBundle/Controller/ScenarisationProcessController.php
+2
-1
src/ScenarisationProcessBundle/Controller/ScenarisationStageController.php
...ProcessBundle/Controller/ScenarisationStageController.php
+2
-0
src/ScenarisationProcessBundle/Resources/views/question/edit.html.twig
...tionProcessBundle/Resources/views/question/edit.html.twig
+3
-1
src/ScenarisationProcessBundle/Resources/views/scenarisationprocess/edit.html.twig
...undle/Resources/views/scenarisationprocess/edit.html.twig
+3
-1
src/ScenarisationProcessBundle/Resources/views/scenarisationprocess/stagesEdit.html.twig
...Resources/views/scenarisationprocess/stagesEdit.html.twig
+3
-11
src/ScenarisationProcessBundle/Resources/views/scenarisationstage/edit.html.twig
...sBundle/Resources/views/scenarisationstage/edit.html.twig
+3
-1
src/UserBundle/Controller/UserController.php
src/UserBundle/Controller/UserController.php
+2
-0
src/UserBundle/Entity/User.php
src/UserBundle/Entity/User.php
+13
-0
src/UserBundle/Resources/views/user/edit.html.twig
src/UserBundle/Resources/views/user/edit.html.twig
+3
-1
web/css/dynamicSequenceTab.css
web/css/dynamicSequenceTab.css
+1
-1
web/js/dynamicsTabs.js
web/js/dynamicsTabs.js
+210
-0
No files found.
app/Resources/translations/messages.en.yml
View file @
dbff1041
...
...
@@ -25,6 +25,8 @@ title: "Title"
description
:
"
Description"
position
:
"
Position"
design
:
"
Design"
duration
:
"
Duration"
management
:
"
Management"
admin
:
"
Administration"
questionBank
:
"
Bank
of
questions"
...
...
@@ -86,22 +88,22 @@ cancel: "Cancel"
Delete
:
pedagogicalScenario
:
title
:
"
Delete
a
pedagogical
scenario"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
pedagogical
scenario:
"
sentence
:
"
Please
confirm.
You
are
going
to
delete
the
pedagogical
scenario
"
project
:
title
:
"
Delete
a
project"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
project
:
"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
project"
trainingCourse
:
title
:
"
Delete
a
training
course"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
training
course
:
"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
training
course"
user
:
title
:
"
Delete
a
user"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
user
:
"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
user"
scenarisationProcess
:
title
:
"
Delete
a
scenarisation
process"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
scenarisation
process
:
"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
scenarisation
process"
scenarisationStage
:
title
:
"
Delete
a
scenarisation
stage"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
scenarisation
stage
:
"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
scenarisation
stage"
question
:
title
:
"
Delete
a
question"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
question
:
"
sentence
:
"
Are
you
sure
that
you
want
to
delete
the
question"
app/Resources/translations/messages.es.yml
View file @
dbff1041
...
...
@@ -25,6 +25,8 @@ title: "Título"
description
:
"
Descripción"
position
:
"
Posición"
design
:
"
Diseñar"
duration
:
"
A
TRADUIRE"
management
:
"
A
TRADUIRE"
admin
:
"
Administratión"
questionBank
:
"
Banco
de
preguntas"
...
...
@@ -85,22 +87,22 @@ cancel: "Anular"
Delete
:
pedagogicalScenario
:
title
:
"
Suprimir
un
escenario
pedagógico"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
el
escenario
pedagógico
:
"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
el
escenario
pedagógico
"
project
:
title
:
"
Suprimir
un
proyecto"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
el
proyecto
:
"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
el
proyecto
"
trainingCourse
:
title
:
"
Suprimir
una
formación"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
la
formation
:
"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
la
formation
"
user
:
title
:
"
Suprimir
un
usuario"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
el
usuario
:
"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
el
usuario
"
scenarisationProcess
:
title
:
"
Suprimir
un
proceso
de
escenarización"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
el
proceso
de
escenarización
:
"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
el
proceso
de
escenarización
"
scenarisationStage
:
title
:
"
Suprimir
una
etapa
de
escenarización"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
la
etapa
de
escenarización
:
"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
la
etapa
de
escenarización
"
question
:
title
:
"
Suprimir
una
pregunta"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
la
pregunta
:
"
sentence
:
"
Esté
usted
seguro
que
quiere
suprimir
la
pregunta
"
app/Resources/translations/messages.fr.yml
View file @
dbff1041
...
...
@@ -25,6 +25,8 @@ title: "Intitulé"
description
:
"
Description"
position
:
"
Position"
design
:
"
Concevoir"
duration
:
"
Durée"
management
:
"
Gestion"
admin
:
"
Administration"
questionBank
:
"
Banque
de
questions"
...
...
@@ -88,22 +90,22 @@ cancel: "Annuler"
Delete
:
pedagogicalScenario
:
title
:
"
Supprimer
un
scénario
pédagogique"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
le
scénario
pédagogique
:
"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
le
scénario
pédagogique
"
project
:
title
:
"
Supprimer
un
projet"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
le
projet
:
"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
le
projet
"
trainingCourse
:
title
:
"
Supprimer
une
formation"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
la
formation
:
"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
la
formation
"
user
:
title
:
"
Supprimer
un
utilisateur"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
l'utilisateur
:
"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
l'utilisateur
"
scenarisationProcess
:
title
:
"
Supprimer
une
démarche
de
scénarisation"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
la
démarche
de
scénarisation
:
"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
la
démarche
de
scénarisation
"
scenarisationStage
:
title
:
"
Supprimer
une
étape
de
scénarisation"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
l'étape
de
scénarisation
:
"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
l'étape
de
scénarisation
"
question
:
title
:
"
Supprimer
une
question"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
la
question
:
"
sentence
:
"
Êtes-vous
sûr
de
vouloir
supprimer
la
question
"
app/Resources/views/base.html.twig
View file @
dbff1041
...
...
@@ -114,14 +114,14 @@
<div
class=
"panel-body"
>
{%
if
app.session.flashBag.has
(
'success'
)
%}
<div
class=
"alert alert-success"
>
<strong>
S
uccès
!
</strong>
<strong>
S
UCCÈS
!
</strong>
{%
for
msg
in
app.session.flashBag.get
(
'success'
)
%}
{{
msg
}}
{%
endfor
%}
</div>
{%
elseif
app.session.flashBag.has
(
'alert'
)
%}
<div
class=
"alert alert-danger"
>
<strong>
A
ttention
!
</strong>
<strong>
A
TTENTION
!
</strong>
{%
for
msg
in
app.session.flashBag.get
(
'alert'
)
%}
{{
msg
}}
{%
endfor
%}
...
...
src/ScenarioBundle/Controller/PedagogicalScenarioController.php
View file @
dbff1041
...
...
@@ -16,6 +16,7 @@ use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use
ScenarioBundle\Entity\Project
;
use
ScenarioBundle\Entity\GeneralAnswer
;
use
ScenarioBundle\Entity\SequenceAnswer
;
use
ScenarioBundle\Entity\SessionAnswer
;
use
ScenarisationProcessBundle\Entity\ScenarisationStage
;
use
ScenarisationProcessBundle\Entity\QuestionOrder
;
...
...
@@ -187,6 +188,8 @@ class PedagogicalScenarioController extends Controller
$em
->
flush
();
}
/* Petit message de reussite, à traduire */
$request
->
getSession
()
->
getFlashBag
()
->
add
(
'success'
,
"Le scénario pédagogique '"
.
$pedagogicalScenario
->
getShortname
()
.
"' a bien été supprimé."
);
return
$this
->
redirectToRoute
(
'pedagogicalscenario_index'
,
array
(
'userRole'
=>
"pedagogical-engineer"
));
}
...
...
@@ -382,7 +385,7 @@ class PedagogicalScenarioController extends Controller
));
}
public
function
stageQuestionsAnswersEditAction
(
PedagogicalScenario
$pedagogicalScenario
,
ScenarisationStage
$scenarisationStage
,
Request
$userRequest
)
public
function
stageQuestionsAnswersEditAction
(
Request
$request
,
PedagogicalScenario
$pedagogicalScenario
,
ScenarisationStage
$scenarisationStage
,
Request
$userRequest
)
{
// We generate the new breadcrumb
$this
->
createBreadcrumb
(
"answers_edit"
,
$pedagogicalScenario
,
$scenarisationStage
);
...
...
@@ -464,7 +467,10 @@ class PedagogicalScenarioController extends Controller
// Sinon si c'est une question séquence
else
if
(
$Questions
[
$i
]
->
getQuestion
()
->
getType
()
==
'sequenceQuestion'
)
{
$sequencesPrecedementSpecifiees
=
null
;
/* Cette ligne permet de faire en sorte que
si la réponseSéquece est vide, un tableau de deux cases vides s'affiche
(avant, de faire cette ligne, un tableau avec seulement la ligne d'en-tête s'affichait) */
$sequencesPrecedementSpecifiees
=
array
(
null
,
null
);
// On récupère la réponse séquence si on y a déjà répondu auparavant
if
(
$reponseAlaQuestionCourante
!=
null
&&
!
empty
(
$reponseAlaQuestionCourante
->
getSequencesArray
()))
$sequencesPrecedementSpecifiees
=
$reponseAlaQuestionCourante
->
getSequencesArray
();
...
...
@@ -475,6 +481,22 @@ class PedagogicalScenarioController extends Controller
'allow_add'
=>
true
,
'by_reference'
=>
false
,));
}
else
if
(
$Questions
[
$i
]
->
getQuestion
()
->
getType
()
==
'sessionQuestion'
)
{
/* Cette ligne permet de faire en sorte que
si la réponseSéance est vide, un tableau de trois cases vides s'affiche
(avant, de faire cette ligne, un tableau avec seulement la ligne d'en-tête s'affichait) */
$seancesPrecedemmentSpecifiees
=
array
(
null
,
null
,
null
);
// On récupère la réponse séance si on y a déjà répondu auparavant
if
(
$reponseAlaQuestionCourante
!=
null
&&
!
empty
(
$reponseAlaQuestionCourante
->
getSessionsArray
()))
$seancesPrecedemmentSpecifiees
=
$reponseAlaQuestionCourante
->
getSessionsArray
();
$createurFormulaires
->
add
(
"answer_
$i
"
,
'collection'
,
array
(
'data'
=>
$seancesPrecedemmentSpecifiees
,
'required'
=>
false
,
'allow_add'
=>
true
,
'by_reference'
=>
false
,));
}
// Quelque soit le cas, il y a une remarque de la part d'un ingénieur ainsi que la validation
$createurFormulaires
->
add
(
"observation_
$i
"
,
'textarea'
,
array
(
...
...
@@ -505,12 +527,13 @@ class PedagogicalScenarioController extends Controller
{
/* On récupère les données du formulaire dans un tableau */
$tabbReponses
=
$formulaireReponses
->
getData
();
var_dump
(
$tabbReponses
);
for
(
$i
=
0
;
$i
<
$numberOfQuestions
;
$i
++
)
{
/* On récupère Réponse qui répond à la question courante */
$reponseAlaQuestionCourante
=
$this
->
extractAnswerFromCollection
(
$Questions
[
$i
]
->
getQuestion
()
->
getAnswers
(),
$pedagogicalScenario
);
// Réponse de type générale
if
(
$Questions
[
$i
]
->
getQuestion
()
->
getType
()
==
"generalQuestion"
)
{
if
(
$reponseAlaQuestionCourante
!=
null
)
...
...
@@ -541,13 +564,31 @@ class PedagogicalScenarioController extends Controller
$answer
->
setSequenceQuestion
(
$Questions
[
$i
]
->
getQuestion
());
}
$tableauApresRetraitDesNull
=
$this
->
removeNullElementsEndOfTab
(
$tabbReponses
[
"answer_
$i
"
]);
$tableauApresRetraitDesNull
=
$this
->
removeNullElementsSequenceTab
(
$tabbReponses
[
"answer_
$i
"
]);
// Fonction "Array Filter" au cas où l'utilisateur aurait laissé des cases vides (null)
$answer
->
setSequencesArray
(
$tableauApresRetraitDesNull
);
}
// Réponse de type séance
else
if
(
$Questions
[
$i
]
->
getQuestion
()
->
getType
()
==
"sessionQuestion"
)
{
// Si l'utilisateur a répondu à la question courante
if
(
$reponseAlaQuestionCourante
!=
null
)
{
$answer
=
$reponseAlaQuestionCourante
;
}
else
{
$answer
=
new
SessionAnswer
();
/* Le lien SequenceQuestion 1 <-> * SequenceAnswer (la raciproque est faire de l'autre coté) */
$answer
->
setSessionQuestion
(
$Questions
[
$i
]
->
getQuestion
());
}
$tableauApresRetraitDesNull
=
$this
->
removeNullElementsSessionTab
(
$tabbReponses
[
"answer_
$i
"
]);
// Fonction "Array Filter" au cas où l'utilisateur aurait laissé des cases vides (null)
$answer
->
setSessionsArray
(
$tableauApresRetraitDesNull
);
}
// La remarque ingé et la validité sont propores à tous les types de questions
$answer
->
setPedagogicalEngineerObservation
(
$tabbReponses
[
"observation_
$i
"
]);
...
...
@@ -561,16 +602,23 @@ class PedagogicalScenarioController extends Controller
/* On enregistre en base de données*/
$em
->
persist
(
$Questions
[
$i
]);
$em
->
flush
();
/* Petit message de reussite, à traduire */
$request
->
getSession
()
->
getFlashBag
()
->
add
(
'success'
,
"Les modifications ont bien été enregistrées."
);
}
// On doit rech
erch
er la page sinon les nouvelles données ne seront pas affichées correctement (on aura celles avant enregistrement)
// On doit rech
arg
er la page sinon les nouvelles données ne seront pas affichées correctement (on aura celles avant enregistrement)
// Alors que les modifications auront bien été prises en compte
$request
=
$this
->
getRequest
();
return
$this
->
redirect
(
$request
->
getUri
());
}
}
else
{
// Dire qu'il n'y a pas de question
/* Petit message de reussite, à traduire */
$request
->
getSession
()
->
getFlashBag
()
->
add
(
'alert'
,
"L'étape ne contient aucune question."
);
return
$this
->
redirectToRoute
(
'pedagogicalscenario_design'
,
array
(
'id'
=>
$pedagogicalScenario
->
getId
(),
'userRole'
=>
$this
->
get
(
'security.context'
)
->
getToken
()
->
getUser
()
->
getRoleForRouter
()));
}
return
$this
->
render
(
'ScenarioBundle:pedagogicalscenario:stagequestionsanswersedit.html.twig'
,
array
(
...
...
@@ -609,62 +657,63 @@ class PedagogicalScenarioController extends Controller
}
private
function
removeNullElementsEndOfTab
(
$tab
)
/* Cette fonction a pour objectif de retirer les "null" du tableau de réponse et de correctement le reconstituer */
private
function
removeNullElementsEndOfTab
(
$tab
,
$typeTableau
)
{
if
(
!
empty
(
$tab
)
)
{
end
(
$tab
);
$indiceCourant
=
sizeof
(
$tab
)
;
if
(
$typeTableau
==
"sequence"
)
$nbColEffective
=
2
;
else
$nbColEffective
=
3
;
$termine
=
false
;
if
(
sizeof
(
$tab
)
-
$nbColEffective
>=
0
)
{
$newTab
=
array
();
while
(
$termine
==
false
&&
sizeof
(
$tab
)
>
0
)
{
if
(
$indiceCourant
%
2
==
0
)
for
(
$i
=
0
;
$i
<
sizeof
(
$tab
)
;
$i
+=
$nbColEffective
)
{
if
(
$tab
[
key
(
$tab
)]
=
=
null
)
if
(
$tab
[
$i
]
!=
null
||
$tab
[
$i
+
1
]
!
=
null
)
{
prev
(
$tab
);
if
(
$tab
[
key
(
$tab
)]
==
null
)
{
$cle1
=
key
(
$tab
);
next
(
$tab
);
$cle2
=
key
(
$tab
);
prev
(
$tab
);
prev
(
$tab
);
unset
(
$tab
[
$cle1
]);
unset
(
$tab
[
$cle2
]);
}
else
{
$termine
=
true
;
}
array_push
(
$newTab
,
$tab
[
$i
],
$tab
[
$i
+
1
]);
}
else
{
$termine
=
true
;
}
$indiceCourant
-=
2
;
}
else
}
return
$newTab
;
}
/* Cette fonction a pour objectif de retirer les "null" du tableau de réponse sequence */
private
function
removeNullElementsSequenceTab
(
$tab
)
{
if
(
sizeof
(
$tab
)
-
2
>=
0
)
{
$newTab
=
array
();
for
(
$i
=
0
;
$i
<
sizeof
(
$tab
)
;
$i
+=
2
)
{
if
(
$tab
[
key
(
$tab
)]
=
=
null
)
if
(
$tab
[
$i
]
!=
null
||
$tab
[
$i
+
1
]
!
=
null
)
{
$cle
=
key
(
$tab
);
prev
(
$tab
);
unset
(
$tab
[
$cle
]);
array_push
(
$newTab
,
$tab
[
$i
],
$tab
[
$i
+
1
]);
}
else
}
}
return
$newTab
;
}
/* Cette fonction a pour objectif de retirer les "null" du tableau de réponse séance */
private
function
removeNullElementsSessionTab
(
$tab
)
{
if
(
sizeof
(
$tab
)
-
3
>=
0
)
{
$newTab
=
array
();
for
(
$i
=
0
;
$i
<
sizeof
(
$tab
)
;
$i
+=
3
)
{
if
(
$tab
[
$i
]
!=
null
||
$tab
[
$i
+
1
]
!=
null
||
$tab
[
$i
+
2
]
!=
null
)
{
$termine
=
true
;
array_push
(
$newTab
,
$tab
[
$i
],
$tab
[
$i
+
1
],
$tab
[
$i
+
2
])
;
}
$indiceCourant
--
;
}
}
}
return
$
t
ab
;
return
$
newT
ab
;
}
private
function
createBreadcrumb
(
$currentAction
,
$pedagogicalScenario
=
null
,
$scenarisationStage
=
null
)
...
...
src/ScenarioBundle/Controller/ProjectController.php
View file @
dbff1041
...
...
@@ -138,6 +138,8 @@ class ProjectController extends Controller
$em
->
flush
();
}
/* Petit message de reussite, à traduire */
$request
->
getSession
()
->
getFlashBag
()
->
add
(
'success'
,
"Le projet '"
.
$project
->
getShortname
()
.
"' a bien été supprimé."
);
return
$this
->
redirectToRoute
(
'project_index'
,
array
(
'userRole'
=>
'pedagogical-engineer'
));
}
...
...
src/ScenarioBundle/Controller/TrainingCourseController.php
View file @
dbff1041
...
...
@@ -136,6 +136,8 @@ class TrainingCourseController extends Controller
$em
->
flush
();
}
/* Petit message de reussite, à traduire */
$request
->
getSession
()
->
getFlashBag
()
->
add
(
'success'
,
"La formation '"
.
$trainingCourse
->
getShortname
()
.
"' a bien été supprimée."
);
return
$this
->
redirectToRoute
(
'training_course_index'
,
array
(
'userRole'
=>
'pedagogical-engineer'
));
}
...
...
src/ScenarioBundle/Entity/SequenceAnswer.php
View file @
dbff1041
...
...
@@ -127,7 +127,7 @@ class SequenceAnswer extends Answer
*
* @param Array $sequencesArray
*
* @return Sequence
Answer
* @return Sequence
sArray
*/
public
function
setSequencesArray
(
$sequencesArray
)
{
...
...
src/ScenarioBundle/Entity/SessionAnswer.php
View file @
dbff1041
...
...
@@ -27,6 +27,13 @@ class SessionAnswer extends Answer
*/
private
$sessionQuestion
;
/**
* @var array
*
* @ORM\Column(name="sessionsarray", type="array", nullable=true)
*/
private
$sessionsArray
;
/**
* @ORM\OneToMany(targetEntity="ScenarioBundle\Entity\Session", mappedBy="sessionAnswer", cascade={"persist"})
* @ORM\JoinColumn(nullable=true)
...
...
@@ -105,4 +112,28 @@ class SessionAnswer extends Answer
return
$this
->
sessions
;
}
/**
* Get sessionsArray
*
* @return array
*/
public
function
getSessionsArray
()
{
return
$this
->
sessionsArray
;
}
/**
* Set sessionsArray
*
* @param Array $sessionsArray
*
* @return SessionsArray
*/
public
function
setSessionsArray
(
$sessionsArray
)
{
$this
->
sessionsArray
=
$sessionsArray
;
return
$this
;
}
}
src/ScenarioBundle/Resources/views/pedagogicalscenario/edit.html.twig
View file @
dbff1041
...
...
@@ -21,7 +21,9 @@
{{
form_start
(
delete_form
)
}}
{# Bouton supprimer #}
<i
class=
"fa fa-trash-o"
aria-hidden=
"true"
></i>
<input
style=
"cursor: pointer;"
data-toggle=
"modal"
data-target=
"#confirmDelete"
data-title=
"
{{
'Delete.pedagogicalScenario.title'
|
trans
}}
"
data-message=
"
{{
'Delete.pedagogicalScenario.sentence'
|
trans
}}{{
pedagogicalScenario.shortname
}}
?"
class=
"boutonSansBordure"
value=
"
{{
'delete'
|
trans
}}
"
>
<input
style=
"cursor: pointer;"
data-toggle=
"modal"
data-target=
"#confirmDelete"
data-title=
"
{{
'Delete.pedagogicalScenario.title'
|
trans
}}
"
data-message=
"
{{
'Delete.pedagogicalScenario.sentence'
|
trans
}}
:
{{
pedagogicalScenario.shortname
}}
?"
class=
"boutonSansBordure"
value=
"
{{
'delete'
|
trans
}}
"
>
{{
form_end
(
delete_form
)
}}
</h4>
</div>
...
...
src/ScenarioBundle/Resources/views/pedagogicalscenario/stagequestionsanswersedit.html.twig
View file @
dbff1041
{%
extends
'base.html.twig'
%}
{# The displayed language of the questions is choosen with the current locale #}
{%
set
locale
=
app.request.locale
%}
...
...
@@ -16,41 +15,51 @@
{%
block
viewSubTitle
%}{{
pedagogicalScenario.shortname
}}
-
{{
scenarisationStage.title
}}{%
endblock
%}
{%
block
body
%}
<
link
rel=
"stylesheet"
href=
"
{{
asset
(
'css/dynamicSequenceTab.css'
)
}}
"
>
{%
if
questions
is
not
empty
%}
<
script
src=
"
{{
asset
(
'js/dynamicsTabs.js'
)
}}
"
></script
>
<link
rel=
"stylesheet"
href=
"
{{
asset
(
'css/dynamicSequenceTabb.css'
)
}}
"
>
{%
if
submit
%}
<div
style=
"max-width : 300px;"
class=
"alert alert-success"
role=
"alert"
>
Données correctement enregistrées
</div>
{%
endif
%}
{%
if
questions
is
not
empty
%}
<form
method=
"post"
{{
form_enctype
(
formulaireReponses
)
}}
>
{# Pour chacune des questions de l'étape #}
{%
for
questionOrder
in
questions
%}
<div
id=
"container"
>
{# On affiche l'intitulé de la question dans la locale courante #}
<b>
#
{{
questionOrder.position
}}
-
{{
attribute
(
questionOrder.question
,
localeWording
)
}}
</b>
<br
/>
<br
/>
{# On affiche le champ de saisie de la réponse #}
{%
if
questionOrder.question.getType
==
'generalQuestion'
%}
{{
form_widget
(
formulaireReponses
[
"answer_"
~
loop.index0
])
}}
{%
elseif
questionOrder.question.getType
==
'sequenceQuestion'
%}
<div
id=
"sequenceQuestion"
>
<div
{{
form_enctype
(
formulaireReponses
[
"answer_"
~
loop.index0
])
}}
>
{{
form_widget
(
formulaireReponses
[
"answer_"
~
loop.index0
])
}}
<div
id=
"sequenceQuestion"
>
<div
{{
form_enctype
(
formulaireReponses
[
"answer_"
~
loop.index0
])
}}
>
{{
form_widget
(
formulaireReponses
[
"answer_"
~
loop.index0
])
}}
</div>
</div>
</div>
<table
id=
"tableauSequences"
>
</table>
<button
type=
"button"
onclick=
"ajouter()"
>
Ajouter!
</button>
<table
id=
"tableauSequences"
class=
"table-bordered"
style=
"width: 100%;"
></table>
<button
type=
"button"
onclick=
"ajouterLigne('tableauSequences',3)"
>
Ajouter!
</button>
<script
type=
"text/javascript"
>
initSeqTab
();
</script>
{%
elseif
questionOrder.question.getType
==
'sessionQuestion'
%}
<div
id=
"sessionQuestion"
onload=
"alert('toto')"
>
<div
{{
form_enctype
(
formulaireReponses
[
"answer_"
~
loop.index0
])
}}
>
{{
form_widget
(
formulaireReponses
[
"answer_"
~
loop.index0
])
}}
</div>
</div>
<table
id=
"tableauSeances"
class=
"table-bordered"
style=
"width: 100%;"
></table>
<button
type=
"button"
onclick=
"ajouterLigne('tableauSeances',4)"
>
Ajouter!
</button>
<script
type=
"text/javascript"
>
initSessTab
();
</script>
{%
endif
%}
<br/>
{{
form_widget
(
formulaireReponses
[
"isValid_"
~
loop.index0
])
}}
...
...
@@ -75,160 +84,4 @@
{%
else
%}
<p><i>
Aucune question associée à l'étape courante.
</i></p>
{%
endif
%}
<script>
var
modeleDataPrototype
=
$
(
'
div#sequenceQuestion
'
).
children
().
children
().
attr
(
'
data-prototype
'
);
var
nbLignes
=
0
;
var
nbItem
=
0
;
// Il s'agit du nombre de cases
creertableau
();
recupereDonnees
();
supprimerConneriesSymfony
();
function
creertableau
()
{
// Creation du tbody
var
tbody
=
document
.
createElement
(
"
tbody
"
);
document
.
getElementById
(
'
tableauSequences
'
).
appendChild
(
tbody
);
// Creation de la ligne d'entete
var
entete
=
document
.
createElement
(
"
tr
"
);
entete
.
setAttribute
(
"
id
"
,
"
entete
"
);
//document.getElementById('tableauSequences').appendChild(entete);
tbody
.
appendChild
(
entete
);
// Dans l'entete, on ajoute les 4 cases
var
case1
=
document
.
createElement
(
"
th
"
);
case1
.
setAttribute
(
"
id
"
,
"
c1_l1
"
);
case1
.
innerHTML
=
"
Title
"
;
//document.getElementById('entete').appendChild(case1);
document
.
getElementById
(
'
entete
'
).
appendChild
(
case1
);
var
case2
=
document
.
createElement
(
"
th
"
);
case2
.
setAttribute
(
"
id
"
,
"
c2_l1
"
);
case2
.
innerHTML
=
"
Duration
"
;
document
.
getElementById
(
'
entete
'
).
appendChild
(
case2
);
var
case3
=
document
.
createElement
(
"
th
"
);
case3
.
setAttribute
(
"
id
"
,
"
c3_l1
"
);
case3
.
innerHTML
=
"
Gestion
"
;
document
.
getElementById
(
'
entete
'
).
appendChild
(
case3
);
}
function
creerLigne
()
{
nouvelleLigne
=
document
.
getElementById
(
"
tableauSequences
"
).
insertRow
();
nbLignes
++
;
nouvelleLigne
.
insertCell
();
nouvelleLigne
.
insertCell
();
nouvelleLigne
.
insertCell
();
mettreBoutonsGestionLigne
(
nouvelleLigne
);
return
nouvelleLigne
;