Browse Source

Jeux à relier : un élément peut désormais être une balise sur plusieurs lignes : html|div|p|span

+Code mort
+Compat 4.0 (test en cours)
master
patrice4 1 year ago
parent
commit
4997bd66cf
  1. 14
      jeux/relier.php
  2. 2
      jeux_pipelines.php
  3. 3
      paquet.xml

14
jeux/relier.php

@ -86,13 +86,19 @@ function jeux_relier_init() {
";
}
define('_RELIER_PROTEGE_BLOCS', ',<(html|div|p|span)(\s[^>]*)?>(.*)</\1>,UimsS');
define('_relier_balise', '@@RELIER@@');
// liste des libelles (textes, images ou autres) à relier
function relier_liste_mots($texte) {
$balises = strpos($texte, '<') !== false;
// proteger les balises les plus courantes, surtout si elles contiennent des retours a la ligne
if($balises) $texte = echappe_html($texte, 'RELIER', true, _RELIER_PROTEGE_BLOCS);
// tenir compte des retours à la ligne manuels
$texte = preg_replace(",[\n\r]+_ +,s", "<br class='manualbr' />", $texte);
return array_filter(preg_split('/[\r\n]+/', trim($texte)));
$array = array_filter(preg_split('/[\r\n]+/', trim($texte)));
if($balises) $array = array_map(function($texte){ return echappe_retour($texte, 'RELIER'); }, $array);
return $array;
}
// le jeux est inséré à la place de la première balise
@ -170,13 +176,13 @@ function jeux_relier($texte, $indexJeux, $form = true) {
foreach($gauche as $i => &$val) {
$val = array(
'index' => $i + 1,
'data' => "<div>" . relier_safe($val) . "</div>",
'data' => "<div data-nbL=\"$i\">" . relier_safe($val) . "</div>",
);
}
foreach($droite as $i => &$val) {
$val = array(
'index' => $i + 1,
'data' => "<div>" . relier_safe($val) . "</div>",
'data' => "<div data-nbR=\"$i\">" . relier_safe($val) . "</div>",
);
}
@ -246,7 +252,7 @@ function jeux_relier($texte, $indexJeux, $form = true) {
$solution[0] = str_replace(array('@@GAUCHE@@', '@@DROITE@@'), array($gauche, $droite), $solution[0]);
// nouvel echappement
$html = relier_placer_jeu($html, code_echappement($solution[0])) . $solution[1];
$html = relier_placer_jeu($html, code_echappement($solution[0]), '', true) . $solution[1];
return $tete . $html . '</div>';
} // function jeux_relier()

2
jeux_pipelines.php

@ -91,12 +91,14 @@ function jeux_post_propre($texte) {
return $texteAvant.$texte.jeux_post_propre($texteApres);
}
/*
// pipeline ramasse-miettes permet de recuperer le HTML propre *après* la reinsertion des modeles
// les scripts de jeux (base ou inline) sont empeches en partie privee, il a fallu les echapper.
// textwheel >= 1.3.5
function jeux_post_echappe_html_propre($texte) {
return echappe_retour($texte, 'JEUX_SCRIPTS');
}
*/
// pipeline header_prive
function jeux_header_prive($flux){

3
paquet.xml

@ -3,7 +3,7 @@
categorie="divers"
version="3.5.5"
etat="stable"
compatibilite="[3.0.0;3.2.*]"
compatibilite="[3.0.0;4.0.*]"
logo="prive/themes/spip/images/jeux-48.png"
schema="0.20"
documentation="https://contrib.spip.net/Des-jeux-dans-vos-articles"
@ -20,7 +20,6 @@
<traduire module="pendu" reference="fr"/>
<traduire module="qcm" reference="fr"/>
<traduire module="sudoku" reference="fr"/>
<!-- TODO : module "relier" -->
<pipeline nom="autoriser" inclure="jeux_autorisations.php" />
<pipeline nom="declarer_tables_objets_sql" inclure="base/jeux_tables.php" />

Loading…
Cancel
Save