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=newMosSCO("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
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.
- [ ] 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"_
- [ ] É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 <ahref="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/`.