Update Concepts et objets de MACAO: détails données à extraire pour chaque type d'activité authored by Eliott Sammier's avatar Eliott Sammier
......@@ -4,12 +4,12 @@
[[_TOC_]]
## Dans Macao 1 et 2 :
# Dans Macao 1 et 2 :
![Macao_12_concepts_annotation](uploads/5b30aec165b2f85bf18735f72fb6f9e3/Macao_12_concepts_annotation.png)
----
### Parties
## Parties
Un module contient une ou plusieurs parties _(ex: "Reconnaître les syllabes")_. Côté code, une partie a la même représentation qu'un module, c'est un élément sans contenu propre, décrit comme un `<item>` MosMod dans [`imsmanifest.xml`](https://gitlab.tetras-libre.fr/macao/macao-legacy/-/blob/main/Basilisk/MACAO/macao_12/imsmanifest.xml)
......@@ -47,8 +47,13 @@ Un module contient une ou plusieurs parties _(ex: "Reconnaître les syllabes")_.
```
</details>
**Données à extraire :**
- [x] ID -> attribut `identifier`
- [x] Titre -> élément `<title>`
- [x] Descendants dans l'arbre -> éléments `<item>`
----
### Sous-parties
## Sous-parties
Les "feuilles" de l'arborescence visible dans le panneau de gauche, éléments non dépliables _(ex: "Reconnaître les syllabes en anglais oral")_. Une sous-partie contient plusieurs **pages**, dont la première est affichée quand on sélectionne la sous-partie. Une sous-partie est décrite dans un fichier `sco/MosEtp###`, qui déclare un objet `MosSCO` pour définir son contenu.
```js
oSco = new MosSCO("MosEtp129", "> Reconnaître les syllabes en anglais oral", "MACAO", "MACAO 1 - S'entraîner à la reconnaissance", "", "macao_fusion_ss_barre", "fr");
......@@ -65,13 +70,29 @@ oSco.tabPages[oSco.tabPages.length] = new PageContenu("Commentaire", "pg636", "c
```
Le plus important est l'ID de la page `"pgXXX"`, et éventuellement le type (`"exercice"` ou `"cours"`), le titre de la page étant déclaré aussi dans la page elle-même.
**Données à extraire :**
- Dans le manifest
- [x] ID -> attribut `identifier`
- [x] Titre -> élément `<title>`
- Dans le fichier `MosEtp###.html`
- [~] Titre -> `<title>`
- [x] Liste des pages (titre, ID) -> arguments de `new PageContenu()`
----
### Pages ou activités
Les "unités de navigation". La section centrale de Macao affiche toujours 1 page, dont le nom est indiqué en haut à droite _(ex: "Repérer les syllabes orales")_. Une page contient une "activité", qui peut être un cours (sans saisie interactive) ou un des 4 types d'exercices (`QC, QM, TAT, GD` dans `MosMtr/scripts/contenu/ClasseExercice___.js` + `ClasseCours.js`) ***[À confirmer: autres types de contenus?]***. Elle est décrite dans un fichier `contenu/pages/pg###.html`, qui déclare un objet `Cours` ou `Exercice##` pour définir son contenu.
## Pages ou activités
Les "unités de navigation". La section centrale de Macao affiche toujours 1 page, dont le nom est indiqué en haut à droite _(ex: "Repérer les syllabes orales")_. Une page contient une "activité", qui peut être un cours (sans saisie interactive) ou un des 4 types d'exercices (`QC, QM, TAT, GD` dans `MosMtr/scripts/contenu/ClasseExercice___.js` + `ClasseCours.js`) ***[À confirmer: autres types de contenus?]***. Elle est décrite dans un fichier `contenu/pages/pg###.html`, qui déclare un objet `Cours` ou `Exercice___` pour définir son contenu.
**Données à extraire (communes à toutes les activités) :**
- [x] Type d'activité -> premier appel de constructeur `new ___()`
- [x] Commentaires -> éléments `<div id="divCmt___">` dans `<div id="zoneInvisible">`
- Dans les descriptions, commentaires, blocs HTML divers
- [ ] Images -> éléments `<img id="MosImg___">`
- [ ] Objets Flash -> appels de fonction `PF_clipAV(...)`
- [ ] Pages d'aide/docs -> appels de fonction `SCO_ouvrirDoc(...)`
#### Cours
### Cours
Du texte, très souvent des audios, mais parfois aussi des objets Flash spécialisés (voir #11).
Quantité: 59
**Quantité :** 59
<details><summary>Exemples</summary>
......@@ -81,65 +102,105 @@ Exemple de "cours" avec un **exercice en Flash** : `pg455.html`, première page
![Screenshot_2024-05-15_15-57-31](uploads/b967e6b37d1409105e910ea43c786ca3/Screenshot_2024-05-15_15-57-31.png)
</details>
#### ExerciceQC
**Données à extraire :**
- [ ] Contenu du cours (texte/HTML) -> élément `<div id="STY_zoneCours">`
### ExerciceQC
*(Question Choix?)*
Une question avec plusieurs réponses prédéfinies. Existe en variante QCU (une seule bonne réponse) et QCM (plusieurs bonnes réponses).
Quantité: 39 QCU, 9 QCM
**Quantité :** 39 QCU, 9 QCM
<details><summary>Exemples</summary>
**Exemple QCU** : `pg381.html`, la première page de *"> Reconnaître les auxiliaires"*
![Screenshot_2024-05-15_14-59-01](uploads/bb4795264824c0140f49bb7a2126d5d2/Screenshot_2024-05-15_14-59-01.png)
**Exemple QCM** : `pg8412.html`, page *"Vérifier la place de l'accent primaire (3)"* dans la sous-partie *"> Utiliser les marques de l'accentuation"*
</details>
Il s'avère que les 9 exercices QCM sont tous dans la même sous-partie, et sont utilisés sémantiquement comme plusieurs QCU :
![Screenshot_2024-05-15_15-22-19](uploads/4be84e866d324dc5205bd1aa0fb808f3/Screenshot_2024-05-15_15-22-19.png)
Dans cet exemple, on a 3 mots ayant chacun 3 réponses possibles dont 1 bonne, mais l'exercice est implémenté comme un QCM de 9 choix possibles ; on peut tout à fait cocher les 3 choix pour "narrator".
</details>
**Données à extraire :**
- [ ] Consigne -> `<div id="STY_question">`
- [ ] Choix de réponses
- [x] Correction -> dans la fonction `entrerDonnees()`, `exo.tabStylesR[nr] = CODE_V` ou `CODE_F` pour chaque valeur de `nr`
- [x] Commentaires de succès et d'échec -> `divCmtSucces` et `divCmtSugg#` *(cf. commentaires d'activité)*
#### ExerciceQM
### ExerciceQM
*(Question Multiple?)*
Comme ExerciceQC mais avec plusieurs questions, chacune ayant une seule bonne réponse.
Quantité: 8
**Quantité :** 8
<details><summary>Exemple</summary>
`pg262.html`, la toute première page de Macao 1
![Screenshot_2024-05-15_14-56-47](uploads/59667940add90fb4f94f55cdb370be6b/Screenshot_2024-05-15_14-56-47.png)
</details>
#### ExerciceTAT
**Données à extraire :**
- [ ] Consigne -> `<div id="STY_question">`
- [ ] Choix de réponses -> tableau dans `<div id="STY_texteQM">`, chaque ligne (`<tr>`) est une question, chaque cellule de colonne (`<td>`) est une case à cocher. Son `id` indique aussi ses coordonnées (ex: `id="lienRepImg13"` = ligne 1 choix 3)
- [ ] Correction -> dans la fonction `entrerDonnees()`, `exo.tabStylesR[nr] = '3'` indiquent le numéro du choix correct pour chaque numéro de ligne `nr`
- [x] Commentaires de succès et d'échec -> `divCmtSucces` et `divCmtSugg#` *(cf. commentaires d'activité)*
### ExerciceTAT
Un texte à trous, avec pour chaque "trou" une liste déroulante de choix de mots.
Quantité: 12
**Quantité :** 12
<details><summary>Exemple</summary>
`pg20.html`, page _"Ecoutez et complétez (2)"_ dans la sous-partie _"> Reconnaître les déterminants"_
![Screenshot_2024-05-15_15-40-29](uploads/23944659726f54961ea79cb4e87d2772/Screenshot_2024-05-15_15-40-29.png)
</details>
#### ExerciceGD
**Données à extraire :**
- [ ] Consigne -> `<div id="STY_question">`
- [ ] Texte avec position des "trous" -> contenu dans `<div id="STY_texteTAT">`.
Chaque trou est un élément `<select class="STY_selectTAT" id="champTrou#">` et son numéro est indiqué dans l'`id`.
- [ ] Choix pour chaque trou et correction -> appels `exo.ajouterReponse(index, correction, valeur)`.
Paramètre "correction" = `ng` pour faux, `nw` pour juste.
- [x] Commentaires de succès et d'échec -> `divCmtSucces` et `divCmtSugg#` *(cf. commentaires d'activité)*
### ExerciceGD
*(Glisser-Déposer ?)*
Le plus complexe, avec des objets à glisser et placer librement ou dans des cases.
Quantité: 5
**Quantité :** 5
<details><summary>Exemple</summary>
`pg545.html`, page _"Compléter une transcription (1)"_ dans _"> Utiliser les symboles phonétiques"_
![Screenshot_2024-05-15_15-51-35](uploads/4c4963cf1ea6c82296d9f2022b9a712a/Screenshot_2024-05-15_15-51-35.png)
</details>
#### Inutilisés
**Données à extraire :**
- [ ] Consigne -> `<div id="STY_question">`
- [ ] Éléments à déplacer -> éléments `<div id="exoGDd#">` (le `d` est pour *déplaçable*, et est suivi de son numéro/ID)
- [ ] Cibles de déplacement -> éléments `<div id="exoGDc#">` (le `c` est pour *cible*, suivi aussi de son numéro/ID)
- [ ] Correction -> liste de `new PaireGD(deplacable, cible, correct, decalageX, decalageY)` indiquent pour chaque déplaçable sa cible associée et si il est juste (`ng` = faux, `nw` = juste).
- [ ] Positions de tous les éléments -> offsets CSS `absolute`, sûrement à refaire manuellement.
- [x] Commentaires de succès et d'échec -> `divCmtSucces` et `divCmtSugg#` *(cf. commentaires d'activité)*
### Inutilisés
ExerciceCURS, ExerciceEXP, ExerciceSEQ
----
### Pages d'aide ou "docs"
## Pages d'aide ou "docs"
Dans `contenu/pages/`, les fichiers `*.htm` et `pgd###.html` sont des pages d'aide. Au lieu d'être chargées dans la section centrale, elles peuvent être ouvertes dans une nouvelle fenêtre pop-up avec la fonction `SCO_ouvrirDoc()`, souvent appelée depuis un lien `<a>` dans les pages classiques.
```html
cliquez pour voir la définition d'un <a href="javascript:parent.SCO_ouvrirDoc('pgd171','PAGE')">phonème</a>
```
Ces pages peuvent inclure des objets Flash comme les autres, mais pas d'exercice.
### Contenus des pages
#### Commentaires
## Contenus des pages
### Commentaires
Certains exercices ont des commentaires, des blocs HTML structurés chargés dans une `<div id="zoneInvisible">`, qui sont déplacés dans la `<div id="STY_zoneCommentaire">` à droite en réponse à certaines actions.
- Commentaire de succès : `<div id="divCmtSucces">`
- Commentaire d'échec : `<div id="divSugg#">`, numérotés à partir de 1
......@@ -147,16 +208,16 @@ Certains exercices ont des commentaires, des blocs HTML structurés chargés dan
:warning: Les commentaires **peuvent contenir de la mise en forme et des objets Flash** (peut-être même des images ?)
#### Images
### Images
Les images intégrées dans le contenu d'une page sont reconnaissables par un `id="MosImg###`, à la différence de celles utilisées pour l'UI (boutons). Leur chemin est toujours dans `contenu/media/`.
```html
<img id="MosImg17" src="../media/phon_recognition_54_juste.png">
```
#### Objets Flash et audio
### Objets Flash et audio
TODO
----
## Dans Macao 3
# Dans Macao 3
TODO
\ No newline at end of file