Jeux pour SPIP 3

Un portage pour SPIP 3 du plugin Jeux a été fait. Explications et nouveautés.

Cet article concerne une mise à jour du plugin Jeux dont la description complète est disponible ici : Des jeux dans vos articles !.

Le code du plugin Jeux est un code historique remontant à SPIP v1.9. En particulier, toute la construction des formulaires d’ajouts et d’éditions de jeux dans l’espace privé a été inventée il y a 5 ans, à l’époque où les nomenclatures et les découpages fonctionnels de l’espace privé étaient moins bien définis qu’aujourd’hui.

C’est pourquoi toute la partie concernant l’ajout de jeux en partie privée avec gestion des scores a fini par perdre sa pleine compatibilité avec SPIP 3, alors que la partie concernant l’ajout de jeux directement dans le contenu des articles, beaucoup plus simple dans son fonctionnement, restait compatible.

Le code du plugin a donc été revu en grande partie. N’hésitez pas à tester la nouvelle version.

Attention : aujourd’hui, l’accès à certaines fonctions et infos a été très restreint en comparaison avec la version 2.4.x... Mais nous travaillerons pour les restaurer. Merci à tous les utilisateurs de nous faire des retours.

Installation

Le plugin Jeux version 3 nécessite désormais le plugin Saisie.

Il s’installe comme n’importe quel plugin.

Utilisation

La syntaxe d’insertion des jeux n’a pas changé depuis les précédentes versions. En ce qui concerne les jeux avec score :
-  On peut ajouter / éditer / modifier des jeux via le menu «Édition»->«Jeux».
-  On peut consulter l’ensemble des scores via le menu «Activité»->«Résultat des Jeux».
-  On peut consulter les résultats d’un auteur ou d’un jeu via un bouton situé à gauche de la page de l’auteur ou du jeu.
-  Seuls les administrateurs ont accès aux formulaires de suppression ou de compactage des scores. On peut potentiellement étendre ces droits, via l’API d’autorisation de SPIP.

Note : l’intégration avec le plugin Corbeille n’a pas encore été effectuée.

Changement côté public

Le champ #CONTENU des jeux est devenu #TEXTE. Les squelettes de présentation des jeux et des scores ont été supprimés pour le moment, en attendant d’en proposer des compatibles avec la nouvelle distribution de SPIP 3.

En revanche, les modèles d’affichage des résultats existent toujours. Merci aux utilisateurs de nous dire s’il faut les adapter.

Pour les traducteurs

Merci à vous ! La gestion des traductions passe désormais via Salvatore : il vous faudra utiliser son interface.

À faire

-  Vérifier que la suppression des jeux de la BDD se fasse bien.
-  Brancher avec le plugin Corbeille.

Possibilité d’amélioration

-  Transformer les formulaires de jeux en formulaires CVT pour profiter de l’AJAX (gros chantier en cours).
-  Permettre d’avoir une rubrique, des auteurs, des mots-clefs, associés aux jeux.

Travail sur les formulaires CVT

Le commit http://zone.spip.org/trac/spip-zone... introduit la gestion des formulaires CVT (Charger-Vérifier-Traiter) de SPIP afin de permettre à certains jeux d’être facilement corrigés en AJAX.

Le système CVT n’est pas pleinement utilisé car l’enregistrement des scores en base se fait au moment du calcul de la correction du jeu, bien avant l’action Traiter.
L’action Vérifier est aujourd’hui toujours validée, car les jeux ne gèrent pas (encore?) de champ bloquant.

TODO : Le reset d’un jeu n’est pas encore ajaxé.

Voici donc pour rappel, les 3 façons pour gérer/afficher un jeu aujourd’hui dans vos articles :
- les jeux inline entre balises <jeux/> et sans score
- les jeux créés en base (avec score), appelés grâce au modèle <jeuXX>
- les jeux créés en base (avec score), corrigés en AJAX grâce au raccourci <formulaire|jeu|XX>

Discussion

16 discussions

  • 2

    Bonjour,
    J’utilise ce plugin, mais je rencontre quelques problèmes
    1/ j’affiche 4 jeux dans mon article avec [jeu], quand je fais scores_intermediaires = oui il m’affiche les score pour chaque jeux, par contre à la fin du jeux, le message de score ne s’affiche pas c-a-d 50% ca doit afficher une phrase et moins de 50% une autre phrase....pourtant j’ai bien placé

    [score]
    51%: Vous devez vraiment réviser. Recommencez 
    49%: Vous n'avez pas la moyenne. Recommencez 

    MAis le message ne s’affiche pas!

    2/ comment récupérer le score pour chaque jeux? j’ai besoin de récupérer le score pour chaque jeux via #GET et #SET si possible je veux l’utiliser pour les courbes

    • Bonjour et merci pour ce message.

      Pour les scores intermédiaires, voici quelques infos :
      -  Des jeux dans vos articles !

      Pour les balises, c’est ici :
      -  Boucles et Balises sur le plugin Jeux

      Il est possible aussi de regarder le code des différents modèles livrés avec le plugin. Pour une utilisation très spécifique comme l’exploitation des scores longs par exemple, il est toujours possible d’écrire un filtre PHP maison.

    • MErci pour la réponse, mais je galère toujours :)...ya t’il un moyen de recupérer sccore_intermediare et de l’afficher à la fin du jeux sachant que j’ai collé un modele <jeu1> dans lequel il ya des sous jeux...Merci de votre réponse

    Reply to this message

  • 7

    Bonjour,

    j’ai installé spip 3.0.5 sur mon serveur local (Lamp), ainsi que les plugins “jeux” et “formulaire et table”. Le tout tourne avec un squelette melusine.
    Sur le serveur lamp, le .htaccess n’est pas opérationnel mais ça ne doit pas avoir de rapport ...
    J’ai installé le plugin “couteau suisse” et activé la balise introduction, comme stipulé dans la doc.
    Je suis enregistré en tant qu’administrateur, webmestre (un seul compte de créé).

    L’enregistrement des scores ne marche pas.

    J’ai créé un jeu, dont voici le code :

    [titre]
    Voici deux exercices
    [config]
    scores_intermediaires=non
    [score]
    0%: Il est urgent de réviser. Recommencez !
    30%: Vous n’avez pas la moyenne... Recommencez !
    50%: Ce n’est pas encore parfait... Recommencez !
    100%: Vous êtes vraiment un as. Félicitations !

    [jeu]
    [titre]
    Exemple de QCM/QRM
    [qcm]
    Q Que veut dire “phlox” ?
    P1 Violet - Pourpre
    P2 Dressé
    P3 Nom du botaniste néerlandais qui classifié la famille.|N’importe quoi...
    P4.1 Flamme|Plus précisément “rouge flamme, en grec”
    P5 Rigide, ne se casse pas.
    R4
    [qrm]
    Q Ces mots désignent une couleur jaune :
    P1.1 citrinus|évidemment !
    P2 caeruleus|c’est “bleu de mer”
    P3.1 stramineus|jaune paille
    P4 variegata|cela signifie “panaché”
    P5 nigella|c’est le diminutif de “niger” (noir)
    R1 R3 (la réponse 3 est la bonne !)

    [jeu]
    [titre]
    Exemple de closure
    [texte]
    Ceci est un exemple de closure (exercice à trous).
    L’utilisateur doit entrer ses [trou]réponses[texte] dans les espaces vides.
    Pour chaque mot manquant, plusieurs réponses correctes peuvent être acceptées.
    Par exemple, ce [trou] trou, vide, blanc [texte] autorise les réponses “trou”, “vide” ou “blanc”.

    [config]
    indices = oui

    Quelqu’un a-t-il une idée ?!?
    Merci par avance de vos suggestions, et surtout merci pour ce plugin ...
    Cdlt
    GG

    • petites précisions par rapport à mon message précédent ;

      Les cookies sont activés sur mon navigateur
      il n’y a aucun enregistrement dans la base de données “jeux_resultats”

      Là je sèche ...
      A+
      GG

    • Dernières précisions :

      Je n’arrive pas à sauvegarder ma base de données du spip ; il me répond :
      “Impossible de faire une sauvegarde SQLite sur votre hébergement”

      La configuration par défaut du plugin, comme celle du jeu est “uniquement le premier résultat” ...

      Vraiment, si qq’un a une idée ...
      A+
      Gildas

    • Salut, as-tu regardé dans les tmp/logs SQL si une erreur ne bloquait pas l’enregistrement des résultats ?

    • Bonjour,

      Quelques réponses : plus de pbm de sauvegarde sur mon spip en local avec l’installation du paquet php5-sqilte et sqlite3 ...

      Le non enregistrement se produit aussi sur une installation identique sur free ...

      J’ai effectivement des erreurs dans les logs, mais je ne sais pas comment les interpréter ...

      Dans le fichier sqlite.log :
      [fr]Authentification des auteurs et visiteurs à l’’aide de leur OpenID
      [en]Authenticates users with their OpenID
      </multi>’,’auteur’,’’,’001.001.013’,’2013-01-22 16:00:03’,’2013-01-22 16:00:03’,’[2.0.0;3.0.99]’,’2.0,2.1,3.0’)
      Feb 22 17:57:04 192.168.0.254 (pid 2376) :Pri:ERREUR: Erreur sqlite 23000 / 19

      Je te fournis une archive avec les fichiers contenus dans /dump/log/ pour analyse ...
      http://eleve.guillory.free.fr/log.zip

      Merci par avance de la réponse et du temps passé au dev du plugin.
      Cdlt
      GG

    • Encore une précision pour faire avancer ...

      J’ai créer un enregistrement via phpmyadmin pour le jeu.
      Le résultat apparait bien ensuite dans le jeu.

      Il y a donc bien un problème d’envoi des données à la base de données, ou à l’enregistrement.
      Suis-je le seul à rencontrer ce pbm ?
      Le reste du site est pourtant fonctionnel.
      Si le plugin jeu est le seul installé, ça ne change rien.

      Merci par avance pour ce qui peut être fait.
      Cdlt
      GG

    • Salut,

      Pour avancer:
      -  Active bien *uniquement* le plugin “jeux” (et Saisies, forcément...)
      -  vide bien le cache de SPIP
      -  vérifie que ta connexion est bien une connexion mysql (dans config/connect.php) mais vu que tu utilises phpmyadmin ça doit être le cas...

    • Salut,

      merci de la réponse.

      Plugin jeux et saisies uniquement activés.
      Cache de spip, et de firefox vidés.
      Et je suis bien en mysql ...

      Fonctionne toujours pas ...
      :-/
      Bonne journée ...
      G

    Reply to this message

  • 4
    Billiejoe

    La mise à jour du plugin (en début de semaine) a planté mon site (Spip 3.0.5), sans accès à l’interface privée : message suivant après identification :

    “Pour vous identifier de façon sûre sur ce site, vous devez accepter les
    cookies. Veuillez régler votre navigateur pour qu’il les accepte (au moins pour ce
    site).”

    J’ai débloqué cela en renommant /jeux pour le désactiver, est-ce que l’on peut espérer une correction, vu qu’a priori il y a comme un petit souci :-)

    • Un BOM s’est inséré dans l’un des fichiers de la dernière mise à jour du plugin, cela a été corrigé rapidement, mais pas sans quelques dégats hélas. Il semble que la correction postée dernièrement règle le problème. Merci du retour.

    • Billiejoe

      Du coup j’ai écrasé ma mise à jour avec la version actuelle, j’ai viré un install.log du dossier, j’ai activé le plugin de nouveau dans l’interface. Et je retrouve le même souci après déconnexion et souhait d’une reconnexion. Y aurait-il une autre démarche à faire pour rétablir le fonctionnement du plugin proprement ?

    • Mince j’avais oublié un 2e fichier... Correction postée !

      Mais est-ce que le pb vient de là ? Je n’arrive pas à reproduire ton problème....

    • Billiejoe

      C’est tout bon, maintenant. Merci beaucoup !

    Reply to this message

  • 6

    C’est un génial plugin. Merci !!

    Si cela sert à aller mieux le plugin:

    Je crois que en changeant la ligne suivante de code (79):

    "$clav = preg_split(’//’, _T(’jeux:alphabet’), -1, PREG_SPLIT_NO_EMPTY);

    du fichier “pendu.php” par cela autre:

    $clav = mb_split(’,’,_T(’jeux:alphabet’));

    il est possible de faire que le clavier montre des lettres accentuées, un alphabet cyrillique,...

    ... bien que pour le moment nous l’essayions dans local, mais avec la dite ligne maintenant cela permet de montrer des caractères cyrilliques...

    ... pour documenter le dit, voir en ligne http://php.net/manual/en/function.mb-split.php

    Pardon par mon français

    • Merci, je viens de tester cette ligne, mais elle ne semble pas fonctionner sur l’alphabet d’origine... As-tu fait le test ?

    • Pardon : je m’ai oublié qu’il faut modifier aussi l’alphabet original, en le séparant par des virgules, de cette forme :

      ’А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ь,Ы,Э,Ю,Я’

      Encore une fois, un pardon par mon français

    • Ton français est très clair. N’y a-t-il pas moyen de faire cohabiter les deux alphabets ? PHP ne peut-il pas découper cette expression cyrillique sans les virgules ?

      preg_split('//u', ...) à essayer peut-être ?

      http://php.net/manual/en/reference.pcre.pattern.modifiers.php

    • Pat, pour moi, sans la virgule ’//’ il ne fonctionne pas pour les caractères cyrilliques et pour les caractères accentués de l’espagnol
      $clav = preg_split('//', _T('jeux:alphabet_es'), -1, PREG_SPLIT_NO_EMPTY);

      Mais avec la virgule, ’/,/’ oui qu’il fonctionne pour les deux alphabets
      $clav = preg_split('/,/', _T('jeux:alphabet_es'), -1, PREG_SPLIT_NO_EMPTY);

      Et voilà qu’il est possible de montrer les deux. Je le fais de cette forme :

      // Le clavier russe. El teclado ruso
      function affiche_un_clavier_ru($indexJeux) {
       // mb_regex_encoding('UTF-8');
       // mb_internal_encoding("UTF-8"); 
       $clav = preg_split('/,/',_T('jeux:alphabet_ru'), -1, PREG_SPLIT_NO_EMPTY);
       //$clav = mb_split(',',_T('jeux:alphabet_ru'));
      
       foreach ($clav as $i=>$lettre) $clav[$i] = "<input class=\"jeux_bouton pendu_clavier\" type=\"button\" name=\"$lettre\" value=\"$lettre\" onclick=\"pendu_trouve('$lettre', '$indexJeux');\">";
       $i = floor(count($clav)/2);
       $clav = join('', array_slice($clav,0, $i)) . "<br />\n" . join('', array_slice($clav, $i));
       return "\n<table class=\"pendu_clavier\" border=0><tr><td class=\"pendu_clavier\" >$clav</td></tr></table>";
      }
      
      //El teclado en español con acentos
      /*
      function affiche_un_clavier_es($indexJeux) {
              mb_regex_encoding('UTF-8');
        mb_internal_encoding("UTF-8"); 
       //$clav = preg_split('/,/', _T('jeux:alphabet'), -1, PREG_SPLIT_NO_EMPTY);
       //$clav_es = mb_split(',',_T('jeux:alphabet_es'));
       
       foreach ($clav_es as $i=>$lettre) $clav_es[$i] = "<input class=\"jeux_bouton pendu_clavier\" type=\"button\" name=\"$lettre\" value=\"$lettre\" onclick=\"pendu_trouve('$lettre', '$indexJeux');\">";
       $i = floor(count($clav_es)/2);
       $clav_es = join('', array_slice($clav_es, 0, $i)) . "<br />\n" . join('', array_slice($clav_es, $i));
       return "\n<table class=\"pendu_clavier\" border=0><tr><td class=\"pendu_clavier\" >$clav_es</td></tr></table>";
      }
      */

      Et le lieu où ils apparaissent, j’ai modifié cette ligne de code de la manière suivante :

      return '<table class="pendu" style="border:0;"><tr><td valign="center">'
               . "<div align=\"center\"><div class=\"pendu_images\" align=center>$images</div><br/>\n$proposition</div><p class=\"kb\">Alfabeto ruso (Русский алфавит)</p>". affiche_un_clavier_ru($indexJeux) . "<p class=\"kb\">Alfabeto español y vocales acentuadas</p>". affiche_un_clavier_es($indexJeux) ."</td></tr>"

      Et, naturellement, deux jeux d’alphabets pour chaque clavier dans jeux_es.php :

              'alphabet_ru' => 'А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ь,Ы,Э,Ю,Я',
              'alphabet_es' => 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,Ñ,O,P,Q,R,S,T,U,V,W,X,Y,Z,Á,É,Í,Ó,Ú,-',

      Attention!, je ne suis pas un expert en PHP et rien par le style.

      Et voilà qu’il y ai ici un résultat :

      En résumant mes preuves jusqu’à présent:

      $clav = preg_split('/,/', _T('jeux:alphabet'), -1, PREG_SPLIT_NO_EMPTY);
      il permet de montrer seulement l’alphabet si la virgule de séparation existe entre slahes, ’/,/’.

      Et $clav_es = mb_split(',',_T('jeux:alphabet_es')); le même mais avec la virgule sans slahes, ’,’

    • Pour l’amélioration du plugin, il ne faut surtout pas toucher au code source : tu te prives des mises à jour futures du plugin. Je viens de publier une correction pour que tu puisses mieux réaliser ton travail de personnalisation.

      J’ai abandonné l’alphabet sans virgule pour plus de simplicité. J’ai également ajouté un nouveau paramètre de configuration. Si tu veux 2 claviers, il va falloir surcharger la fonction d’origine.

      Regarde ici : http://zone.spip.org/trac/spip-zone/changeset/69150

      Tu me donneras le résultat de tes tests. Merci !

      (J’espère que tu utilises SPIP 3 !!)

    • Tu as toute la raison dans cela.

      Je cesse de continuer d’essayer et je vais faire des tests avec ce que tu me dis...

      ... Bien sûr que je suis avec SPIP 3 !!

      Merci beaucoup par tout

    Reply to this message

  • Bonjour,

    J’aimerais savoir si il est possible de conserver les réponses dans un qcm lorsque l’on le recommence comme cela était possible avec l’ancienne version ?

    Pour info : spip 3.0.5 et Des jeux dans vos articles 3.1.5 - test.

    Merci d’avance de vos réponses !

    Reply to this message

  • 2

    Salut,
    j’ai testé un jeu de pendu, mais ça fonctionne pas avec la compression du html dans configuration>fonctions avancées...
    ça peut se résoudre ?

    • Non, je ne pense pas. En effet pour insérer les CS/JS correspondant au jeu, le plugin introduit un commentaire HTML dans l’entête, et ce commentaire HTML est transformé au moment de l’affichage finale, en fonction du contenu de la page.

      Or le compresseur HTML fonctionne en amont, sur chaque squelette individuel, en supprimant les commentaires. Donc ce n’est pas possible, a moins de modifier le mode d’insertion ou de demander au compresseur d’avoir une pipeline pour permettre des exceptions à la suppression.

      Mais honnêtement, la compression HTML, je ne suis pas sûr que ce soit indispensable. On économise à peine 5% sur le HTML même, ce qui avec les images, les scripts divers, représente à peine 3%. Et comme on charge le serveur …

    • en revanche, la compression JS/CSS est utile. A tout hasard, j’ai ouvert un ticket http://core.spip.org/issues/2813

    Reply to this message

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom