Le plugin mot-croisés !

Ceci est une archive périmée mais qui reste intéressante, parfois autant pour l’article que les commentaires associés.

Avertissement de l’auteur : ce plugin n’est plus maintenu à jour. La fonctionalité est désormais intégrée au plugin jeux.

Fonctionnalités

Ce plugin propose :

  • de mettre en ligne des mots croisés, avec leurs définitions.
  • de proposer aux utilisateurs de les remplir et de les vérifier.
  • d’afficher le nombre d’erreurs et la solution.

Historique et Licence

Ce plugin est une adaptation/mise à jour de la contrib Des mots croisés avec SPIP par son auteur originale Maïeul Rouquette. Comme cette dernière, il est distribué sur Licence GPL.

Liste des principales nouveautés :

  • installation simplifiée : plus besoin de toucher au squelette pour s’en servir.
  • support du multi-linguisme
  • un script javascript est proposé permettant
  • prévisualisation de la grille dans l’espace privé.
  • un filtre pas_de_grille est créé, permettant d’éviter d’afficher grille pour certain format de fichier (rss par exemple).
  • la balise #INTRODUCTION n’affiche plus la solution de la grille.
  • amélioration de la syntaxe de rédaction de la grille. Plus besoin de réfléchir à combien d’espaces on met après/avant <grille>,<vertical>,<horizontal>ect. De même, on peut mettre des espaces dans les cellules du tableau.
  • optimisation du code.

Configuration requise

  • Spip 1.9.1 ou Spip 1.9 + plugin « patch »
  • Des squelettes intégrant la balise #INSERT_HEAD au bon endroit, c’est à dire entre les balises <head> et </head>
  • Le plugin Jquery actif si l’on veux profiter du Javascript [1]. Vous pouvez le télécharger sur cette page

Installation

Téléchargez le fichier zip ci-joint, puis suivez la procédure d’installation des plugins

Le plugin mots-croisés
Télécharger le plugin

Mise à jour depuis l’ancienne version

Si vous aviez mis en place l’ancienne version de la contrib :

  • Suivez la procédure décrite plus haut.
  • Supprimez toute référence au filtre |grille dans vos squelettes
  • Supprimez la feuille de style créée pour la gestion des grilles.
  • Supprimez le code que vous aviez inséré dans mes_fonctions.php3 ou mes_fonctions.php

Rédigez vos mot-croisés

Ecrire <grille> puis composer votre grille comme un tableau Spip.

Il ne faut mettre ni numéro de colonne, ni numéro de ligne, ni raccourcis du type ||xx|yy||. Ni tout autre chose qu’un tableau spip (espaces et sauts de ligne exceptés)

Pour représenter un noir, utiliser un astérisque « * ». Dans les autres cases, entrez les lettres des mots du mot-croisé. Cette grille apparaîtra telle que vous la remplissez si l’utilisateur choisit d’afficher la solution

Puis écrire </grille>

Les définitions sont des simples listes numérotées à la Spip. Les définitions verticales devant être entourées par <vertical>et</vertical>, les horizontales par <horizontal> et <horizontal>.

Exemple :

 <grille>

|a|a|a|
|b|*|g|
|a|*|d|

</grille>

<horizontal>
-#def 1
-#def 2
-#def 3
</horizontal>

<vertical>
-#def 1
-#def 2
-#def 3
</vertical>

Utilisation en ligne

L’utilisateur a le choix d’afficher ou non la solution en cochant la case prévue.

Si le navigateur dispose de Javascript, alors :

-  Le remplissage de la grille est simplifié par la possibilité de se déplacer au clavier (flèche gauche, droite, haut et bas) pendant la saisie .
-  De plus, lorsqu’on entre une lettre, le curseur se déplace automatiquement dans la case suivante sur le plan horizontal.
-  Pour le remplissage vertical, un clic droit modifie ce déplacement automatique.
-  Pour savoir le sens d’écriture, il suffit de regarder la flèche au survol du formulaire.

Pour les toilemestres : traduire le rendu public

Vous aimeriez avoir des mots-croisés en russe, anglais, arabe ou autre et l’interface dans la bonne langue ?

Faites une copie du fichier motscroises_fr.php situé dans le dossier /lang du plugin vers le dossier lang de votre dossier de squelette [2]. Renommez le motscroises_xx.php, où xx est le code de langue. Puis modifiez à l’intérieur les chaînes de langues selon le besoin. Si des caractères sont situés entres deux @, gardez-les ainsi.

Vous êtes invités à m’envoyer ce fichier de langue, afin que je l’intègre dans le plugin pour les prochaines versions.

Régler la présentation de la grille

Le plugin est livré avec deux feuilles de style, situées à la racine du plugin :

  • mots-croises.css
  • mots-croises-prive.css

La première est destinée au rendu public de la grille.
La seconde au rendu dans l’interface privée.

Il est possible de surcharger l’une ou l’autre (ou les deux) en créant un homonyme dans votre dossier squelettes [3].

Voici quelques informations utiles pour la personnalisation de vos css
-  le tableau à remplir a pour classe « grille » et se situe dans un formulaire de classe « grille » (cette classe n’existait pas dans la version précédente)
-  les définitions verticales appartiennent à un div de classe « vertical » et celles horizontales à un div de classe « horizontal »
-  la grille de solution a pour classe « solution » et est incluse dans un div de class « solution »
-  le coin supérieur gauche est une cellule de classe « coin »
-  les cases noires sont de classe « noir ».
-  il existe un label dans les cases à remplir, afin de permettre une meilleure accessibilité. Vous pouvez masquer ce label grâce à un code du type .grille labeldisplay:none

Un filtre direction_css est appliqué, permettant de présenter correctement la grille pour les langues s’écrivant de droite à gauche (voir la documentation.

Le filtre |pas_de_grille

Il peut arriver que dans certain cas, nous ne souhaitons pas afficher la grille de mot-croisés. Le filtre |pas_de_grille appliqué à une balise résoud le problème.

Les squelettes backend.html et backend-breves.html sont surchargés, afin d’appliquer le filtre |pas_de_grille.

Techniquement ça marche comment ?

Comme tout plugin, mot-croisés contient un fichier plugin.xml à la racine. Il contient notamment des appels aux fichiers :

  • mot_croises_options.php. Ce fichier, qui à le même rôle que mes_options, contient deux fonctions :
    • introduction(). C’est une « surcharge » du code appelé par spip pour calculer la balise #INTRODUCTION.
    • pas_de_grille_introduction(). Appelée par la fonction précédente, elle permet d’éviter d’avoir la solution qui apparait lorsque l’on se sert de #INTRODUCTION.
  • mot_croises_fonctions.php. Ce fichier, qui à le même rôle que mes_fonctions, contient la définition du filtre |pas_de_grille, ainsi que celui du filtre |grille, qui ne sert plus à rien, mais est gardé pour des raisons de compatibilité historique.

Ce fichier plugin.xml utilise des pipelines.

  • insert_head -> la fonction associée est mot_croises_insert_head() définie dans mot_croises_insert_head.php. Elle se charge d’ajouter les appels au css et au javascript dans les entêtes html de l’espace public (balise #INSERT_HEAD)
  • header_prive ->la fonction associée est mot_croises_header_prive() définie dans mot_croises_header_prive.php. Elle se charge d’ajouter l’appel au css dans les entêtes html de l’espace privé
  • pre_propre ->la fonction associée est mot_croises_pre_propre() définie dans mot_croises_pre_propre.php >la fonction associée est mot_croises_avant_propre() définie dans mot_croises_avant_prive.propre. Appelée, comme son nom l’indique, avant la fonction propre(), [4], c’est la base de tout le système de mot-croisés. Elle va appeler plusieurs fonctions :
    • calcul_tableau_grille() définie dans inc/calculer_grille.php. Se charge de coonvertir le code du tableau que vous avez rentré en tableau php
    • comparaison() définie dans inc/verification.php, se charge de comparer les réponses rentrés par l’utilisateurs avec la solution. En gros, calcule le nombre d’erreurs.
    • affichage_grille() définie dans inc/affichage_grille.php. Calcule la grille à remplir si le second argument est faux, la grille de solution dans le cas contraire. Le premier argument a été calculé avec calcul_tableau_grille(). Cette fonction affichage_grille() fait elle même appel à une fonction<code>lettre(), pour afficher les numéros de ligne en lettres.
    • liste_spip(). Chargée de convertir les listes « à la Spip » en liste HTML.

Remerciement

Aux zoneurs qui m’ont aidé dans l’adaptation en plugin.

A Piif qui a fournit une bonne partie du javascript, à Renato qui m’a aidé.
A Linstit qui a testé le plugin et participé à la rédaction et a la correction de fôte d’hortograf de la documentation.
Aux bêta-testeurs.

Et à d’autres que j’ai dû oublier ...

Evolution possible

  • Plusieurs grilles sur une même page ?
  • Gestions des résultats : regarder l’évolution des performances d’un utilisateur avec le temps ?

En attendant, sachez que le plugin est developpé sur la Zone.

Notes

[1pour les futures versions de spip, la fonctionnalité de ce plugin sera livrée « en standard », mais n’anticipons pas.

[2ou tout autre dossier lang du path, voir : la documentation.

[3ou à n’importe quel endroit où Spip cherche ses squelettes,selon l’ordre de priorité

[4fonction qui se charge, grosso-modo, de convertir les raccourcis spip en code html

Discussion

3 discussions

  • 5

    Encore merci pour ce plugin...

    Ce plugin empêche le plugin Thickbox v1 de fonctionner...
    test effectué avec la version 1.9.1 (7385) de Spip ...

    une solution ?

    • Non, il va falloir voir ce qui coince, mais effectivement, je viens de faire le test et il y a une incompatibilité d’humeur entre les deux plugins.

    • Hum, je ne vois pas l’incompatibilité.

      Désolé, dés que je vois, j’essaye de corriger.

    • c’est probablement résolu aujourd’hui, non ?

    • Non ... parceque chez moi, je ne trouve pas cette incompatibilité ... et je suis donc mal à même de la résoudre

    • en local ça fonctionne en effet... mais c’est en ligne que je rencontre des incompatibilités : mots croisés semble empêcher de fonctionner Thickbox v1 et/ou le plugin Pagination_ahah. Peut-être est-ce lié à notre config... dès que je peux j’essaie ailleurs.

    Répondre à ce message

  • 6

    Bonjour,
    Installation OK, cache vidé mais ce plugin provoque une page blanche dans l’espace privé.
    J’ai oublié quelque chose ?

    Config pour info : plugins : FCK, Form, Acces Restreint, Jquery ; Hebergeur : Free ; Spip : 1.9.1 (7339). Nav : IE6 & Mozilla

    Merci

    • Correction à faire au fichier « mot_croises_header_prive.php ». Il faut fermer la balise « script ».

      function mot_croises_header_prive($flux){
      $flux .= '<link rel="stylesheet" type="text/css" href="'.direction_css(find_in_path('mots-croises-prive.css')).'" >';
      $flux .='<script type="text/javascript" src="'.find_in_path("mots-croises.js").'" ></script>';
      return $flux;
      }
    • Houps ....

      je corrige.

      Je pense que je vais désactiver ca dans l’espace privé, ca à l’air de faire planter ff.

    • Merci,

      en fait, la balise se ferme d’elle même (présence d’un / final, comme dans <br />) mais il semble que ca pose problème.

      Cela sera coorigé sur la future version

    • Toujours un pb ?

      Essayez eventuellement avec les autres plugins désactivés.

    • Même chose pour mot_croises_insert_head.php, il faut fermer par </script> :

      function mot_croises_insert_head($flux){
      	return $flux."<link rel=\"stylesheet\" type=\"text/css\" href=\"".direction_css(find_in_path("mots-croises.css"))."\" />\n<script src=\"".find_in_path("mots-croises.js")."\" type=\"text/javascript\"></script>";}
    • Bonjour,
      Avec spip 1.9.1. affichage page blanche, espace privé inaccessible. Obligation de supprimer le plugin en ftp.
      Cordialement

    Répondre à ce message

  • Depuis peu, une nouvelle syntaxe a été implémentée dans ce plugin :

    <mots-croises>
    [horizontal]
    Definition 1
    Definition 2. Definition 3
    Definition 4. Definition 5
     
    [vertical]
    Definition 1
    Definition 2
    Definition 3
     
    [solution]
    aaa
    b*g
    a*d
    </mots-croises>

    De plus, cette présente contrib vient d’être intégrée dans le plugin ’jeux’
    La syntaxe est quasiment la même.

    Je fais appel à tous les testeurs ;-)

    Voir : Des jeux dans vos articles !

    Répondre à ce message

Ajouter un commentaire

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
  • 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 apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom