code = "blocs_balises('titre', array(".blocs_arguments($p).'))'; $p->interdire_scripts = false; return $p; } function blocs_arguments(&$p) { $i = 0; $args = array(); while (($a = interprete_argument_balise(++$i, $p)) != null) { $args[] = $a; } return join(',', $args); } // 3 balises obsoletes function balise_BLOC_TITRE_NUM(&$p) { return balise_BLOC_TITRE($p); } function balise_BLOC_VISIBLE_TITRE_NUM(&$p) { return balise_BLOC_VISIBLE_TITRE($p); } function balise_BLOC_VISIBLE_TITRE(&$p) { // Produire le premier argument {visible} $texte = new Texte; $texte->type='texte'; $texte->texte='visible'; array_unshift($p->param, array(0 => null, 1 => array(0 => $texte))); return balise_BLOC_TITRE($p); } function balise_BLOC_RESUME($p) { $p->code = "blocs_balises('resume')"; $p->interdire_scripts = false; return $p; } function balise_BLOC_DEBUT($p) { $p->code = "blocs_balises('debut', array(".blocs_arguments($p).'))'; $p->interdire_scripts = false; return $p; } function balise_BLOC_FIN($p) { $p->code = "blocs_balises('fin')"; $p->interdire_scripts = false; return $p; } function balise_BLOC_TITRE_DEBUT($p) { $p->code = "blocs_balises('titre_debut', array(".blocs_arguments($p).'))'; $p->interdire_scripts = false; return $p; } function balise_BLOC_TITRE_FIN($p) { $p->code = "blocs_balises('titre_fin')"; $p->interdire_scripts = false; return $p; } // Renvoie un code JQuery pour deplier un bloc au chargement de la page. // Exemple pour deplier le 5eme bloc : #BLOC_DEPLIER{4} (l'index commence a zero) function balise_BLOC_DEPLIER($p) { $eq = interprete_argument_balise(1, $p); $p->code = "bloc_deplier_script(intval($eq))"; $p->interdire_scripts = false; return $p; } // Renvoie un code JQuery pour deplier un bloc numerote au chargement de la page. // Exemple pour deplier le bloc .cs_bloc4 : #BLOC_DEPLIER_NUM{4} function balise_BLOC_DEPLIER_NUM($p) { $eq = interprete_argument_balise(1, $p); $p->code = "bloc_num_deplier_script(intval($eq))"; $p->interdire_scripts = false; return $p; } // Renvoie un code JQuery pour courcuiter la variable configurant les blocs uniques // Argument : oui/non ou 0/1 function balise_BLOC_UNIQUE($p) { $arg = interprete_argument_balise(1, $p); $p->code = "bloc_unique_script($arg)"; $p->interdire_scripts = false; return $p; } // fonction (SPIP>=2.0) pour le calcul de la balise #BLOC_DEPLIER function bloc_deplier_script($num = 0) { $h = blocdepliable_balise_titre(); return $num<0?'':http_script("jQuery(document).ready(function() { jQuery('{$h}.blocs_titre').eq($num).click(); });"); } // fonction (SPIP>=2.0) pour le calcul de la balise #BLOC_DEPLIER_NUM function bloc_num_deplier_script($num = -1) { return $num<0?'':http_script("jQuery(document).ready(function() { jQuery('div.cs_bloc$num').children('.blocs_titre').eq(0).click(); });"); } // fonction (SPIP>=2.0) pour le calcul de la balise #BLOC_UNIQUE function bloc_unique_script($num = 1) { $num = ($num==='oui' || intval($num)>0)?1:0; return http_script("var blocs_replier_tout = $num;"); } // fonction pour le calcul des balises de type #BLOC_XXX // $args ne sert que pour #BLOC_TITRE et contient les arguments de la balise sous forme de tableau function blocs_balises($type, $args = array()) { // statut binaire : bit1=ajax bit2=titre bit3=resume bit4=debut // 2 = ajax (20 si distant) ; 1 = titre pas d'ajax (10 si distant); idem negatif = bloc visible static $bloc_stade; $k = isset($bloc_stade) ? count($bloc_stade) : 0; $stade = $k ? abs($bloc_stade[--$k]) : 0; $distant = $replie = 1; $id = $numero = ''; switch ($type) { case 'titre_debut':// id pour le bloc distant $id = ' id="cs_bloc_id_' . array_shift($args) . '"'; $distant = 10; break; case 'titre': foreach ($args as $a) { if (is_numeric($a = trim($a))) { $numero = ' cs_bloc'.$a.'" id="deplier_num'.$a; } elseif ($a=='visible') { $replie = -1; } elseif ($a=='invisible') { $replie = 1; } elseif (strlen($a)) { $fragment = $a; } } if (isset($fragment)) { $ajax=' blocs_ajax '; $bloc_stade[]=2*$distant*$replie; } else { $fragment = 'javascript:;'; $ajax = ''; $bloc_stade[]=1*$distant*$replie; } $replie = $replie>0?' blocs_replie':''; $h = blocdepliable_balise_titre(); return "