Quizzes
, (*1)
Plate-forme de quizzes à choix multiples (QCM) avec interface d'analyse des résultats., (*2)
Technologies : Silex, Twig,
Bootstrap, Composer, aucune base de données., (*3)
Sommaire
Description
Deux zones
- L'une publique pour choisir un questionnaire, le dérouler et obtenir score et statistiques.
- L'autre avec mot de passe pour accéder aux sessions passées, à leur score et statistiques,
à leur correction détaillée et au suivi temps réel des sessions en cours.
Questionnaires
La plate-forme de quizzes permet :, (*4)
- d'héberger et proposer de multiples questionnaires,
- de proposer des sessions mélangeant plusieurs questionnaires,
- de réaliser des sessions ne portant que sur une partie des questions d'un ou plusieurs questionnaires,
questions tirées aléatoirement,
- de désactiver voire masquer des questionnaires tout en continuant de les inclure dans d'autres questionnaires,
- une grande facilité d'ajout de questionnaires, coloration syntaxique des bouts de code pouvant émailler
les questions et propositions de réponse,
- une impression du résultat des sessions.
Dans un questionnaire :, (*5)
- chaque question appartient à un thÚme afin de faciliter l'analyse des réponses, mais cette information
ne transparaßt pas forcément dans l'énoncé des questions
(un seul thÚme est retenu par question par souci de simplicité),
- thÚmes, questions et propositions arrivent dans un ordre différent à chaque session,
- le temps restant est affiché constamment,
- pas moyen de revenir sur une question précédente (page précédente sans effet),
- le barĂšme est optimal lorsque toute question admet au moins une bonne proposition
et au moins une mauvaise proposition.
BarĂšme
Le barÚme favorise l'absence de réponse à la mauvaise réponse.
Il vaut mieux s'abstenir lorsque l'on n'est pas sûr de soi., (*6)
Ainsi de maniÚre générale, si une question possÚde P
propositions de réponse, alors :, (*7)
- chaque question nécessite de cocher
1
Ă P-1
cases et rapporte de -1
Ă 1
point, 0
si non répondue.
- si une question requiert
N
cases cochées pour la bonne réponse, alors :
- chaque case bien cochée rapporte
1/N
point,
- chaque case mal cochée enlÚve
1/(P-N)
point.
Il en découle que les trois stratégies suivantes aboutissent à un score nul :
* cocher toutes les cases,
* n'en cocher aucune
* et statistiquement cocher au hasard 1
Ă P-1
cases., (*8)
Installation et configuration
Git clone
Cloner dans le répertoire de votre choix, par ex. /var/www/quizzes
(le rĂ©pertoire doit ĂȘtre vide) :, (*9)
$ git clone git@github.com:Hi-Media/Quizzes.git /var/www/quizzes
DĂ©pendences
Composer
La plupart des dépendences sont gérées par composer.
Lancer l'une des commandes suivantes :, (*10)
$ composer install
# or
$ php composer.phar install
Au besoin, pour installer composer localement, lancer l'une des commandes suivantes :, (*11)
$ curl -sS https://getcomposer.org/installer | php
# or
$ wget --no-check-certificate -q -O- https://getcomposer.org/installer | php
Lire http://getcomposer.org/doc/00-intro.md#installation-nix pour plus d'informations., (*12)
Mailing
L'envoi de mail exploite mutt., (*13)
Configuration
Apache 2
Les rewrite rules sont nécessaires.
Un fichier .htaccess
se trouve dans /www
pour rediriger les URLs sur /web/index.php
.
Au besoin :, (*14)
$ sudo a2enmod rewrite
Exemple de virtual host :, (*15)
$ cat /etc/apache2/sites-enabled/quizzes.xyz.com
<Directory /var/www/quizzes/web>
Options -Indexes
AllowOverride FileInfo
Order allow,deny
allow from all
</Directory>
<VirtualHost *:80>
ServerName quizzes.xyz.com
ServerAlias quizzes
ServerAdmin admin@xyz.com
RewriteEngine On
DocumentRoot /var/www/quizzes/web
ErrorLog /var/log/apache2/quizzes-error.log
CustomLog /var/log/apache2/quizzes-access.log combined
LogLevel warn
</VirtualHost>
Application
Initialiser le fichier de configuration en dupliquant conf/qcm-dist.php
et en l'adaptant :, (*16)
$ cp '/var/www/quizzes/conf/qcm-dist.php' '/var/www/quizzes/conf/qcm.php'
Pour mettre à jour des comptes d'administration modifier la clé 'admin_accounts'
,
tableau au format login => md5(password)
., (*17)
Mise Ă jour des questionnaires
Les questionnaires sont cryptés en AES-256 sur le serveur web., (*18)
Lors d'une mise à jour des questionnaires exécuter le script /src/encrypt.php
afin de régénérer
les /resources/quizzes/*.enc.php
Ă partir des /resources/quizzes/src/*.php
.
Le répertoire /resources/quizzes/src
n'est alors plus nécessaire, ainsi que /src/encrypt.php
., (*19)
Des exemples de questionnaires sont disponibles dans /resources/quizzes/examples
:, (*20)
- 2 mini questionnaires intitulés « Additions » et « Multiplications »,
- 1 questionnaire « JavaScript » d'une seule question mais illustrant l'insertion de code
avec coloration syntaxique,
- 1 questionnaire nommé « Toutes les questions ! » expliquant comment déclarer un questionnaire
comme l'union d'autres questionnaires
- et 1 questionnaire intitulé « Un petit peu de tout⊠» piochant au hasard un nombre défini de question
parmi celles des autres questionnaires.
Les copier dans /resources/quizzes/src
pour les utiliser dans l'applicationâŠ, (*21)
Captures d'Ă©cran
DĂ©roulement d'une session
Choix de la session :, (*22)
, (*23)
Un questionnaire peut ĂȘtre la rĂ©union de plusieurs questionnaires ou une partie d'un autre questionnaire :, (*24)
, (*25)
Identification du candidat :, (*26)
, (*27)
Exemple d'affichage d'une question :, (*28)
, (*29)
Analyse
Accueil de la section d'administration avec liste des sessions passées et en cours :, (*30)
, (*31)
Résultat général d'une session :, (*32)
, (*33)
Score par thÚme avec visualisation de la quantité de points perdus par pénalités :, (*34)
, (*35)
Temps moyen de réponse par thÚme :, (*36)
, (*37)
Catégorisation des réponses par thÚme :, (*38)
, (*39)
Correction d'une question, accessible seulement à partir de la zone privée :, (*40)
, (*41)
Configuration d'un questionnaire, dans /resources/quizzes/src
 :, (*42)
<?php
return array(
'meta' => array(
'title' => 'POO et design patterns',
'time_limit' => 15*20,
'max_nb_questions' => 0,
'status' => 'available' // {'available', 'deactivated', 'hidden'}
),
'questions' => array(
array(
'POO',
"Quel est le patron de conception central dans Doctrine 2Â ?",
array(
"table data gateway" => false,
"active record" => false,
"data mapper" => true,
"row data gateway" => false,
)
),
âŠ
)
);
Copyrights & licensing
Licensed under the GNU General Public License v3 (GPL-3.0+).
See LICENSE file for details., (*43)
Change log
See CHANGELOG file for details., (*44)
Git branching model
The git branching model used for development is the one described and assisted
by twgit
tool: https://github.com/Twenga/twgit., (*45)