Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenQuizz
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
10
Issues
10
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Weber Rodolphe
OpenQuizz
Commits
1857ed08
Commit
1857ed08
authored
Sep 28, 2021
by
Jérémie Passerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Correction bugs pour soutenance oral
parent
bcc68db3
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
291 additions
and
106 deletions
+291
-106
Contenu.vue
src/Contenu.vue
+6
-2
ImporterFichier.vue
src/ImporterFichier.vue
+0
-1
Index.vue
src/Index.vue
+20
-16
Maj.vue
src/Maj.vue
+2
-1
Previsualiser_Moodle.vue
src/Previsualiser_Moodle.vue
+26
-8
TagsFixes.vue
src/TagsFixes.vue
+33
-22
TagsLibres.vue
src/TagsLibres.vue
+27
-4
Consulter_Contenu.vue
src/components/Consulter_Contenu.vue
+25
-9
Modifier_Contenu.vue
src/components/Modifier_Contenu.vue
+53
-17
Volet_Base.vue
src/components/Volet_Base.vue
+30
-6
Edit_Calculee_Simple.vue
src/components/moodle/Edit_Calculee_Simple.vue
+5
-2
Edit_Choix_Multiple.vue
src/components/moodle/Edit_Choix_Multiple.vue
+5
-2
Edit_Contenus.vue
src/components/moodle/Edit_Contenus.vue
+35
-10
Edit_Numerique.vue
src/components/moodle/Edit_Numerique.vue
+5
-2
Edit_Reponse_Courte.vue
src/components/moodle/Edit_Reponse_Courte.vue
+5
-2
Edit_Vrai_Faux.vue
src/components/moodle/Edit_Vrai_Faux.vue
+5
-2
Service.js
src/service/Service.js
+9
-0
No files found.
src/Contenu.vue
View file @
1857ed08
...
...
@@ -4,7 +4,7 @@
@
newContenu=
"newContenu"
v-bind:nvoContenu=
"nvoContenu"
v-bind:auteur=
"auteur"
v-bind:contenuAjoute=
"contenuAjoute"
v-bind:majContenus=
"majContenus"
v-bind:darktheme=
"darktheme"
v-bind:deconnexion=
"deconnexion"
v-bind:etat=
"etat"
@
ChangerTitre=
"ChangerTitre"
@
volet_desactive=
"voletDesactive"
@
chargerTagsLibres=
"chargerTagsLibres"
/>
@
chargerTagsLibres=
"chargerTagsLibres"
v-bind:raz=
"raz"
v-bind:rechargerTagsLibres=
"rechargerTagsLibres"
/>
</div>
</
template
>
...
...
@@ -77,8 +77,12 @@ export default {
darktheme
:
{},
// Signal de déconnexion
deconnexion
:
{},
// raz affichage principal
raz
:
{},
// etat. Sera utile pour certaines réinitialisations de l'affichage
etat
:
{}
etat
:
{},
// signal pour recharger les Tags Libres
rechargerTagsLibres
:
{}
}
}
</
script
>
...
...
src/ImporterFichier.vue
View file @
1857ed08
...
...
@@ -124,7 +124,6 @@ export default {
}
)
}
else
{
alert
(
"titre_fichier : "
+
this
.
titreFichier
)
Service
.
uploaderContenuPersoNonXml
(
this
.
formData
,
this
.
auteur
,
JSON
.
stringify
(
event
.
tags
),
this
.
descriptifFichier
,
this
.
typeDocument
,
this
.
titreFichier
).
then
(
function
(
reponse
)
{
...
...
src/Index.vue
View file @
1857ed08
...
...
@@ -7,7 +7,7 @@
v-bind:nouveauTitre=
"nouveauTitre"
>
</Menu>
<Contenu
v-show=
"etat === 'Contenu'"
v-bind:auteur=
"auteur"
v-bind:nvoContenu=
"nvoContenu"
v-bind:contenuAjoute=
"contenuAjoute"
@
choix_variante=
"choixVariante"
@
newContenu=
"newContenu"
@
choix_variante=
"choixVariante"
@
newContenu=
"newContenu"
v-bind:raz=
"raz"
v-bind:rechargerTagsLibres=
"rechargerTagsLibres"
@
rechercherNouvellesPublications=
"rechercherPublications = !rechercherPublications"
v-bind:etat=
"etat"
v-bind:majContenus=
"majContenus"
v-bind:darktheme=
"darktheme"
v-bind:deconnexion=
"deconnexion"
@
ChangerTitre=
"ChangerTitre"
@
volet_desactive=
"voletDesactive"
@
chargerTagsLibres=
"chargerTagsLibres"
></Contenu>
...
...
@@ -19,7 +19,7 @@
<GererTagsLibres
v-show=
"etat === 'Tags'"
v-bind:auteur=
"auteur"
v-bind:modeGestion=
"modeGestion"
v-bind:modeModificationContenu=
"modeModificationContenu"
@
revenirAuContenu=
"revenirAuContenu"
></GererTagsLibres>
<TagsFixes
v-show=
"etat === 'newContenu_Tags'"
></TagsFixes>
<!--
<p
style=
"text-align: center"
v-show=
"errorLogin"
>
{{
errorMessage
}}
</p>
-->
<!--
<p
style=
"text-align: center"
v-show=
"errorLogin"
>
{{
errorMessage
}}
</p>
-->
<NewContenu
v-show=
"etat === 'newContenu'"
v-bind:auteur=
"auteur"
@
contenuAjoute=
"ajouterUnContenu"
@
retourArriere=
"retourArriere"
></NewContenu>
<ImporterFichier
v-show=
"etat === 'importContenu'"
v-bind:auteur=
"auteur"
@
contenuAjoute=
"ajouterUnContenu"
@
retourArriere=
"retourArriere"
></ImporterFichier>
<span
id=
"prout"
v-show=
"hoverManuel"
>
Manuel d'utilisation d'OpenQuizz
</span>
...
...
@@ -62,13 +62,15 @@ export default {
// errorMessage: 'Login ou mot de passe erroné',
darktheme
:
''
,
deconnexion
:
false
,
raz
:
false
,
nouveauTitre
:
''
,
couleurFond
:
'aqua'
,
modeGestion
:
false
,
hoverManuel
:
false
,
etatTmp
:
''
,
voletOuvert
:
true
,
modeModificationContenu
:
false
modeModificationContenu
:
false
,
rechargerTagsLibres
:
false
,
}
},
methods
:
{
...
...
@@ -92,19 +94,20 @@ export default {
this
.
deconnexion
=
!
this
.
deconnexion
localStorage
.
clear
()
}
else
else
{
this
.
etat
=
event
.
choix
if
(
event
.
choix
===
"Contenu"
){
this
.
deconnexion
=
!
this
.
deconnexion
this
.
raz
=
!
this
.
raz
}
if
(
event
.
choix
===
"Tags"
)
{
if
(
event
.
choix
===
"Tags"
)
{
this
.
modeGestion
=
!
this
.
modeGestion
this
.
modeModificationContenu
=
false
}
if
(
event
.
choix
===
"Mises à jour"
)
{
if
(
event
.
choix
===
"Mises à jour"
)
{
this
.
isRecu
=
event
.
isRecu
this
.
isPropose
=
event
.
isPropose
}
}
},
/**
* @vuese
...
...
@@ -220,6 +223,7 @@ export default {
this
.
etat
=
'Contenu'
this
.
modeGestion
=
!
this
.
modeGestion
this
.
modeModificationContenu
=
false
this
.
rechargerTagsLibres
=
!
this
.
rechargerTagsLibres
}
},
...
...
src/Maj.vue
View file @
1857ed08
...
...
@@ -26,7 +26,8 @@
<tr
v-for=
"(item, index) in contenusRecu"
:key=
"index"
>
<td
:id=
"'maj' + JSON.stringify(item._id)"
v-on:click=
"consulterContenuMaj(item)"
>
{{
item
.
titre
}}
</td>
<b-popover
:target=
"'maj' + JSON.stringify(item._id)"
v-on:show=
"rechercherTexteMaj(item)"
triggers=
"hover"
placement=
"bottom"
>
<p
id=
"beautiful"
v-html=
"texteDuContenuMaj"
></p>
<p
id=
"beautiful"
v-html=
"texteDuContenuMaj"
v-if=
"item.source !== 'moodle'"
></p>
<Previsualiser
_Moodle
v-bind:id=
"item.idContenuEnCours"
v-bind:provenance=
"'maj'"
v-bind:source=
"item.source"
v-else
></Previsualiser
_Moodle
>
</b-popover>
<td>
{{
item
.
auteurDemande
}}
</td>
...
...
src/Previsualiser_Moodle.vue
View file @
1857ed08
...
...
@@ -37,7 +37,9 @@ export default {
// provenance du contenu survolé
provenance
:
{},
// source du contenu survole
source
:
{}
source
:
{},
// declencheur de changement de version
changerVersion
:
{}
},
mounted
()
{
/**
...
...
@@ -45,10 +47,10 @@ export default {
* A chaque fois que prévisualiser_moodle est appelé on fait appel a parserTexte pour permettre d'appeler le bon composant d'affichage
*/
let
that
=
this
// alert(this.provenance)
if
(
this
.
source
===
'moodle'
)
{
if
(
this
.
provenance
!==
'en-cours'
&&
this
.
provenance
!==
'maj'
)
{
console
.
log
(
"this.provenance : "
+
this
.
provenance
!==
'maj'
)
if
(
!
(
this
.
provenance
===
'en-cours'
||
this
.
provenance
===
'maj'
))
{
Service
.
parserTexte
(
JSON
.
stringify
(
this
.
id
)).
then
(
function
(
response
)
{
that
.
questionParsee
=
response
.
data
})
...
...
@@ -58,8 +60,24 @@ export default {
})
}
}
},
watch
:
{
changerVersion
:
function
()
{
let
that
=
this
if
(
this
.
id
!==
undefined
)
{
if
(
this
.
provenance
!==
'en-cours'
&&
this
.
provenance
!==
'maj'
)
{
Service
.
parserTexteVersion
(
JSON
.
stringify
(
this
.
id
),
this
.
changerVersion
).
then
(
function
(
response
)
{
that
.
questionParsee
=
response
.
data
})
}
else
{
Service
.
parserTexteEnCours
(
JSON
.
stringify
(
this
.
id
),
this
.
changerVersion
).
then
(
function
(
response
)
{
that
.
questionParsee
=
response
.
data
})
}
}
}
}
}
</
script
>
...
...
src/TagsFixes.vue
View file @
1857ed08
<
template
>
<div
style=
"text-align: center"
>
<p
style=
"margin-top: 1vh"
>
Bienvenue dans la page de choix des tags
</p>
<p>
Pour compléter le contenu ajouté, il va falloir lui associer des tags
</p>
<p
v-if=
"(provenance === 'tiers' || provenance === 'en-cours') && provenance !== undefined"
>
Les tags fixes associés au contenu
</p>
<div
v-if=
"provenance === 'perso' || provenance === undefined"
>
<p
style=
"margin-top: 1vh"
>
Bienvenue dans la page de choix des tags
</p>
<p
>
Pour compléter le contenu ajouté, il va falloir lui associer des tags
</p>
</div>
<label>
Choisir le tag de niveau 1
</label><br><br>
<select
@
change=
"niveau1()"
v-model=
"tagUn"
>
<select
@
change=
"niveau1()"
v-model=
"tagUn"
:disabled=
"(provenance === 'tiers' || provenance === 'en-cours') && provenance !== undefined"
>
<option>
Tag1
</option>
<option>
Tag2
</option>
<option>
Tag3
</option>
</select><br><br>
<label>
Choisir le tag de niveau 2
</label><br><br>
<select
@
change=
"niveau2()"
:disabled=
"niveauDeux === 0"
v-model=
"tagDeux"
>
<select
@
change=
"niveau2()"
:disabled=
"niveauDeux === 0
|| (provenance === 'tiers' || provenance === 'en-cours') && provenance !== undefined
"
v-model=
"tagDeux"
>
<option
v-for=
"i in 3"
:key=
"i"
>
{{
tagUn
}}
.
{{
i
}}
</option>
</select><br><br>
<label>
Choisir le tag de niveau 3
</label><br><br>
<select
@
change=
"niveau3()"
:disabled=
"niveauTrois === 0"
v-model=
"tagTrois"
>
<select
@
change=
"niveau3()"
:disabled=
"niveauTrois === 0
|| (provenance === 'tiers' || provenance === 'en-cours') && provenance !== undefined
"
v-model=
"tagTrois"
>
<option
v-for=
"i in 5"
:key=
"i"
>
{{
tagDeux
}}
.
{{
i
}}
</option>
</select><br><br>
<
button
v-on:click=
"validerTags"
:disabled=
"validationTags === 0"
>
Valider
</button
>
<
p>
{{
tagsModifies
}}
</p
>
<
p>
provenance :
{{
provenance
}}
</p
>
<
button
v-on:click=
"validerTags"
:disabled=
"validationTags === 0"
v-show=
"provenance === undefined || provenance === 'perso'"
>
Valider
</button
>
</div>
</
template
>
...
...
@@ -37,7 +40,8 @@ export default {
tagUn
:
''
,
tagDeux
:
''
,
tagTrois
:
''
,
tagsModifies
:
''
tagsModifies
:
''
,
tagsDeLaBanque
:
''
,
}
},
props
:
{
...
...
@@ -46,7 +50,9 @@ export default {
// les tags "banque" du contenu
tagsBanque
:
{},
// l'id du contenu cliqué
id_contenu
:
{}
id_contenu
:
{},
// provenance du contenu
provenance
:
{},
},
methods
:{
/**
...
...
@@ -69,6 +75,8 @@ export default {
let
data
=
{
id_contenu
:
JSON
.
stringify
(
this
.
id_contenu
),
tags
:
tagsChoisis
}
Service
.
modifierTagsFixes
(
data
)
this
.
tagsModifies
=
"tags modifiés"
this
.
$emit
(
"tags"
,
{
tags
:
tagsChoisis
})
}
},
/**
...
...
@@ -84,7 +92,6 @@ export default {
this
.
niveauDeux
=
1
}
else
{
alert
(
"Je le suis ici"
)
// si on est dans le mode modification de contenu, on efface les tags hiérarchiquement inférieurs et on bloque l'échelon 3
// this.niveauDeux = 0
//alert(this.niveauTrois)
...
...
@@ -116,16 +123,20 @@ export default {
this
.
tagsModifies
=
""
this
.
validationTags
=
1
this
.
niveauDeux
=
1
//alert(this.tagsBanque.length)
this
.
tagUn
=
this
.
tagsBanque
[
0
]
if
(
this
.
tagsBanque
.
length
>
1
){
if
(
typeof
this
.
tagsBanque
===
"string"
)
this
.
tagsDeLaBanque
=
JSON
.
parse
(
this
.
tagsBanque
)
else
this
.
tagsDeLaBanque
=
this
.
tagsBanque
this
.
tagUn
=
this
.
tagsDeLaBanque
[
0
]
if
(
this
.
tagsDeLaBanque
.
length
>
1
){
//ert("Hihi")
this
.
tagDeux
=
this
.
tagsBanque
[
1
]
this
.
tagDeux
=
this
.
tags
DeLa
Banque
[
1
]
this
.
niveauTrois
=
1
}
if
(
this
.
tagsBanque
.
length
===
3
){
if
(
this
.
tags
DeLa
Banque
.
length
===
3
){
//alert("Huhu")
this
.
tagTrois
=
this
.
tagsBanque
[
2
]
this
.
tagTrois
=
this
.
tags
DeLa
Banque
[
2
]
}
}
}
...
...
src/TagsLibres.vue
View file @
1857ed08
...
...
@@ -16,7 +16,7 @@
<span
id=
"versGestionTags"
style=
"font-size: smaller"
@
click=
"chargerGestionTagsLibres"
>
Gestion des tags libres
</span>
</div>
<p>
----------------------------------------------------------------------------
</p>
<TagsFixes
v-bind:isModif=
"isModif"
v-bind:tagsBanque=
"tagsBanque"
v-bind:id_contenu=
"id_contenu
"
></TagsFixes>
<TagsFixes
@
tags=
"nouveauxTags"
v-bind:isModif=
"isModif"
v-bind:tagsBanque=
"tagsBanque"
v-bind:id_contenu=
"id_contenu"
v-bind:provenance=
"provenance
"
></TagsFixes>
</div>
</
template
>
...
...
@@ -33,11 +33,13 @@ export default {
// récupération de l'auteur
auteur
:
{},
// provenance du contenu
contenuCliqueP
rovenance
:
{},
p
rovenance
:
{},
// Signal d'activation ou non du theme sombre
darktheme
:
{},
// Récupération d'un tag libre ajouté
tagLibreAssocie
:
{}
tagLibreAssocie
:
{},
// signal pour recharger les Tags Libres
rechargerTagsLibres
:
{}
},
methods
:{
/**
...
...
@@ -76,6 +78,13 @@ export default {
*/
chargerGestionTagsLibres
:
function
()
{
this
.
$emit
(
"chargerTagsLibres"
)
},
/**
* @vuese
* Recup des nouveaux tags fixes
*/
nouveauxTags
:
function
(
event
)
{
this
.
$emit
(
"tags"
,
{
tags
:
event
.
tagsChoisis
})
}
},
data
:
function
()
{
...
...
@@ -110,7 +119,7 @@ export default {
},
/**
* @vuese
* Traitement d'un tag associé via drag&dro
* Traitement d'un tag associé via drag&dro
p
*/
tagLibreAssocie
:
function
()
{
//alert(this.auteur)
...
...
@@ -122,7 +131,21 @@ export default {
that
.
tagsLibres
=
response
.
data
})
})
},
/**
* @vuese
* recharge les tags dispo apres ajout dans le menu
*/
rechargerTagsLibres
:
function
()
{
let
that
=
this
Service
.
recupererTagLibre
(
this
.
auteur
).
then
(
function
(
response
)
{
that
.
tagsDeAuteur
=
response
.
data
Service
.
recupererTagLibreContenu
(
JSON
.
stringify
(
that
.
tagLibreAssocie
),
that
.
auteur
).
then
(
function
(
response
)
{
that
.
tagsLibres
=
response
.
data
})
})
}
},
computed
:
{
/**
...
...
src/components/Consulter_Contenu.vue
View file @
1857ed08
...
...
@@ -57,10 +57,11 @@
</table>
<br>
<p>
Voici l'intérieur de votre contenu dans sa version
{{
versionChoisie
}}
:
</p>
<p>
{{
amorceContenu
}}
</p>
<span
v-if=
"sourceContenu !== 'moodle'"
contenteditable=
"false"
style=
"background-color: white; width: 50vw; margin-left: auto; margin-right: auto"
v-html=
"formatterMarkdown()"
>
</span>
<Previsualiser
_Moodle
v-else
v-bind:id=
"idContenu"
v-bind:provenance=
"contenuCliqueProvenance"
></Previsualiser
_Moodle
>
<Previsualiser
_Moodle
v-else
v-bind:id=
"idContenu"
v-bind:provenance=
"contenuCliqueProvenance"
v-bind:source=
"sourceContenu"
v-bind:changerVersion=
"changerDeVersion"
></Previsualiser
_Moodle
>
<br>
</div>
<p
style=
"text-align: center"
v-show=
"isContenuRefuse"
>
Ceci est un contenu en cours ayant fait l'objet d'un refus de publication. Aucune action disponible
</p>
...
...
@@ -125,6 +126,12 @@ export default {
// Permet de revenir à Volet_Base
this
.
$emit
(
"retour_arriere"
,
{
panierChoisi
:
this
.
contenuCliqueProvenance
!==
'banque'
})
}
this
.
changerDeVersion
=
this
.
versionMax
let
data
=
{
id_contenu
:
JSON
.
stringify
(
this
.
idContenu
)
}
Service
.
recalibrerGit
(
data
)
this
.
versionChoisie
=
this
.
versionMax
},
/**
* @vuese
...
...
@@ -132,12 +139,16 @@ export default {
*/
changerVersion
:
function
()
{
let
that
=
this
if
(
this
.
sourceContenu
!==
'moodle'
)
{
Service
.
recupererTexteVersionContenu
(
JSON
.
stringify
(
this
.
contenuClique
.
_id
),
this
.
versionChoisie
).
then
(
function
(
response
)
{
that
.
contenu
=
response
.
data
// alert(response.data)
}
)
}
else
{
this
.
changerDeVersion
=
this
.
versionChoisie
}
},
/**
* @vuese
...
...
@@ -182,7 +193,9 @@ export default {
populariteContenu
:
0
,
noteContenu
:
0
,
tagsContenus
:
[],
idContenu
:
''
idContenu
:
''
,
changerDeVersion
:
0
,
amorceContenu
:
''
}
},
watch
:
{
...
...
@@ -195,8 +208,11 @@ export default {
if
(
this
.
contenuCliqueProvenance
===
'maj'
){
this
.
idContenu
=
this
.
contenuClique
.
idContenuEnCours
this
.
amorceContenu
=
"Voici l'intérieur de la version proposée pour la maj : "
}
else
{
this
.
idContenu
=
this
.
contenuClique
.
_id
this
.
amorceContenu
=
"Voici l'intérieur de votre contenu dans sa version "
+
this
.
versionChoisie
()
+
":"
}
this
.
titreContenu
=
this
.
contenuClique
.
titre
this
.
populariteContenu
=
this
.
contenuClique
.
popularite
...
...
src/components/Modifier_Contenu.vue
View file @
1857ed08
...
...
@@ -24,7 +24,7 @@
<br>
<select
v-show=
"contenuCliqueProvenance === 'perso' && versionMax > 1"
v-model=
"versionChoisie"
v-on:change=
"changerVersion"
style=
"margin-right: 5px; background: none; border: none"
>
<option
v-for=
"i in versionMax"
v-bind:key=
"i"
>
v
{{
i
}}
</option>
<option
v-for=
"i in versionMax"
v-bind:key=
"i"
>
{{
i
}}
</option>
</select>
<input
type=
"text"
id=
"titreDuContenu"
placeholder=
"titre du contenu"
style=
"width: 350px; outline: none; border: none"
v-model=
"titreContenu"
>
</div>
...
...
@@ -60,17 +60,22 @@
<br>
<div
class=
"mavonEditor"
v-show=
"!isModeTag && sourceContenu !== 'moodle'"
>
<mavon-editor
:language=
"'fr'"
style=
"position: static; height: 78vh; margin-top: -0.77%"
v-model=
"texte
DuContenu
"
/>
<mavon-editor
:language=
"'fr'"
style=
"position: static; height: 78vh; margin-top: -0.77%"
v-model=
"texte
Affiche
"
/>
</div>
<TagsLibres
v-show=
"isModeTag"
v-bind:contenu=
"this.contenuClique"
v-bind:auteur=
"auteur"
@
actionTagLibre=
"actionTagLibre"
style=
"position: static; height: 78vh; margin-top: -0.77%"
v-bind:darktheme=
"darktheme"
@
chargerTagsLibres=
"chargerTagsLibres"
v-bind:tagLibreAssocie=
"tagLibreAssocie"
></TagsLibres>
style=
"position: static; height: 78vh; margin-top: -0.77%"
v-bind:darktheme=
"darktheme"
@
chargerTagsLibres=
"chargerTagsLibres"
v-bind:tagLibreAssocie=
"tagLibreAssocie"
v-bind:provenance=
"contenuCliqueProvenance"
v-bind:rechargerTagsLibres=
"rechargerTagsLibres"
@
tags=
"nouveauxTags"
></TagsLibres>
<Edit
_Contenus
@
actionMoodle=
"actionMoodle"
v-show=
"!isModeTag && sourceContenu === 'moodle'"
v-bind:darktheme=
"darktheme"
v-bind:idContenu=
"idContenu"
v-bind:source=
"sourceContenu"
v-bind:provenance=
"contenuCliqueProvenance"
></Edit
_Contenus
>
v-bind:idContenu=
"idContenu"
v-bind:source=
"sourceContenu"
v-bind:provenance=
"contenuCliqueProvenance"
v-bind:changerVersion=
"changerDeVersion"
v-bind:versionCourante=
"this.versionMax"
></Edit
_Contenus
>
<Previsualiser
_Moodle
v-bind:changerVersion=
"changerDeVersion"
v-bind:source=
"'pas moodle'"
v-show=
"false"
></Previsualiser
_Moodle
>
<div
class=
"markdown"
v-show=
"sourceContenu !== 'moodle'"
>
<br>
<button
id=
"validerModif"
v-on:click=
"action('valider')"
>
modifier
</button>
<button
id=
"validerModif"
v-on:click=
"action('valider')"
v-if=
"versionMax === versionChoisie"
>
modifier
</button>
<button
id=
"retourArriere"
v-on:click=
"action('arriere')"
>
revenir en arrière
</button>
</div>
...
...
@@ -84,11 +89,13 @@ import Service from "../service/Service";
import
StarRating
from
'vue-star-rating'
import
TagsLibres
from
"../TagsLibres"
;
import
Edit_Contenus
from
"./moodle/Edit_Contenus"
;
import
Previsualiser_Moodle
from
"@/Previsualiser_Moodle"
;
export
default
{
name
:
"Modifier_Contenu"
,
components
:
{
Previsualiser_Moodle
,
Edit_Contenus
,
TagsLibres
,
StarRating
...
...
@@ -107,7 +114,9 @@ export default {
// Signal d'activation ou non du theme sombre
darktheme
:
{},
// Récupération d'un tag libre ajouté
tagLibreAssocie
:
{}
tagLibreAssocie
:
{},
// signal pour recharger les Tags Libres
rechargerTagsLibres
:
{}
},
data
:
function
()
{
return
{
...
...
@@ -125,7 +134,9 @@ export default {
titreModifierTags
:
"modifier Tags"
,
typeContenu
:
''
,
sourceContenu
:
''
,
idContenu
:
''
idContenu
:
''
,
texteAffiche
:
''
,
changerDeVersion
:
''
}
},
methods
:
{
...
...
@@ -139,18 +150,21 @@ export default {
if
(
actionChoisie
===
'valider'
){
if
(
this
.
sourceContenu
===
'moodle'
){
alert
(
"Je modifie un moodle"
)
console
.
log
(
"Je modifie un moodle"
)
}
else
{
// evenement de modification du texte d'un contenu
// @arg l'action choisie, ici 'valider'
// @arg le texte modifié
this
.
$emit
(
"choixModif"
,
{
action
:
actionChoisie
,
nouveauTexte
:
this
.
texte
DuContenu
,
titre
:
this
.
titreContenu
})
this
.
$emit
(
"choixModif"
,
{
action
:
actionChoisie
,
nouveauTexte
:
this
.
texte
Affiche
,
titre
:
this
.
titreContenu
})
}
}
else
{
// evenement de retour en arrière vers Consulter_COntenu
// @arg l'action choisie, ici 'arriere'
this
.
$emit
(
"choixModif"
,
{
action
:
actionChoisie
})
}
},
/**
* @vuese
...
...
@@ -158,12 +172,16 @@ export default {
*/
changerVersion
:
function
()
{
let
that
=
this
if
(
this
.
contenuCliqueProvenance
===
'perso'
&&
this
.
versionMax
>
1
)
{
if
(
this
.
sourceContenu
!==
'moodle'
)
{
Service
.
recupererTexteVersionContenu
(
JSON
.
stringify
(
this
.
contenuClique
.
_id
),
this
.
versionChoisie
).
then
(
function
(
response
)
{
that
.
texteDuContenu
=
response
.
data
that
.
texteAffiche
=
response
.
data
// alert(response.data)
}
)
}
else
{
this
.
changerDeVersion
=
this
.
versionChoisie
}
)}
},
/**
* @vuese
...
...
@@ -236,10 +254,27 @@ export default {
this
.
$emit
(
"chargerTagsLibres"
)
},
actionMoodle
:
function
(
event
)
{
if
(
event
.
action
===
'arriere'
)
if
(
this
.
contenuCliqueProvenance
===
'perso'
){
let
data
=
{
id_contenu
:
JSON
.
stringify
(
this
.
idContenu
)
}
Service
.
recalibrerGit
(
data
)
this
.
changerDeVersion
=
this
.
versionMax
this
.
versionChoisie
=
this
.
versionMax
}
if
(
event
.
action
===
'arriere'
){
this
.
$emit
(
"choixModif"
,
{
action
:
event
.
action
})
}
else
this
.
$emit
(
"choixModif"
,
{
action
:
event
.
action
,
questionParsee
:
event
.
questionParsee
,
titre
:
this
.
titreContenu
})
},
/**
* @vuese
* Recup des nouveaux tags fixes
*/
nouveauxTags
:
function
(
event
)
{
this
.
$emit
(
"tags"
,
{
tags
:
event
.
tagsChoisis
})
}
...
...
@@ -271,7 +306,7 @@ export default {
}
else
{
return
this
.
contenuClique
.
moyenne
}
}
}
,
},
watch
:
{
/**
...
...
@@ -288,6 +323,7 @@ export default {
this
.
sourceContenu
=
this
.
contenuClique
.
source
this
.
populariteContenu
=
this
.
contenuClique
.
popularite
this
.
idContenu
=
this
.
contenuClique
.
_id
this
.
texteAffiche
=
this
.
texteDuContenu
this
.
isContenuRefuse
=
Object
.
prototype
.
hasOwnProperty
.
call
(
this
.
contenuClique
,
'refuse'
)
if
(
this
.
contenuCliqueProvenance
===
'perso'
)
{
...
...
src/components/Volet_Base.vue
View file @
1857ed08
...
...
@@ -109,7 +109,7 @@ isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.6vw
<td
:id=
"'a' + JSON.stringify(item._id)"
v-on:click=
"chargerContenu(item, 'banque')"
>
{{
item
.
titre
}}
</td>
<b-popover
:target=
"'a' + JSON.stringify(item._id)"
v-on:show=
"rechercherTexte(item._id, 'banque', item.source)"
triggers=
"hover"
placement=
"bottom"
>
<p
v-html=
"texteDuContenu"
v-if=
"!isMoodle"
></p>
<Previsualiser
_Moodle
v-bind:id=
"item._id"
v-bind:provenance=
"
contenuCliqueProvenance"
v-else
></Previsualiser
_Moodle
>
<Previsualiser
_Moodle
v-bind:id=
"item._id"
v-bind:provenance=
"
'banque'"
v-bind:source=
"item.source"
v-else
></Previsualiser
_Moodle
>
</b-popover>
<td>
{{
item
.
auteur
}}
</td>
<td>
{{
item
.
versionEnCours
.
numero
}}
</td>
...
...
@@ -143,7 +143,8 @@ isActif ? {'margin-left': '1vw', 'margin-right': '1vw'} : {'margin-left': '0.6vw
<Modifier
_Contenu
v-bind:auteur=
"auteur"
v-bind:texteDuContenu =
"texteDuContenu"
v-bind:contenuCliqueProvenance =
"contenuCliqueProvenance"
v-show=
"modeModification"
@
actionContenu=
"actionContenu"
v-bind:contenuClique =
"contenuClique"
v-bind:darktheme=
"darktheme"
@
choixModif=
"choixModif"
v-bind:titreContenu=
"titreContenu"
@
majMoyenne=
"majMoyenne"
@
actionTagLibre=
"actionTagLibre"
@
chargerTagsLibres=
"chargerTagsLibres"
v-bind:tagLibreAssocie=
"tagLibreAssocie"
/>
@
chargerTagsLibres=
"chargerTagsLibres"
v-bind:tagLibreAssocie=
"tagLibreAssocie"
v-bind:rechargerTagsLibres=
"rechargerTagsLibres"
@
tags=
"nouveauxTags"
/>
</div>
</template>
...
...
@@ -185,8 +186,12 @@ export default {
darktheme
:
{},
// Signal de déconnexion
deconnexion
:
{},
// nettoyage vue
raz
:
{},
// etat. Sera utile pour certaines réinitialisations de l'affichage
etat
:
{}
etat
:
{},
// signal pour recharger les Tags Libres
rechargerTagsLibres
:
{}
},
data
:
function
()
{
return
{
...
...
@@ -260,6 +265,16 @@ export default {
this
.
contenus
=
[]
this
.
contenusBanque
=
[]
},
/**
* @vuese
* Remise au propre de la vue
*/
raz
:
function
()
{
this
.
modeModification
=
false
this
.
modeConsultation
=
false
this
.
panierChoisi
=
true
},
/**
* @vuese
* Dès que l'auteur est connu, on charge tous les contenus auxquels il pourrait s'intéresser
...
...
@@ -445,6 +460,7 @@ export default {
}
)
}
else
if
(
this
.
checkes
[
i
][
1
]
===
"tiers"
){
Service
.
supprimerTiers
(
this
.
auteur
,
JSON
.
stringify
(
id
),
this
.
checkes
[
i
][
2
]).
then
(
function
(
response
)
{
let
contenuSupprime
=
that
.
contenus
.
filter
(
contenu
=>
contenu
.
_id
===
id
)
...
...
@@ -489,6 +505,7 @@ export default {
let
nouveauTiers
=
response
.
data
nouveauTiers
.
provenance
=
"tiers"
nouveauTiers
.
version
=
version
nouveauTiers
.
note
=
"-"
that
.
contenus
.
push
(
nouveauTiers
)
that
.
contenusBanque
=
that
.
contenusBanque
.
filter
(
contenu
=>
contenu
.
_id
!==
id
)
// data= {id_contenu:JSON.stringify(id) , version: version}
...
...
@@ -693,7 +710,7 @@ export default {
* @vuese
* Sauvegarde des éléments cochés. Pour suppression (en mode banque) ou mise en tiers (en mode
*/
ajouterCoche
:
function
(
event
,
idContenu
,
provenance
,
notePerso
=
""
)
{
ajouterCoche
:
function
(
event
,
idContenu
,
provenance
,
notePerso
=
"
-
"
)
{
let
existant
=
false
event
.
target
.
parentNode
.
parentNode
.
classList
.
toggle
(
"pipi"
)
...
...
@@ -972,10 +989,10 @@ export default {
contenusFiltres
=
contenusFiltres
.
filter
(
contenu
=>
contenu
.
titre
===
filtre_recherche
[
itBe
].
filtre
)
break
case
"contenu"
:
alert
(
"je recherche "
+
filtre_recherche
[
itBe
].
filtre
+
"dans le contenu"
)
//
alert("je recherche " + filtre_recherche[itBe].filtre + "dans le contenu")
break
case
"titre&contenu"
:
alert
(
"je recherche "
+
filtre_recherche
[
itBe
].
filtre
+
"dans le titre et dans le contenu"
)
//
alert("je recherche " + filtre_recherche[itBe].filtre + "dans le titre et dans le contenu")
break
}
}
...
...
@@ -1164,6 +1181,13 @@ export default {
// alert($(".horns").parent().parent().prop('nodeName'))
},
/**
* @vuese
* Recup des nouveaux tags fixes
*/
nouveauxTags
:
function
()
{
this
.
contenusDuPanier
()
}
}
}
...
...
src/components/moodle/Edit_Calculee_Simple.vue
View file @
1857ed08
...
...
@@ -134,7 +134,8 @@
<span
class=
"nvelleReponse"
@
click=
"ajouterUnite"
>
Ajouter une unité
</span>
</table>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
v-show=
"isVersionCourante"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -15px; position: fixed; bottom: 18px"
v-on:click=
"action('arriere')"
>
retour en arriere
</button>
</div>
...
...
@@ -148,7 +149,9 @@ export default {
// mode sombre activé ou non
darktheme
:
{},
//la question Parsee
questionParsee
:
{}
questionParsee
:
{},
// version courante affichée ?
isVersionCourante
:
{}
},
data
:
function
()
{
return
{
...
...
src/components/moodle/Edit_Choix_Multiple.vue
View file @
1857ed08
...
...
@@ -80,7 +80,8 @@
<span
id=
"nvelleReponse"
@
click=
"ajouterReponse"
>
Ajouter une réponse
</span>
</table>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
v-show=
"isVersionCourante"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -15px; position: fixed; bottom: 18px"
v-on:click=
"action('arriere')"
>
retour en arriere
</button>
</div>
...
...
@@ -95,7 +96,9 @@ export default {
// mode sombre activé ou non
darktheme
:
{},
//la question Parsee
questionParsee
:
{}
questionParsee
:
{},
// version courante affichée ?
isVersionCourante
:
{}
},
data
:
function
()
{
return
{
...
...
src/components/moodle/Edit_Contenus.vue
View file @
1857ed08
<
template
>
<div>
<Edit
_Reponse_Courte
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'shortanswer'"
v-bind:questionParsee=
"questionParsee"
></Edit
_Reponse_Courte
>
<Edit
_Vrai_Faux
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'truefalse'"
v-bind:questionParsee=
"questionParsee"
></Edit
_Vrai_Faux
>
<Edit
_Choix_Multiple
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'multichoice'"
v-bind:questionParsee=
"questionParsee"
></Edit
_Choix_Multiple
>
<Edit
_Numerique
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'numerical'"
v-bind:questionParsee=
"questionParsee"
></Edit
_Numerique
>
<Edit
_Calculee_Simple
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'calculatedsimple'"
v-bind:questionParsee=
"questionParsee"
></Edit
_Calculee_Simple
>
<Edit
_Reponse_Courte
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'shortanswer'"
v-bind:isVersionCourante=
"isVersionCourante"
v-bind:questionParsee=
"questionParsee"
></Edit
_Reponse_Courte
>
<Edit
_Vrai_Faux
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'truefalse'"
v-bind:isVersionCourante=
"isVersionCourante"
v-bind:questionParsee=
"questionParsee"
></Edit
_Vrai_Faux
>
<Edit
_Choix_Multiple
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'multichoice'"
v-bind:isVersionCourante=
"isVersionCourante"
v-bind:questionParsee=
"questionParsee"
></Edit
_Choix_Multiple
>
<Edit
_Numerique
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'numerical'"
v-bind:isVersionCourante=
"isVersionCourante"
v-bind:questionParsee=
"questionParsee"
></Edit
_Numerique
>
<Edit
_Calculee_Simple
@
actionMoodle=
"passerMoodle"
v-show=
"type_question === 'calculatedsimple'"
v-bind:isVersionCourante=
"isVersionCourante"
v-bind:questionParsee=
"questionParsee"
></Edit
_Calculee_Simple
>
</div>
</
template
>
...
...
@@ -28,7 +33,11 @@ export default {
//la provenance du contenu
provenance
:
{},
// la source du contenu
source
:
{}
source
:
{},
// declencheur de changement de version
changerVersion
:
{},
// version courante affichée ?
versionCourante
:
{}
},
methods
:
{
passerMoodle
:
function
(
event
)
{
...
...
@@ -41,18 +50,16 @@ export default {
data
:
function
()
{
return
{
questionParsee
:
''
,
type_question
:
''
type_question
:
''
,
isVersionCourante
:
true
}
},
watch
:
{
idContenu
:
function
()
{
let
that
=
this
//alert(that.provenance)
if
(
this
.
source
===
'moodle'
)
{
if
(
this
.
provenance
!==
'en-cours'
)
{
alert
(
"Puuuu"
)
Service
.
parserTexte
(
JSON
.
stringify
(
this
.
idContenu
)).
then
(
function
(
response
)
{
that
.
questionParsee
=
response
.
data
that
.
type_question
=
that
.
questionParsee
.
type_question
...
...
@@ -66,6 +73,24 @@ export default {
})
}
}
},
changerVersion
:
function
()
{
let
that
=
this
this
.
isVersionCourante
=
this
.
versionCourante
.
toString
()
===
this
.
changerVersion
.
toString
()
if
(
this
.
provenance
!==
'en-cours'
)
{
Service
.
parserTexteVersion
(
JSON
.
stringify
(
this
.
idContenu
),
this
.
changerVersion
).
then
(
function
(
response
)
{
that
.
questionParsee
=
response
.
data
//that.type_question = that.questionParsee.type_question
})
}
else
{
Service
.
parserTexteEnCoursVersion
(
JSON
.
stringify
(
this
.
idContenu
),
this
.
changerVersion
).
then
(
function
(
response
)
{
that
.
questionParsee
=
response
.
data
//that.type_question = that.questionParsee.type_question
})
}
}
}
}
...
...
src/components/moodle/Edit_Numerique.vue
View file @
1857ed08
...
...
@@ -107,7 +107,8 @@
</table>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
v-show=
"isVersionCourante"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -15px; position: fixed; bottom: 18px"
v-on:click=
"action('arriere')"
>
retour en arriere
</button>
</div>
...
...
@@ -121,7 +122,9 @@ export default {
// mode sombre activé ou non
darktheme
:
{},
//la question Parsee
questionParsee
:
{}
questionParsee
:
{},
// version courante affichée ?
isVersionCourante
:
{}
},
data
:
function
()
{
return
{
...
...
src/components/moodle/Edit_Reponse_Courte.vue
View file @
1857ed08
...
...
@@ -60,7 +60,8 @@
<span
id=
"nvelleReponse"
@
click=
"ajouterReponse"
>
Ajouter une réponse
</span>
</table>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
v-show=
"isVersionCourante"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -15px; position: fixed; bottom: 18px"
v-on:click=
"action('arriere')"
>
retour en arriere
</button>
</div>
...
...
@@ -74,7 +75,9 @@ export default {
// mode sombre activé ou non
darktheme
:
{},
//la question Parsee
questionParsee
:
{}
questionParsee
:
{},
// version courante affichée ?
isVersionCourante
:
{}
},
data
:
function
()
{
return
{
...
...
src/components/moodle/Edit_Vrai_Faux.vue
View file @
1857ed08
...
...
@@ -52,7 +52,8 @@
</table>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -100px; position: fixed; bottom: 18px"
v-on:click=
"action('modifier')"
v-show=
"isVersionCourante"
>
modifier
</button>
<button
style=
"width: auto; height: auto; margin-left: -15px; position: fixed; bottom: 18px"
v-on:click=
"action('arriere')"
>
retour en arriere
</button>
</div>
</div>
...
...
@@ -68,7 +69,9 @@ export default {
// mode sombre activé ou non
darktheme
:
{},
//la question Parsee
questionParsee
:
{}
questionParsee
:
{},
// version courante affichée ?
isVersionCourante
:
{}
},
data
:
function
()
{
return
{
...
...
src/service/Service.js
View file @
1857ed08
...
...
@@ -198,9 +198,15 @@ export default {
parserTexte
(
id_contenu
)
{
return
axios
.
get
(
urlBase
+
contenus
+
"parserContenu/"
+
id_contenu
,
this
.
getHeader
())
},
parserTexteVersion
(
id_contenu
,
version
)
{
return
axios
.
get
(
urlBase
+
contenus
+
"parserContenuVersion/"
+
id_contenu
+
"?version="
+
version
,
this
.
getHeader
())
},
exporterXML
(
id_contenu
)
{
return
axios
.
get
(
urlBase
+
contenus
+
"exporterContenuXml/"
+
id_contenu
,
this
.
getSpecialHeader
())
},
recalibrerGit
(
data
){
return
axios
.
patch
(
urlBase
+
contenus
+
"recalibrerGit"
,
data
,
this
.
getHeader
())
},
// gestion des en-cours
exporterXMLEnCours
(
id_contenu
){
return
axios
.
get
(
urlBase
+
en_cours
+
"exporterContenuXmlEnCours/"
+
id_contenu
,
this
.
getSpecialHeader
())
...
...
@@ -211,6 +217,9 @@ export default {
parserTexteEnCours
(
id_contenu
)
{
return
axios
.
get
(
urlBase
+
en_cours
+
"parserContenuEnCours/"
+
id_contenu
,
this
.
getHeader
())
},
parserTexteEnCoursVersion
(
id_contenu
,
version
)
{
return
axios
.
get
(
urlBase
+
en_cours
+
"parserContenuEnCoursVersion/"
+
id_contenu
+
"&version="
+
version
,
this
.
getHeader
())
},
creerEnCours
(
data
)
{
return
axios
.
post
(
urlBase
+
en_cours
+
"newEnCours"
,
data
,
this
.
getHeader
())
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment