Changeset 10066 in spip-zone
- Timestamp:
- Mar 2, 2007, 3:58:22 PM (14 years ago)
- Location:
- _plugins_/_stable_/jeux
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/_stable_/jeux/inc/devinettes.php
r9674 r10066 66 66 $image = filtrer('image_flip_vertical', filtrer('image_flip_horizontal', $image)); 67 67 if (function_exists('image_graver')) $image = filtrer('image_graver', $image); 68 $image = inserer_attribut($image, 'align', 'right', false, true); 68 69 $image = aligner_droite(inserer_attribut($image, 'class', 'no_image_filtrer', false, true)); 69 70 $texte = jeux_block_invisible($id, _T('jeux:reponse'), $image); -
_plugins_/_stable_/jeux/inc/pendu.php
r9571 r10066 48 48 var T_fini=\""._T('pendu:fini').'"; 49 49 var T_bravo="'._T('jeux:bravo').'";'; 50 $proposition = '<input class="pendu_deviner" type="button" readonly=\"readonly" value=" " name="cache">';50 $proposition = '<input class="pendu_deviner" type="button" readonly=\"readonly" value="ABCDEF" name="cache">'; 51 51 $reset = '<input class="pendu_reset" type="button" value="'._T('jeux:rejouer').'" onclick="pendu_init('.$indexJeux.')">'; 52 52 $images = ''; 53 $path = _DIR_PLUGIN_JEUX.'img/pendu'.jeux_config('pendu').'/'; 54 $images_init = preg_split('/\s*,\s*/', jeux_config(1)); 53 55 for($i=0; $i<=$nb_images-1; $i++) 54 $images .= "<img class=\"no_image_filtrer image_pendu\" name=\"pict{$indexJeux}_$i\" src=\" \" />";56 $images .= "<img class=\"no_image_filtrer image_pendu\" name=\"pict{$indexJeux}_$i\" src=\"$path".$images_init[$i]."\" />"; 55 57 $regles = jeux_config('regle')?'<p class="jeux_regle">'.definir_puce()._T('pendu:regle').'</p>' : ''; 58 $js = echappe_html("$js 59 pendu_init($indexJeux); 60 // --></script>", 'JEUX'); 61 // scripts autorises ? 62 if ((!_DIR_RESTREINT && $GLOBALS["filtrer_javascript"]!=1) || ($GLOBALS["filtrer_javascript"]==-1)) $js = _T('jeux:erreur_scripts'); 63 // les scripts etaient totalement interdits avant 1.92 64 if ($GLOBALS['spip_version_code']<1.92) $js = _T('jeux:erreur_spip'); 56 65 return '<table class="pendu" border=0><tr><td>' 57 66 . "<p align=\"center\">$images<br/>\n$proposition</p></td><td width=\"20\"> </td><td valign=\"bottom\">\n" . affiche_un_clavier($indexJeux) . "<br/></td></tr><tr><td colspan=\"3\" align=\"right\">$reset</td></tr></table>\n" 58 . $regles 59 . echappe_html("$js 60 pendu_init($indexJeux); 61 // --></script>", 'JEUX'); 67 . $regles . $js; 62 68 } 63 69 -
_plugins_/_stable_/jeux/inc/qcm.php
r9621 r10066 141 141 } 142 142 143 function qcm_affiche_la_question($indexJeux, $indexQCM, $corrige e, $gestionPoints) {143 function qcm_affiche_la_question($indexJeux, $indexQCM, $corriger, $gestionPoints) { 144 144 global $qcms, $qcm_score; 145 145 if (!$qcms[$indexQCM]['nbpropositions'] || !$qcms[$indexQCM]['maxscore']) … … 158 158 159 159 $codeHTML = "<div class=\"jeux_question\">".definir_puce().$question.'</div>'; 160 if (!$corrige e){160 if (!$corriger){ 161 161 // affichage sans correction : 162 162 $codeHTML.="\n<div class=\"qcm_proposition\">"; -
_plugins_/_stable_/jeux/jeux_config.php
r8937 r10066 16 16 define('_JEUX_FIN', '</jeux>'); 17 17 define('_JEUX_POST', '@@JEUX_POST@@'); 18 define('_JEUX_HEAD1', "\n<!-- CSS & JS JEUX -->\n"); 19 define('_JEUX_HEAD2', "<!-- CSS & JS JEUX (AUTO) -->\n"); 20 18 21 19 22 // separateurs utilisables a l'interieur des balises ci-dessus … … 77 80 ); 78 81 79 // liste des css a placer dans le header public 80 // dossier jeux/style/ 81 global $jeux_header_public; 82 $jeux_header_public = array('jeux', 'qcm', 'mots_croises', 'sudoku', 'pendu'); 83 84 85 // liste des css a placer dans le header prive 86 // dossier jeux/style/ 87 global $jeux_header_prive; 82 // liste manuelle des css ou js a placer dans le header prive 83 // ca peut toujours servir pour les controles... 84 // dossiers : jeux/style/ et jeux/javascript/ 85 global $jeux_header_prive, $jeux_javascript_prive; 88 86 $jeux_header_prive = array('jeux','qcm', 'mots_croises', 'sudoku', 'pendu'); 89 90 // liste des js a placer dans le header prive 91 // dossier jeux/javascript/ 92 global $jeux_javascript; 93 $jeux_javascript = array('layer', 'pendu', 'mots_croises'); 87 $jeux_javascript_prive = array('layer', 'pendu', 'mots_croises'); 94 88 95 89 // Codes RGB des couleurs prédéfinies a utiliser pour certains parametres apres la balise [config] -
_plugins_/_stable_/jeux/jeux_fonctions.php
r7674 r10066 9 9 // filtre qui evite d'afficher le resultat obtenu par certains plugins 10 10 // grace aux espions : <!-- PLUGIN-DEBUT --> et <!-- PLUGIN-FIN --> 11 // ou : <!-- PLUGIN-DEBUT- xx --> et <!-- PLUGIN-FIN-xx --> ou xx est un numero.11 // ou : <!-- PLUGIN-DEBUT-#xxxx --> et <!-- PLUGIN-FIN-#xxxx --> ou xxxx est le numero d'identification du plugin. 12 12 13 13 if (!function_exists("pas_de_plugin")) { 14 14 function pas_de_plugin($texte){ 15 return preg_replace(",<!--\s*PLUGIN-DEBUT(- [0-9]*)?\s*-->.*<!--\s*PLUGIN-FIN(-[0-9]*)?\s*-->,UimsS", '', $texte);15 return preg_replace(",<!--\s*PLUGIN-DEBUT(-#[0-9]*)?.*<!--\s*PLUGIN-FIN\\1?\s*-->,UimsS", '', $texte); 16 16 } 17 17 } -
_plugins_/_stable_/jeux/jeux_pipelines.php
r9571 r10066 12 12 13 13 // tableau de parametres exploitables par les plugins 14 global $jeux_config ;14 global $jeux_config, $jeux_liste; 15 15 16 16 // fonction pre-traitement 17 17 function jeux_pre($chaine, $indexJeux){ 18 global $jeux_liste; 18 19 if (strpos($chaine, _JEUX_DEBUT)===false || strpos($chaine, _JEUX_FIN)===false) return $chaine; 19 20 … … 23 24 24 25 // ...et decoder le texte obtenu en fonction des signatures 25 jeux_inclure_et_decoder($chaine, $indexJeux); 26 $liste = jeux_inclure_et_decoder($chaine, $indexJeux); 27 $jeux_liste = array_merge($jeux_liste, $liste); 26 28 27 return $texteAvant.jeux_rem('PLUGIN-DEBUT', $indexJeux ).$chaine29 return $texteAvant.jeux_rem('PLUGIN-DEBUT', $indexJeux, join('/', $liste)).$chaine 28 30 .jeux_rem('PLUGIN-FIN', $indexJeux).jeux_pre($texteApres, ++$indexJeux); 29 31 } … … 31 33 // fonction post-traitement 32 34 function jeux_post($chaine){ 33 $chaine=echappe_retour($chaine, 'JEUX');35 $chaine=echappe_retour($chaine, 'JEUX'); 34 36 35 37 $sep1 = '['._JEUX_POST.'|'; $sep2 = '@@]'; … … 43 45 if (function_exists($fonc)) $chaine = $fonc($params[1], $params[2]); 44 46 45 // $chaine = "OK : {$params[0]} - {$params[1]} - {$regs[2]}";46 47 47 return $texteAvant.$chaine.jeux_post($texteApres); 48 48 } … … 62 62 // pipeline pre_propre 63 63 function jeux_pre_propre($texte) { 64 // liste des jeux trouves 65 global $jeux_liste; 66 $jeux_liste = array(); 64 67 // s'il n'est pas present dans un formulaire envoye, 65 // l'identifiant du jeu est choisi au hasard... ca peut servir dans le cas des signatures. 68 // l'identifiant du jeu est choisi au hasard... 69 // ca peut servir en cas d'affichage de plusieurs articles par page. 66 70 // en passant tous les jeux en ajax, ce ne sera plus la peine. 67 71 $GLOBALS['debut_index_jeux'] = isset($_POST['debut_index_jeux'])?$_POST['debut_index_jeux']:rand(1, 65000); 68 return jeux_pre($texte, $GLOBALS['debut_index_jeux']); 72 $texte = jeux_pre($texte, $GLOBALS['debut_index_jeux']); 73 $jeux_liste = array_unique($jeux_liste); 74 $header=''; 75 foreach($jeux_liste as $jeu) $header .= jeux_stylesheet($jeu) . "\n"; 76 foreach($jeux_liste as $jeu) $header .= jeux_javascript($jeu) . "\n"; 77 $header = htmlentities(preg_replace(",\n+,", "||", trim($header))); 78 return (count($jeux_liste)?jeux_rem('JEUX-HEAD', count($jeux_liste), $header):'') . $texte; 69 79 } 70 80 … … 76 86 // pipeline header_prive 77 87 function jeux_header_prive($flux){ 78 global $jeux_header_prive, $jeux_javascript; 79 foreach($jeux_header_prive as $s) $flux .= jeux_stylesheet_public($s); 80 foreach($jeux_javascript as $s) $flux .= jeux_javascript($s); 88 global $jeux_header_prive, $jeux_javascript_prive; 89 $flux .= _JEUX_HEAD1; 90 foreach($jeux_header_prive as $s) $flux .= jeux_stylesheet($s); 91 foreach($jeux_javascript_prive as $s) $flux .= jeux_javascript($s); 81 92 return $flux; 82 93 } … … 84 95 // pipeline insert_head 85 96 function jeux_insert_head($flux){ 86 global $jeux_header_public, $jeux_javascript; 87 $flux .= "<!-- CSS & JS JEUX -->\n"; 88 foreach($jeux_header_public as $s) $flux .= jeux_stylesheet_public($s); 89 foreach($jeux_javascript as $s) $flux .= jeux_javascript($s); 90 return $flux; 97 return $flux . _JEUX_HEAD1 . jeux_stylesheet('jeux') . jeux_javascript('layer') . _JEUX_HEAD2; 91 98 } 92 99 93 100 // pipeline affiche_gauche 94 101 function jeux_affiche_gauche($flux) { 102 // correction d'un bug d'affichage 95 103 if ($GLOBALS['spip_version_code']<1.92) $flux['data'] .="<script type=\"text/javascript\"><!-- 96 104 document.getElementById('haut-page').childNodes[2].align='center'; … … 99 107 } 100 108 109 // Le pipeline affichage_final, execute a chaque hit sur toute la page 110 function jeux_affichage_final($flux) { 111 preg_match_all(",<!-- JEUX-HEAD-#[0-9]+ '([^>]*)' -->,", $flux, $matches, PREG_SET_ORDER); 112 $liste = array(); 113 foreach ($matches as $val) $liste = array_merge($liste, explode('||', $val[1])); 114 $liste = array_unique($liste); 115 $header = html_entity_decode(join("\n",$liste)); 116 $flux = str_replace(_JEUX_HEAD2, _JEUX_HEAD2 . $header, $flux); 117 return $flux; 118 } 119 120 101 121 ?> -
_plugins_/_stable_/jeux/jeux_utils.php
r9571 r10066 80 80 function jeux_liste_mots($texte) { 81 81 $texte = filtrer_entites(trim($texte)); 82 $texte = preg_replace("/[,;\.\|\s\t\n\r]+/", " ", $texte); 83 $split = split('"', $texte); 82 $split = explode('"', $texte); 84 83 $c = count($split); 85 for($i=0; $i<$c; $i++) if ($i & 1) $split[$i] = str_replace(' ','+', $split[$i]); 86 $texte = join('', $split); 87 $texte = str_replace(" ","\t", $texte); 88 $texte = str_replace("+"," ", $texte); 89 return array_unique(split("\t", trim($texte))); 84 $split2 = array(); 85 for($i=0; $i<$c; $i++) if (($s = trim($split[$i])) != ""){ 86 if (($i & 1) && ($i != $c-1)) { 87 // on touche pas au texte entre deux "" 88 $split2[] = $s; 89 } else { 90 // on rassemble tous les separateurs : ,;.|\s\t\n 91 $temp = preg_replace("/[,;\.\|\s\t\n\r]+/", "\t", $s); 92 $temp = str_replace("+"," ", $temp); 93 $split2 = array_merge($split2, explode("\t", $temp)); 94 } 95 } 96 return array_unique($split2); 90 97 } 91 98 function jeux_liste_mots_maj($texte) { … … 114 121 115 122 // ajoute un module jeu a la bibliotheque 116 function include_jeux($jeu, &$texte, $indexJeux) {123 function jeux_include_jeu($jeu, &$texte, $indexJeux) { 117 124 $fonc = 'jeux_'.$jeu; 118 125 if (!function_exists($fonc)) include_spip('inc/'.$jeu); … … 122 129 123 130 // inclut et decode les jeux, si le module inc/lejeu.php est present 131 // retourne la liste des jeux trouves 124 132 function jeux_inclure_et_decoder(&$texte, $indexJeux) { 125 133 global $jeux_signatures; 134 $liste = array(); 126 135 foreach($jeux_signatures as $jeu=>$signatures) { 127 136 $ok = false; 128 137 foreach($signatures as $s) $ok |= (strpos($texte, "[$s]")!==false); 129 if ($ok) include_jeux($jeu, $texte, $indexJeux); 138 if ($ok) { 139 jeux_include_jeu($jeu, $texte, $indexJeux); 140 $liste[]=$jeu; 141 } 130 142 } 143 return $liste; 131 144 } 132 145 133 146 // pour placer des commentaires 134 function jeux_rem($rem, $index=false ) {135 return code_echappement("\n<!-- ".$rem.($index!==false?'-#'.$index:''). " -->\n");147 function jeux_rem($rem, $index=false, $jeu='') { 148 return code_echappement("\n<!-- ".$rem.($index!==false?'-#'.$index:'').(strlen($jeu)?" '".$jeu."'":'')." -->\n"); 136 149 } 137 150 138 // pour inserer un css en public139 function jeux_stylesheet _public($b) {151 // pour inserer un css 152 function jeux_stylesheet($b) { 140 153 $f = find_in_path("styles/$b.css"); 141 154 return $f?'<link rel="stylesheet" href="'.direction_css($f).'" type="text/css" media="projection, screen" />'."\n":''; 142 }143 144 // pour inserer un css en prive145 function jeux_stylesheet_prive($b) {146 $f = find_in_path("styles/$b.css");147 return $f?'<link rel="stylesheet" href="'.$f.'" type="text/css" media="projection, screen" />'."\n":'';148 // return '<link rel="stylesheet" href="'._DIR_PLUGIN_JEUX."styles/$b.css\" type=\"text/css\" media=\"projection, screen\" />\n";149 155 } 150 156 -
_plugins_/_stable_/jeux/lang/jeux_en.php
r8870 r10066 45 45 'erreur_taille_grille' => "Error: invalid size", 46 46 'erreur_syntaxe' => "Syntax error", 47 'erreur_spip' => "This Spip version is too old to play this game!", 48 'erreur_scripts' => "Scripts not allowed: you can not play this game here!", 49 47 50 ); 48 51 -
_plugins_/_stable_/jeux/lang/jeux_fr.php
r8870 r10066 45 45 'erreur_taille_grille' => "Erreur : taille invalide", 46 46 'erreur_syntaxe' => "Erreur de syntaxe", 47 'erreur_spip' => "Cette version de Spip ne vous permet pas de jouer à ce jeu !", 48 'erreur_scripts' => "Scripts désactivés : vous ne pouvez pas jouer à ce jeu ici !", 47 49 48 50 ); -
_plugins_/_stable_/jeux/lang/jeux_it.php
r8870 r10066 44 44 45 45 'erreur_taille_grille' => "Errore: dimensioni errate", 46 'erreur_syntaxe' => "Errore di sintassi ", 46 'erreur_syntaxe' => "Errore di sintassi", 47 'erreur_spip' => "This Spip version is too old to play this game!", 48 'erreur_scripts' => "Scripts not allowed: you can not play this game here!", 47 49 48 50 ); -
_plugins_/_stable_/jeux/plugin.xml
r9311 r10066 2 2 <nom>Des jeux dans vos articles</nom> 3 3 <etat>test</etat> 4 <version>0. 1pour Spip 1.9 minimum.</version>4 <version>0.2 pour Spip 1.9 minimum.</version> 5 5 <icon>img/jeux-48.png</icon> 6 6 <auteur> … … 31 31 Ce plugin fonctionne de façon optimale sur les squelettes disposant de la balise {{#INSERT_HEAD}} et peut également être testé dans l'espace privé. 32 32 33 _ Pour certains jeux, il nécessite l'activation du plugin {{jQuery}} pour les versions de spip {{1.9.1}} ou inférieures.33 _ Si vous avez une version de Spip inférieure ou égale à {{1.9.1}}, certains jeux nécessiteront l'activation du plugin [jQuery->http://files.spip.org/spip-zone/jqueryplugin.zip]. 34 34 _ Pour les jeux graphiques, il faut avoir les librairies {{GD}} installées sur votre server. 35 _ Ce plugin est en évolution, procédez régulièrement à vos mises à jours.35 _ Ce plugin est encore en évolution, procédez régulièrement à vos mises à jours. 36 36 37 {{ Attention}} : afin d'éviter les mauvaises surprises de présentation (sommaires, rubriques, backends, ...), pensez bien :37 {{Important}} : afin d'éviter les mauvaises surprises de présentation (sommaires, rubriques, backends, ...), pensez bien : 38 38 39 -* soit à placer une introduction dans votre article entre les balises <intro> et </intro> 40 -* soit à remplir le descriptif de l'article. 39 -* soit à placer une {{introduction}} dans votre article entre les balises <intro> et </intro> 40 -* soit à remplir le {{descriptif}} de l'article. 41 42 Aide : [->http://www.spip-contrib.net/Des-jeux-dans-vos-articles] 41 43 </description> 42 44 <lien>[->http://www.spip-contrib.net/Des-jeux-dans-vos-articles]</lien> <!-- URI de documentation --> … … 69 71 <action>affiche_gauche</action> 70 72 </pipeline> 73 <pipeline> 74 <nom>affichage_final</nom> 75 <inclure>jeux_pipelines.php</inclure> 76 <action>affichage_final</action> 77 </pipeline> 71 78 </plugin>
Note: See TracChangeset
for help on using the changeset viewer.