Changeset 59769 in spip-zone


Ignore:
Timestamp:
Mar 26, 2012, 7:21:04 PM (7 years ago)
Author:
cedric@…
Message:

Ferme http://core.spip.org/issues/2479 : utiliser la wheel des listes pour la fonction traiter_listes

Location:
_core_/plugins/textwheel
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/textwheel/inc/texte.php

    r59767 r59769  
    313313                if ($l) {
    314314                        // Gerer les listes a puce dans les cellules
    315                         if (strpos($ligne,"\n-*")!==false OR strpos($ligne,"\n-#")!==false)
     315                        if (strpos($ligne,"\n-")!==false OR strpos($ligne,"\n-")!==false)
    316316                                $ligne = traiter_listes($ligne);
    317317
     
    419419
    420420/**
    421  * Traitement des listes (merci a Michael Parienti)
     421 * Traitement des listes
     422 * on utilise la wheel correspondante
    422423 *
    423424 * http://doc.spip.org/@traiter_listes
    424425 *
    425  * @param $texte
    426  * @return string
    427  */
    428 function traiter_listes ($texte) {
    429         global $class_spip, $class_spip_plus;
    430         $parags = preg_split(",\n[[:space:]]*\n,S", $texte);
    431         $texte ='';
    432 
    433         // chaque paragraphe est traite a part
    434         while (list(,$para) = each($parags)) {
    435                 $niveau = 0;
    436                 $pile_li = $pile_type = array();
    437                 $lignes = explode("\n-", "\n" . $para);
    438 
    439                 // ne pas toucher a la premiere ligne
    440                 list(,$debut) = each($lignes);
    441                 $texte .= $debut;
    442 
    443                 // chaque item a sa profondeur = nb d'etoiles
    444                 $type ='';
    445                 while (list(,$item) = each($lignes)) {
    446                         preg_match(",^([*]*|[#]*)([^*#].*)$,sS", $item, $regs);
    447                         $profond = strlen($regs[1]);
    448 
    449                         if ($profond > 0) {
    450                                 $ajout='';
    451 
    452                                 // changement de type de liste au meme niveau : il faut
    453                                 // descendre un niveau plus bas, fermer ce niveau, et
    454                                 // remonter
    455                                 $nouv_type = (substr($item,0,1) == '*') ? 'ul' : 'ol';
    456                                 $change_type = ($type AND ($type <> $nouv_type) AND ($profond == $niveau)) ? 1 : 0;
    457                                 $type = $nouv_type;
    458 
    459                                 // d'abord traiter les descentes
    460                                 while ($niveau > $profond - $change_type) {
    461                                         $ajout .= $pile_li[$niveau];
    462                                         $ajout .= $pile_type[$niveau];
    463                                         if (!$change_type)
    464                                                 unset ($pile_li[$niveau]);
    465                                         $niveau --;
    466                                 }
    467 
    468                                 // puis les identites (y compris en fin de descente)
    469                                 if ($niveau == $profond && !$change_type) {
    470                                         $ajout .= $pile_li[$niveau];
    471                                 }
    472 
    473                                 // puis les montees (y compris apres une descente un cran trop bas)
    474                                 while ($niveau < $profond) {
    475                                         if ($niveau == 0) $ajout .= "\n\n";
    476                                         elseif (!isset($pile_li[$niveau])) {
    477                                                 $ajout .= "<li$class_spip>";
    478                                                 $pile_li[$niveau] = "</li>";
    479                                         }
    480                                         $niveau ++;
    481                                         $ajout .= "<$type$class_spip_plus>";
    482                                         $pile_type[$niveau] = "</$type>";
    483                                 }
    484 
    485                                 $ajout .= "<li$class_spip>";
    486                                 $pile_li[$profond] = "</li>";
    487                         }
    488                         else {
    489                                 $ajout = "\n-"; // puce normale ou <hr>
    490                         }
    491 
    492                         $texte .= $ajout . $regs[2];
    493                 }
    494 
    495                 // retour sur terre
    496                 $ajout = '';
    497                 while ($niveau > 0) {
    498                         $ajout .= $pile_li[$niveau];
    499                         $ajout .= $pile_type[$niveau];
    500                         $niveau --;
    501                 }
    502                 $texte .= $ajout;
    503 
    504                 // paragraphe
    505                 $texte .= "\n\n";
    506         }
    507 
    508         // sucrer les deux derniers \n
    509         return substr($texte, 0, -2);
     426 * @param string $t
     427 * @return string
     428 */
     429function traiter_listes ($t) {
     430        static $wheel = null;
     431
     432        if (!isset($wheel))
     433                $wheel = new TextWheel(
     434                        SPIPTextWheelRuleset::loader($GLOBALS['spip_wheels']['listes'])
     435                );
     436
     437        return $wheel->text($t);
    510438}
    511439
  • _core_/plugins/textwheel/inc/textwheel.php

    r55024 r59769  
    4747$GLOBALS['spip_wheels']['paragrapher'] = array(
    4848        'spip/spip-paragrapher.yaml'
     49);
     50
     51$GLOBALS['spip_wheels']['listes'] = array(
     52        'spip/spip-listes.yaml'
    4953);
    5054
  • _core_/plugins/textwheel/paquet.xml

    r59552 r59769  
    22        prefix="tw"
    33        categorie="outil"
    4         version="0.8.5"
     4        version="0.8.6"
    55        etat="test"
    66        compatibilite="[3.0.0-alpha2;["
Note: See TracChangeset for help on using the changeset viewer.