Changeset 32160 in spip-zone


Ignore:
Timestamp:
Oct 16, 2009, 12:38:25 PM (11 years ago)
Author:
patfr@…
Message:

Blocs dépliables : nouvelles balises pour les squelettes

  • blocs dépliés : #BLOC_VISIBLE_TITRE, #BLOC_VISIBLE_TITRE_NUM
  • action jQuery : #BLOC_DEPLIER, #BLOC_DEPLIER_NUM
  • Court-circuit du réglage général : #BLOC_UNIQUE

cf.doc : http://www.spip-contrib.net/Des-blocs-depliables

Location:
_plugins_/couteau_suisse
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/outils/blocs.php

    r31510 r32160  
    3333        if ($matches[1]=='visible' || defined('_CS_PRINT')) {
    3434                $h = $d = '';
    35                 $r = ' blocs_invisible blocs_slide ';
     35                $r = ' blocs_invisible blocs_slide';
    3636        } else {
    3737                $h = ' blocs_replie';
  • _plugins_/couteau_suisse/outils/blocs_fonctions.php

    r31510 r32160  
    1515@define('_BLOC_TITRE_H', 'h4');
    1616
    17 // Un bloc titre numerote : #BLOC_TITRE_NUM{numero} ou #BLOC_TITRE_NUM{numero, fragment}
     17// Un bloc replie, titre numerote : #BLOC_TITRE_NUM{numero} ou #BLOC_TITRE_NUM{numero, fragment}
    1818function balise_BLOC_TITRE_NUM($p) {
    19         // statut binaire : bit1=ajax bit2=titre bit3=resume bit4=debut
    20         global  $bloc_stade; /* 2 = ajax; 1 = titre pas d'ajax */
    21         if ($fragment = interprete_argument_balise(2, $p)!==NULL){
    22                 $ajax=' blocs_ajax ';
    23                 $bloc_stade[]=2;
    24         } else {
    25                 $fragment="'javascript:;'";
    26                 $ajax="";
    27                 $bloc_stade[]=1;
    28         }
    29         $numero = interprete_argument_balise(1, $p);
    30         $numero = $numero===NULL?"''":"bloc_is_num($numero)";
    31        
    32         $p->code=" '<div class=\"cs_blocs'.$numero.'\"><"._BLOC_TITRE_H." class=\"blocs_titre blocs_replie $ajax\"><a href=\"'.".$fragment.".'\">' ";
     19        $p->code = blocs_balise_titre(interprete_argument_balise(2, $p), interprete_argument_balise(1, $p));
     20        return $p;
     21}
     22// Un bloc deplie, titre numerote : #BLOC_VISIBLE_TITRE_NUM{numero} ou #BLOC_VISIBLE_TITRE_NUM{numero, fragment}
     23function balise_BLOC_VISIBLE_TITRE_NUM($p) {
     24        $p->code = blocs_balise_titre(interprete_argument_balise(2, $p), interprete_argument_balise(1, $p), -1);
    3325        return $p;
    3426}
    3527
    36 // Un bloc titre simple : #BLOC_TITRE ou #BLOC_TITRE{fragment}
     28// Un bloc replie, titre simple : #BLOC_TITRE ou #BLOC_TITRE{fragment}
    3729function balise_BLOC_TITRE($p) {
    38         // statut binaire : bit1=ajax bit2=titre bit3=resume bit4=debut
    39         global  $bloc_stade; /* 2 = ajax; 1 = titre pas d'ajax */
    40         if (($fragment = interprete_argument_balise(1,$p))!==NULL){
    41                 $ajax=' blocs_ajax ';
    42                 $bloc_stade[]=2;
    43         } else {
    44                 $fragment="'javascript:;'";
    45                 $ajax="";
    46                 $bloc_stade[]=1;
    47         }
    48         $p->code=" '<div class=\"cs_blocs\"><"._BLOC_TITRE_H." class=\"blocs_titre blocs_replie $ajax\"><a href=\"'.".$fragment.".'\">' ";
     30        $p->code = blocs_balise_titre(interprete_argument_balise(1, $p));
     31        return $p;
     32}
     33// Un bloc deplie, titre simple : #BLOC_VISIBLE_TITRE ou #BLOC_VISIBLE_TITRE{fragment}
     34function balise_BLOC_VISIBLE_TITRE($p) {
     35        $p->code = blocs_balise_titre(interprete_argument_balise(1, $p), NULL, -1);
    4936        return $p;
    5037}
     
    5340        global $bloc_stade;
    5441        $k=count($bloc_stade)-1;
    55         $stade=$bloc_stade[$k];
     42        $stade=abs($bloc_stade[$k]);
     43        $class=$bloc_stade[$k]>0?'':' blocs_invisible blocs_slide';
    5644       
    5745        if($stade<1 || $stade>2)
    5846                die("erreur de compilation #BLOC_RESUME sans #BLOC_TITRE_($stade)");
    59         $p->code = "'</a></"._BLOC_TITRE_H."><div class=\"blocs_resume\">'";
    60         $bloc_stade[$k]=3;      /* 3 = resume */
     47        $p->code = "'</a></"._BLOC_TITRE_H."><div class=\"blocs_resume$class\">'";
     48        $bloc_stade[$k]=$bloc_stade[$k]>0?3:-3; /* 3 = resume */
    6149       
    6250        return $p;
     
    6654        global $bloc_stade;
    6755        $k=count($bloc_stade)-1;
    68         $stade=$bloc_stade[$k];
     56        $stade=abs($bloc_stade[$k]);
     57        $class=$bloc_stade[$k]<0?'':' blocs_invisible blocs_slide';
    6958
    7059        if($stade == 3) /* on arrive du resume, fermer la div resume seulement */
    71                 $p->code = "'</div><div class=\"blocs_invisible blocs_slide blocs_destination\">'";
     60                $p->code = "'</div><div class=\"blocs_destination$class\">'";
    7261        else    {
    7362                if($stade<1 || $stade>2)
    7463                                        /* on DOIT arriver de titre */
    7564                        die("erreur de compilation #BLOC_DEBUT sans #BLOC_TITRE_($stade)");
    76                 $p->code = "'</a></"._BLOC_TITRE_H."><div class=\"blocs_invisible blocs_slide blocs_destination\">'";
     65                $p->code = "'</a></"._BLOC_TITRE_H."><div class=\"blocs_destination$class\">'";
    7766                }
    78         $bloc_stade[$k]=4; /* 4=debut */
     67        $bloc_stade[$k]=$bloc_stade[$k]>0?4:-4; /* 4=debut */
    7968        return $p;
    8069}
     
    8271function balise_BLOC_FIN($p) {
    8372        global $bloc_stade;
    84         $k=array_pop($bloc_stade);
     73        $k=abs(array_pop($bloc_stade));
    8574        if($k!=4)       
    8675                die("erreur de compilation #BLOC_FIN sans #BLOC_DEBUT_($k)");
     
    9079}
    9180
     81// Renvoie un code JQuery pour deplier un bloc au chargement de la page.
     82// Exemple pour deplier le 5eme bloc : #BLOC_DEPLIER{4} (l'index commence a zero)
     83function balise_BLOC_DEPLIER($p) {
     84        $eq = interprete_argument_balise(1, $p);
     85        $p->code = "bloc_deplier_script(intval($eq))";
     86        return $p;
     87}
     88// Renvoie un code JQuery pour deplier un bloc numerote au chargement de la page.
     89// Exemple pour deplier le bloc .cs_bloc4 : #BLOC_DEPLIER_NUM{4}
     90function balise_BLOC_DEPLIER_NUM($p) {
     91        $eq = interprete_argument_balise(1, $p);
     92        $p->code = "bloc_num_deplier_script(intval($eq))";
     93        return $p;
     94}
     95
     96// Renvoie un code JQuery pour courcuiter la variable cnfigurant les blocs uniques
     97// Argument : oui/non ou 0/1
     98function balise_BLOC_UNIQUE($p) {
     99        $arg = interprete_argument_balise(1, $p);
     100        $p->code = "bloc_unique_script($arg)";
     101        return $p;
     102}
     103
     104// fonction (SPIP>=2.0) pour le calcul de la balise #BLOC_DEPLIER
     105function bloc_deplier_script($num=0) {
     106        return $num<0?'':http_script("jQuery(document).ready(function() { jQuery('"._BLOC_TITRE_H.".blocs_titre').eq($num).click(); });");
     107}
     108// fonction (SPIP>=2.0) pour le calcul de la balise #BLOC_DEPLIER_NUM
     109function bloc_num_deplier_script($num=-1) {
     110        return $num<0?'':http_script("jQuery(document).ready(function() { jQuery('div.cs_bloc$num').children('.blocs_titre').eq(0).click(); });");
     111}
     112// fonction (SPIP>=2.0) pour le calcul de la balise #BLOC_UNIQUE
     113function bloc_unique_script($num=1) {
     114        $num = ($num==='oui' || intval($num)>0)?1:0;
     115        return http_script("var blocs_replier_tout = $num;");
     116}
     117
    92118// fonction pour le calcul de la balise #BLOC_TITRE_NUM
    93119function bloc_is_num($num) {
    94120         return preg_match(',^\s*(\d+)\s*$,', $num, $regs)?" cs_bloc$regs[1]":"''";
    95121}
     122
     123// fonction pour le calcul des 4 balises de type #BLOC_TITRE
     124function blocs_balise_titre($fragment, $numero=NULL, $replie=1) {
     125        // statut binaire : bit1=ajax bit2=titre bit3=resume bit4=debut
     126        global  $bloc_stade; /* 2 = ajax; 1 = titre pas d'ajax; idem negatif = bloc visible */
     127        if ($fragment!==NULL){
     128                $ajax=' blocs_ajax ';
     129                $bloc_stade[]=2*$replie;
     130        } else {
     131                $fragment="'javascript:;'";
     132                $ajax="";
     133                $bloc_stade[]=1*$replie;
     134        }
     135        $numero = $numero===NULL?"''":"bloc_is_num($numero)";
     136        $replie = $replie>0?' blocs_replie':'';
     137        return " '<div class=\"cs_blocs'.$numero.'\"><"._BLOC_TITRE_H." class=\"blocs_titre$replie $ajax\"><a href=\"'.".$fragment.".'\">' ";
     138}
     139
    96140?>
  • _plugins_/couteau_suisse/plugin.xml

    r32128 r32160  
    22        <nom><multi>Swiss Knife[fr]Le Couteau Suisse[ca]El Ganivet Su&#237;s[ar]&#1587;&#1603;&#1610;&#1606; &#1575;&#1604;&#1580;&#1610;&#1576;[nl]Het Zwitserland Mes[gl]A navalla su&#237;za[es]La Navaja Suiza[de]Schweizer Taschenmesser[tr]&#304;svi&#231;re &#199;ak&#305;s&#305;[br]Ar Gontell Suis[pt_br]Canivete Su&#237;&#231;o[ast]La Navaya Suiza[gl]A navalla su&#237;za[ro]Cu&#355;itul Elve&#355;ian</multi></nom>
    33        <icon>img/couteau-50.gif</icon>
    4         <version>1.8.09.13</version>
     4        <version>1.8.09.14</version>
    55        <auteur>Patrice Vanneufville
    66_ &#169; 2007-2009 - Distribu&#233; sous licence GPL
Note: See TracChangeset for help on using the changeset viewer.