Le besoin a été exprimé sur la liste de façon récurrente. Des contributions ont déjà été proposées 1, 2. Celles-ci présentent deux types de limitations :
- La seule interaction possible consiste à identifier la bonne réponse. Du coup il n’y a pas de possibilité de fournir des explications complémentaires, voire des liens vers des lectures évoluées ;
- Le résultat ne peut être conservé dans la base de données pour fournir des indications sur la performance dans une matière.
Attention, la contribution a été modifiée pour être compatible avec la version 1.8.1. À cause de l’utilisation de la balise #ENV elle n’est plus utilisable avec la version 1.7.2 de SPIP.
Architecture
Pour permettre un maximum de possibilités, chaque exercice sera une sous-rubrique d’une rubrique dédiée. Ces sous-rubriques sont sélectionnées par le mot-clé “lesqcms”. L’énoncée constitue le descriptif de la sous-rubrique. Cette dernière contient deux types d’articles, différenciés par des mots-clés :
- Les informations complémentaires (optionnelles) qui peuvent compléter l’énoncé, fournir des indices, etc, portent le mot-clé “complements” ;
- Les questions à proprement parler, peu importe le nombre, dont la sélection se fait en ajoutant {doublons}
par rapport aux compléments.
Le squelette d’affichage, le Questions_CM.html de la contrib, se présente en deux parties avec l’énoncée et informations complémentaires sur la gauche et les questions sur la droite. Les boucles sont dupliquées pour permettre éventuellement de regrouper les questions en catégorie (un seul niveau de profondeur est admis).
Les interactions
Le système est basé sur un seul formulaire en deux parties :
- Un groupe de boutons radio pour choisir la réponse oui ou non (ou autre) à chaque question à l’intérieur d’une boucle articles {id_rubrique}
;
- Une partie validation, avec un bouton submit et un reset.
Le champs action du formulaire mène au squelette d’affichage des résultats. Celui-ci ressemble au précédent mais contient les solutions et les messages concernant l’évaluation des réponses de l’utilisateur.
Le contrôle des résultats
Pour le bon fonctionnement du système il faut encore une fois respecter l’écriture des articles. Trois champs sont utilisés :
- Le titre est la formulation de la question ;
- Le texte fourni la solution ;
- Le chapo, dont le contenu est optionnel, peut fournir des informations de contexte à afficher avant la question
Enfin, les valeurs vrai ou faux sont indiquées dans un champs-extra de type select, que l’on appellera choix.
Le script php qui contrôle les saisies utilisateurs (bouton radio sélectionné) et les compare avec la valeur du champs extra est simple. Il se trouve intégralement sur le fichier appelé par le formulaire, soit Questions_CM_vue.html. en voici un aperçu :
<?
echo "Vous avez répondu : "; //Test sur les réponse entre la valeur du champs cache choix et la case a cocher
if ($_POST['l_#ID_ARTICLE'][0]==oui) {
echo "<span class=\"yourespond\">oui </span>";
}
else {
echo "<span class=\"yourespond\">non </span>";
}
if ($_POST['l_#ID_ARTICLE'][0]==non && [(#EXTRA|extra{choix})]=='faux') {
echo "<span class=\"toutbon\">La réponse était bien non ! </span>";
$props++;
}
else if ($_POST['l_#ID_ARTICLE'][0]==oui && [(#EXTRA|extra{choix})]=='vrai') {
echo "<span class=\"toutbon\"> Bravo </span>";
$props++;
}
else if ($_POST['l_#ID_ARTICLE'][0]==non && [(#EXTRA|extra{choix})]=='vrai') {
echo "<span class=\"toutmauvais\"> Il fallait cocher </span>";
$erreurs++;
$props++;
}
else if ($_POST['l_#ID_ARTICLE'][0]==oui && [(#EXTRA|extra{choix})]=='faux') {
echo "<span class=\"toutmauvais\"> Mauvaise réponse </span>";
$erreurs++; //decompte des erreurs
$props++; //decompte des propositions
}
echo '<br>';
?>
Le passage de l’un à l’autre ne se fait pas par l’action du formulaire qui est laissée vide. Un champ spécifique du formulaire contient un paramètre important, “mode_affiche”, dont la valeur permet de changer de squelette (Questions_CM ou Questions_CM_vue).html, par le biais de la variable $fond du fichier .php3 (également inclus dans la distribution).
Conservation des résultats dans la base de données
Le fichier Questions_CM_vue.html contient également le fichier AddtoMycontrols.php3 (présent dans le .zip), dont la fonction est de conserver dans un champs extra de la fiche auteurs les identifiants (id_rubrique) des QCMs, séparés par une #. Le même fichier permet de stocker le % de réussite dans un autre champs de la table spip_auteurs. Le script est lancé à la validation du formulaire "Vous avez fini avec ce cas" sur la page des réponses. Pour l’utiliser il faut décommenter la ligne correspondante du squelette (ligne 234).
Un dernier préalable pour le bon fonctionnement : l’authentification de l’utilisateur
Celle-ci se fait grâce à un fichier.php, inclus dans les deux squelettes. Il ne sert qu’a tester si l’utilisateur est authentifié et affiche le nom de l’utilisateur dans un bandeau. Je vous laisse le choix de la limitation des droits aux rédacteurs ou aux visiteurs en remplaçant par exemple l’#URL_SITE_SPIP par #LOGIN_PUBLIC dans le fichier control_membre.php3.
Note de la fin : Un mini fichier .css fait partie de la distribution. Il n’est peut-être pas complet. Enfin l’adresse de retour une fois les réponses affichées (action du formulaire sur la page Questions_CM_vue.html) est mon_espace.php3
, vous la remplacerez par celle qui correspond à votre site.
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |