Changeset 7762 in spip-zone


Ignore:
Timestamp:
Dec 5, 2006, 2:41:12 AM (12 years ago)
Author:
patfr@…
Message:

suite du développement
qq simplifications et arrangements

Location:
_plugins_/_stable_/jeux
Files:
8 added
17 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/jeux/inc/mots_croises.php

    r7729 r7762  
    150150  // parcourir tous les #SEPARATEURS
    151151        $tableau = jeux_split_texte('mots_croises', $texte);
    152         foreach($tableau as $i => $valeur){
     152        foreach($tableau as $i => $valeur) if ($i & 1) {
    153153         if ($valeur==_JEUX_TITRE) $titre = $tableau[$i+1];
    154154          elseif ($valeur==_JEUX_HORIZONTAL) $horizontal = jeux_listes($tableau[$i+1]);
  • _plugins_/_stable_/jeux/inc/pendu.todo

    r7729 r7762  
    2222separateurs obligatoires : [pendu]
    2323separateurs optionnels   : [titre], [texte]
     24
     25Règles du jeu :
     26- Vous devez choisir une lettre à chaque essai.
     27- Si la lettre existe dans le mot, elle apparaît à la bonne place.
     28- La tête, un bras, une jambe... A chaque erreur, vous êtes un peu plus pendu. Vous avez droit à 6 erreurs. Bonne chance!
    2429
    2530Exemple de syntaxe dans l'article :
  • _plugins_/_stable_/jeux/inc/qcm.php

    r7729 r7762  
    190190      else {
    191191                foreach($qcms[$indexQCM]['propositions'] as $i=>$valeur)
    192           $codeHTML.='<input type="radio" name="'.$nomVarSelect
     192          $codeHTML.='<input type="radio" class="qcm_radio" name="'.$nomVarSelect
    193193                        . '" value="'.$i.'" id="'.$nomVarSelect.$i.'"><label for="'.$nomVarSelect.$i.'">'
    194194                . $valeur.'</label><br />';
     
    196196       $codeHTML.="</div><br />";
    197197       
    198     }   //Fin du cas sans correction
     198    }   // fin du cas sans correction
    199199
    200200  // Sinon on affiche la correction
     
    230230        $codeHTML.='<br />';
    231231     
    232   } //Fin du cas avec correction
     232  } // fin du cas avec correction
    233233  return $codeHTML;
    234234}
     
    258258  // parcourir tous les #SEPARATEURS
    259259  $tableau = jeux_split_texte('qcm', $texte);
    260   foreach($tableau as $i => $valeur){
     260  foreach($tableau as $i => $valeur) if ($i & 1) {
    261261         if ($valeur==_JEUX_TITRE) $titre = $tableau[$i+1];
    262262          elseif ($valeur==_JEUX_QCM) {
     
    278278  $texte = qcm_inserer_les_qcm($html, $indexJeux, $gestionPoints);
    279279
    280   $tete = '<div class="spip_qcm"><div class="jeux_titre">'.$titre.'<hr /></div>';
     280  // calcul des extremes
     281  $tete = '<div class="jeux qcm"><div class="jeux_titre">'.$titre.'<hr /></div>';
    281282  if (!isset($_POST["var_correction_".$indexJeux])) {
    282283        $tete .= "\n".'<form method="post" action="">';
     
    286287        </form>';
    287288  } else {
    288       // On ajoute le score final
    289       $pied = '<center><div class="jeux_score">'._T('jeux:score')
    290                                 . "&nbsp;$qcm_score&nbsp;/&nbsp;".$qcms['totalscore'].'<br>'
    291                                 . ($qcm_score==$qcms['totalscore']?_T('jeux:bravo'):'').'</div></center>'
    292                                 . '<div class="jeux_bouton_corriger" align="right">[ <a href="'
    293                                 . parametre_url(self(),'var_mode','recalcul').'">'._T('jeux:reinitialiser').'</a> ]</div>';
     289      $pied = jeux_afficher_score($qcm_score, $qcms['totalscore'])
     290                        . jeux_bouton_reinitialiser();
    294291  }
    295292 
  • _plugins_/_stable_/jeux/inc/shanghai.todo

    r7713 r7762  
    2525
    2626balises du plugin : <jeux></jeux>
    27 separateurs obligatoires : #SHANGAI, euh ?
     27separateurs obligatoires : [shanghai], euh ?
    2828separateurs optionnels   : [titre]
    2929
     
    3232
    3333<jeux>
    34         #SHANGAI
     34        [shanghai]
    3535       
    3636</jeux>
  • _plugins_/_stable_/jeux/inc/sudoku.php

    r7713 r7762  
    141141
    142142        $tableau = jeux_split_texte('sudoku', $texte);
    143         foreach($tableau as $i => $valeur){
     143        foreach($tableau as $i => $valeur) if ($i & 1) {
    144144         if ($valeur==_JEUX_TITRE) $titre = $tableau[$i+1];
    145145          elseif ($valeur==_JEUX_SUDOKU) $sudoku = calcul_tableau_sudoku($tableau[$i+1]);
  • _plugins_/_stable_/jeux/inc/textes.php

    r7713 r7762  
    8181  // parcourir tous les #SEPARATEURS
    8282  $tableau = jeux_split_texte('textes', $texte);
    83   foreach($tableau as $i => $valeur){
     83  foreach($tableau as $i => $valeur) if ($i & 1) {
    8484         if ($valeur==_JEUX_TITRE) $titre = $tableau[$i+1];
    8585          elseif ($valeur==_JEUX_POESIE) $poesie = '<poesie>'.$tableau[$i+1].'</poesie>';
  • _plugins_/_stable_/jeux/inc/trous.php

    r7729 r7762  
    1919balises du plugin : <jeux></jeux>
    2020separateurs obligatoires : [texte], [trou]
    21 separateurs optionnels   : [titre]
     21separateurs optionnels   : [titre], [config]
    2222
    2323Exemple de syntaxe dans l'article :
     
    3838        [texte]
    3939        autorise les réponses "trou", "vide" ou "blanc".
     40        [config]
     41        aide = oui
     42        indices = oui
    4043</jeux>
    4144
     
    5659  $nomVarSelect = "var{$indexJeux}_T{$indexTrou}";
    5760  $mots = $propositionsTROUS[$indexTrou];
     61  $prop = strtolower($_POST[$nomVarSelect] = trim($_POST[$nomVarSelect]));
    5862 
    59   if (!$corriger){
    60     // affichage sans correction :
    61      $codeHTML = " <input name=\"trou$indexTrou\" size=\"$size\" onfocus=\"TrackFocus($indexTrou)\" type=\"text\"> "
    62          ." (".join('|', $mots).")";
    63   }
     63  $codeHTML = " <input name=\"$nomVarSelect\" class=\"jeux_input\" size=\"$size\" onfocus=\"TrackFocus('$nomVarSelect')\" type=\"text\""
     64          . ($prop?" value=\"{$_POST[$nomVarSelect]}\"":'') . "> "
     65         ;// . " (".join('|', $mots).")";
    6466
    65   // Sinon on affiche la correction
    66   else {
    67  /*
    68          if ($_POST[$nomVarSelect]) {
    69                 // les points de la reponse donnee...
    70                 $pointsR = $qcms[$indexQCM]['points'][$_POST[$nomVarSelect]];
    71                
    72                 // la reponse donnee & precision des points eventuels de la mauvaise reponse...
    73                 $codeHTML.='<div class="qcm_reponse">'
    74                          .((($pointsR==$pointsQ) || ($pointsR==0))?_T('jeux:votre_choix'):qcm_les_points(_T('jeux:votre_choix'), $pointsR))
    75                          .$qcms[$indexQCM]['propositions'][$_POST[$nomVarSelect]].'</div>';
    76 
    77                 // on donne les points de la reponse quoiqu'il arrive
    78                 $qcm_score += $pointsR;
    79                
    80         if ($qcms[$indexQCM]['bonnereponse']==$_POST[$nomVarSelect])
    81         // Si c'est juste
    82                         $codeHTML .= '<div class="qcm_correction_juste">'._T('qcm:qcm_reponseJuste').'</div>';
    83         // Si c'est faux
    84          else $codeHTML .= '<div class="qcm_correction_faux">'._T('qcm:qcm_reponseFausse').'</div>';
    85            
    86         // pas de reponse postee...
    87         } else $codeHTML.='<div class="qcm_correction_null">'._T('qcm:qcm_reponseNulle').'</div>';
    88            
    89         $codeHTML.='<br />';
    90 */     
    91   } //Fin du cas avec correction
     67  if ($corriger){
     68   if ($prop!='' && in_array($prop, $mots)) ++$scoreTROUS;
     69   
     70  } // Fin du cas avec correction
    9271
    9372  return $codeHTML;
     
    11089}
    11190
     91// afficher l'ensemble des solutions dans le desordre...
     92// si plusieurs solutions sont possibles, seule la premiere est retenue
     93function trous_afficher_indices() {
     94 global $propositionsTROUS;
     95 foreach ($propositionsTROUS as $prop) $indices[] = $prop[0];
     96 shuffle($indices);
     97 return '<br>&nbsp;<br>'._T('jeux:indices').'&nbsp;'
     98// return '<br><center><table border="1" cellpadding="10" align="center"><tbody><tr><td><b>&nbsp;&nbsp;&nbsp;'
     99        . join(' -&nbsp;', $indices)
     100;//     . '</b></td></tr></tbody></table></center>';
     101}
     102
    112103function jeux_trous($texte, $indexJeux) {
    113   global $propositionsTROUS;
     104  global $propositionsTROUS, $scoreTROUS;
    114105  $titre = $html = false;
    115   $indexTrou = 0;
     106  $indexTrou = $scoreTROUS = 0;
    116107
    117108  // parcourir tous les #SEPARATEURS
    118109  $tableau = jeux_split_texte('trous', $texte);
    119   foreach($tableau as $i => $valeur){
     110  foreach($tableau as $i => $valeur) if ($i & 1) {
    120111         if ($valeur==_JEUX_TITRE) $titre = $tableau[$i+1];
    121112          elseif ($valeur==_JEUX_TEXTE) $html .= $tableau[$i+1];
     
    123114                // remplacement des trous par : <ATTENTE_TROU>ii</ATTENTE_TROU>
    124115                $html .= "<ATTENTE_TROU>$indexTrou</ATTENTE_TROU>";
    125                 $propositionsTROUS[$indexTrou] = jeux_liste_mots($tableau[$i+1]);
     116                $propositionsTROUS[$indexTrou] = jeux_liste_mots_min($tableau[$i+1]);
    126117                $indexTrou++;
    127118          }
     
    132123
    133124  $tete = '<div class="jeux">' . ($titre?'<div class="jeux_titre">'.$titre.'<hr /></div>':'');
     125  $pied = jeux_config('indices')?trous_afficher_indices():'';
     126 
    134127  if (!isset($_POST["var_correction_".$indexJeux])) {
    135128        $tete .= "\n".'<form method="post" action="">';
    136         $pied = '<br>
    137         <input type="hidden" name="var_correction_'.$indexJeux.'" value="yes">
     129        $pied .= '<br><input type="hidden" name="var_correction_'.$indexJeux.'" value="yes">
    138130        <div align="center"><input type="submit" value="'._T('jeux:corriger').'" class="jeux_bouton_corriger"></div>
    139131        </form>';
    140132  } else {
    141133      // On ajoute le score final
    142       $pied = '<center><div class="jeux_score">'._T('jeux:jeux_score')
    143                                 . "&nbsp;$qcm_score&nbsp;/&nbsp;".$qcms['totalscore'].'<br>'
    144                                 . ($qcm_score==$qcms['totalscore']?_T('jeux:bravo'):'').'</div></center>'
    145                                 . '<div class="jeux_bouton_corriger" align="right">[ <a href="'
    146                                 . parametre_url(self(),'var_mode','recalcul').'">'._T('trous:trous_reinitialiser').'</a> ]</div>';
     134      $pied .= jeux_afficher_score($scoreTROUS, $indexTrou)
     135                        . jeux_bouton_recommencer();
    147136  }
    148137 
    149   unset($propositionsTROUS);
    150  
    151   return $tete.$texte.$pied;
     138  unset($propositionsTROUS); unset($scoreTROUS);
     139  return $tete.$texte.$pied.'</div>';
    152140}
    153141?>
  • _plugins_/_stable_/jeux/jeux_config.php

    r7729 r7762  
    2020define('_JEUX_TITRE', 'titre');         // separateur indiquant le titre du jeu
    2121define('_JEUX_TEXTE', 'texte');         // separateur indiquant un contenu a garder telquel
     22define('_JEUX_CONFIG', 'config');       // separateur permettant de passer des parametres au jeu
    2223define('_JEUX_REPONSE', 'reponse');
    2324define('_JEUX_SOLUTION', 'solution');
     
    4647        'qcm' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_QCM),
    4748        'textes' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_POESIE, _JEUX_CITATION, _JEUX_AUTEUR, _JEUX_RECUEIL),
    48         'trous' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_TROU),
     49        'trous' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_TROU, _JEUX_CONFIG),
    4950//      'pendu' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_PENDU),
    5051);
  • _plugins_/_stable_/jeux/jeux_pipelines.php

    r7718 r7762  
    1010include_spip('jeux_config');
    1111include_spip('jeux_utils');
     12
     13// tableau de parametres exploitables par les plugins
     14global $jeux_config;
    1215
    1316// fonction principale
  • _plugins_/_stable_/jeux/jeux_utils.php

    r7729 r7762  
    77#---------------------------------------------------#
    88
     9// 3 fonctions pour traiter la valeur du parametre de configuration place apres le separateur [config]
     10global $jeux_config;
     11function jeux_config($param) {
     12  global $jeux_config;
     13  return in_array($jeux_config[$param], array('oui', 'yes', '1', 'si', 'ja', strtolower(_T('item_oui'))));
     14}
     15function jeux_config_set($param, $valeur) {
     16  global $jeux_config;
     17  if ($param!='') $jeux_config[$param] = $valeur;
     18}
     19function jeux_config_init($texte) {
     20 $lignes = split("\n", $texte);
     21 foreach ($lignes as $ligne)
     22  if (preg_match('/([^=]+)=(.+)/', $ligne, $regs)) jeux_config_set(trim($regs[1]), trim($regs[2]));
     23}
     24
    925// splitte le texte du jeu avec les separateurs concernes
     26// et traite les parametres de config
    1027function jeux_split_texte($jeu, &$texte) {
    1128  global $jeux_separateurs;
    12   $texte = '['._JEUX_TEXTE.']'.trim($texte);
     29  $texte = '['._JEUX_TEXTE.']'.trim($texte).' ';
    1330  $expr = '/(\['.join('\]|\[', $jeux_separateurs[$jeu]).'\])/';
    1431  $tableau = preg_split($expr, $texte, -1, PREG_SPLIT_DELIM_CAPTURE);
    15   foreach($tableau as $i => $valeur) $tableau[$i] = preg_replace('/^\[(.*)\]$/', '\\1', trim($valeur));
     32//  foreach($tableau as $i => $valeur) $tableau[$i] = preg_replace('/^\[(.*)\]$/', '\\1', trim($valeur));
     33  foreach($tableau as $i => $valeur) if (($i & 1) && preg_match('/^\[(.*)\]$/', trim($valeur), $reg)) {
     34   $tableau[$i] = strtolower(trim($reg[1]));
     35   if ($reg[1]==_JEUX_CONFIG && $i+1<count($tableau)) jeux_config_init($tableau[$i+1]);
     36  }
    1637  return $tableau;
    1738
     
    2748// retourne un tableau de mots ou d'expressions a partir d'un texte
    2849function jeux_liste_mots($texte) {
    29                 $texte = filtrer_entites($texte);
    30                 $texte = preg_replace("/[,;\.\|\s\t\n\r]+/", " ", $texte);
    31                 $split = split('"', $texte);
    32                 $c = count($split);
    33                 for($i=0; $i<$c; $i++) if ($i & 1) $split[$i] = str_replace(' ','+', $split[$i]);
    34                 $texte = join('', $split);
    35                 $texte = str_replace(" ","\t", $texte);
    36                 $texte = str_replace("+"," ", $texte);
    37                 return array_unique(split("\t", $texte));
     50        $texte = filtrer_entites(trim($texte));
     51        $texte = preg_replace("/[,;\.\|\s\t\n\r]+/", " ", $texte);
     52        $split = split('"', $texte);
     53        $c = count($split);
     54        for($i=0; $i<$c; $i++) if ($i & 1) $split[$i] = str_replace(' ','+', $split[$i]);
     55        $texte = join('', $split);
     56        $texte = str_replace(" ","\t", $texte);
     57        $texte = str_replace("+"," ", $texte);
     58        return (array_unique(split("\t", $texte)));
    3859}
     60function jeux_liste_mots_maj($texte) {
     61        return jeux_liste_mots(strtoupper($texte));
     62}
     63function jeux_liste_mots_min($texte) {
     64        return jeux_liste_mots(strtolower($texte));
     65}
     66
     67// retourne la boite de score
     68function jeux_afficher_score($score, $total) {
     69        return '<center><div class="jeux_score">'._T('jeux:score')
     70                                . "&nbsp;$score&nbsp;/&nbsp;".$total.'<br>'
     71                                . ($score==$total?_T('jeux:bravo'):'').'</div></center>';
     72}
     73
     74// fonctions qui retournent des boutons
     75function jeux_bouton_reinitialiser() {
     76        return '<div class="jeux_bouton_corriger" align="right">[ <a href="'
     77         . parametre_url(self(),'var_mode','recalcul').'">'._T('jeux:reinitialiser').'</a> ]</div>';
     78}
     79function jeux_bouton_recommencer() {
     80        return '<div class="jeux_bouton_corriger" align="right">[ <a href="'
     81         . parametre_url(self(),'var_mode','recalcul').'">'._T('jeux:recommencer').'</a> ]</div>';
     82}
     83
    3984// ajoute un module jeu a la bibliotheque
    4085function include_jeux($jeu, &$texte, $indexJeux) {
  • _plugins_/_stable_/jeux/lang/jeux_en.php

    r7729 r7762  
    1111'verifier'              => 'V&eacute;rifier',
    1212'solution'              =>'Solution',
    13 'score'                 => "Score:",
     13'indices'               => 'Clues:',
     14'score'                 => 'Score:',
    1415
    1516'point' => "&nbsp;pt",
    16 'points' => "&nbsp;pts"
     17'points' => "&nbsp;pts",
    1718
    18 'reinitialiser'         => "Restart",
     19'reinitialiser'         => 'Reset',
     20'recommencer'           => 'Restart',
    1921
    2022'aucune_erreur'         =>'No error',
  • _plugins_/_stable_/jeux/lang/jeux_fr.php

    r7729 r7762  
    1111'verifier'              => 'V&eacute;rifier',
    1212'solution'              =>'Solution',
     13'indices'               => 'Indices&nbsp;:',
    1314'score'                 => "Score&nbsp;:",
    1415
    1516'point'         => "&nbsp;pt",
    16 'points'        => "&nbsp;pts"
     17'points'        => "&nbsp;pts",
    1718
    18 'reinitialiser'         => "R&eacute;initialiser",
     19'reinitialiser'         => 'R&eacute;initialiser',
     20'recommencer'           => 'Recommencer',
    1921
    2022'aucune_erreur'         =>'Aucune erreur',
  • _plugins_/_stable_/jeux/lang/jeux_it.php

    r7740 r7762  
    1111'verifier'              => 'Controlla',
    1212'solution'              =>'Soluzione',
    13 'score'                 => "Score&nbsp;:",      // TODO
     13'indices'               => 'Indizii:',
     14'score'                 => "Risultato:",        // TODO
    1415
    1516'point'         => "punto",
    1617'points'        => "punti",
    1718
    18 'reinitialiser'         => "Ricarica",
     19'reinitialiser'         => 'Ricarica',
     20'recommencer'           => 'Ricomincia',
     21
    1922// 'qcm_reinitialiser' => "Ricarica il questionario",
    2023
  • _plugins_/_stable_/jeux/styles/jeux.css

    r7729 r7762  
     1.jeux
     2
     3  text-align:left;
     4  font-size: 90%;
     5  /*font-family            : arial, helvetica, sans-serif;*/
     6  color :  #3F5264;
     7  /*font-size : 12;*/
     8  border: 1px solid #F78C54;
     9  padding: 3px;
     10  marging: 3px;
     11  background-color : #FFEADE;
     12  width:100%;
     13}
     14
    115.jeux_titre{
    216  text-align : center;
    317  font-size : 14;
    418  font-weight : bold;
    5   color :  #3F5264;
     19/*  color :  #3F5264; */
    620}
    721
    822.jeux_bouton_corriger{
    923 color :  #3F5264;
    10  font-size : 10; 
     24 font-size: 80%;
     25/* font-size : 10;  */
    1126 font-weight : bold;
    1227 background-color : #FFEADE;
     28}
     29
     30.jeux_input{
     31 color :  #3F5264;
     32/* font-size : 10; 
     33 font-weight : bold; */
     34 background-color : #FFEADE;
     35 border:1px solid;
    1336}
    1437
     
    2548
    2649.jeux_point{
    27   font-size : 10;
     50/*  font-size : 10;*/
    2851  font-weight : normal;
    29   color :  #3F5264;
     52/*  color :  #3F5264;*/
    3053}
    3154
  • _plugins_/_stable_/jeux/styles/mots_croises-prive.css

    r7729 r7762  
    11td.noir {background-color:#000000; color:#000000;}
    22table.grille input, table.grille th{min-width:1.5em;
     3margin:0pt;
     4padding:0pt;
    35width:1.5em;
    46text-align:center;
    57vertical-align:middle;
    68height:1.5em;}
    7 table.grille td{border:1px solid black;text-align:center}
     9table.grille td{border:1px solid black;text-align:center
     10}
    811.grille td.coin,table.grille input,.grille th{border:0px solid black}
    912.erreur{float:left;}
  • _plugins_/_stable_/jeux/styles/mots_croises.css

    r7729 r7762  
    7272        border:0;
    7373        padding:0;
     74        margin:0pt;
    7475}       
    7576
     
    8182        height:1.5em;
    8283        border:0;
     84        margin:0;
     85        padding:0;
    8386}
    8487
  • _plugins_/_stable_/jeux/styles/qcm.css

    r7729 r7762  
    55
    66  text-align:left;
    7   font-size: 80%;
     7  font-size: 90%;
    88  font-family            : arial, helvetica, sans-serif;
    99  color :  #3F5264;
     
    1616
    1717.qcm_question{
     18  font-size: 80%;
    1819  font-size : 12;
    1920  font-weight : bold;
    20   color :  #3F5264;
     21/*  color :  #3F5264;*/
    2122 }
    2223
    2324.qcm_proposition{
     25  font-size: 80%;
    2426  font-size : 10;
    25   color :  #3F5264;
     27/*  color :  #3F5264;*/
    2628 }
    2729
    2830.qcm_reponse{
    29   font-size : 10;
    30   color :  #3F5264;
     31   font-size: 80%;
     32 font-size : 10;
     33/*  color :  #3F5264;*/
    3134 }
    3235
     
    7881  background-color : #F3EEEA;
    7982}
     83
     84.qcm_radio{
     85  margin:1pt;
     86  padding:1pt;
     87}
Note: See TracChangeset for help on using the changeset viewer.