Changeset 5881 in spip-zone


Ignore:
Timestamp:
Oct 4, 2006, 4:20:53 PM (15 years ago)
Author:
bertrand@…
Message:

On surrimprime maintenant traiter_echap_code() ou traiter_echap_cadre()
"voir le code de l'article" ne marche plus conséquamment ... faut voir

Location:
_plugins_/_stable_/coloration_code
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/coloration_code/coloration_code.php

    r3868 r5881  
    2222define('_DIR_PLUGIN_COLORATION_CODE',(_DIR_PLUGINS.end($p)));
    2323
    24 function coloration_code_color($code, $language='php', $cadre="cadre") {
     24function coloration_code_color($language, $code, $cadre='cadre') {
    2525 
    26   include_once(_DIR_PLUGIN_COLORATION_CODE.'/geshi/geshi.php');
    27   //
    28   // Create a GeSHi object
    29   //
    30   $geshi =& new GeSHi($code, $language);
     26        include_once _DIR_PLUGIN_COLORATION_CODE . '/geshi/geshi.php';
     27        //
     28        // Create a GeSHi object
     29        //
     30        $geshi = & new GeSHi($code, $language);
     31        if ($geshi->error()) {
     32                return false;
     33        }
     34        global $spip_lang_right;
    3135
    32   if($cadre=="cadre") {
    33           $geshi->set_header_type(GESHI_HEADER_DIV);
    34           $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
    35   } else {
    36           $geshi->set_header_type(GESHI_HEADER_NONE);
    37           $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
    38   }
     36        $code = echappe_retour($code);
    3937
    40   //
    41   // And echo the result!
    42   //
    43   return $geshi->parse_code();
    44 
    45 }
    46 
    47 function coloration_code_echappe($texte) {
    48         global $spip_lang_right;
    49   $rempl ='';
    50 
    51   if (preg_match_all(
    52                  ',<(cadre|code)[[:space:]]+class=("|\')(.*)\2([^>]*)>(.*)</\1>,Uims',
    53                  $texte, $matches, PREG_SET_ORDER))
    54         foreach ($matches as $regs) {
    55           $code = echappe_retour($regs[5]);
    56          
    57           if(strpos($code, "\n")!==false) {
    58           // Gerer le fichier contenant le code au format texte
     38        if (strpos($code, "\n") !== false) {
     39                // Gerer le fichier contenant le code au format texte
    5940                $nom_fichier = md5($code);
    6041                $dossier = sous_repertoire(_DIR_IMG, 'cache-code');
     
    6647                        fclose($handle);
    6748                }
    68           }
    69          
    70           $rempl = coloration_code_color(trim($code),$regs[3], $regs[1]);
    71          if(strpos($code, "\n")!==false) {
    72                 $rempl .= "<div class='".$regs[1]."_download' style='text-align: $spip_lang_right;'><a href='$fichier' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>".
    73                         propre("<multi>Download[fr]T&eacute;l&eacute;charger</multi>").
    74                         "</a></div>";
    75           }
    76           $texte = str_replace($regs[0],echappe_html("<html>$rempl</html>"),$texte);
    7749        }
    78   return $texte;
     50
     51        if ($cadre == 'cadre') {
     52          $geshi->set_header_type(GESHI_HEADER_DIV);
     53          $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
     54        } else {
     55          $geshi->set_header_type(GESHI_HEADER_NONE);
     56          $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
     57        }
     58
     59        //
     60        // And echo the result!
     61        //
     62        $rempl = $geshi->parse_code();
     63
     64        if (strpos($code, "\n") !== false) {
     65                $rempl .= "<div class='" . $cadre . "_download'
     66                style='text-align: $spip_lang_right;'>
     67                <a href='$fichier'
     68                style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>" .
     69                        propre("<multi>Download[fr]T&eacute;l&eacute;charger</multi>") .
     70                                "</a></div>";
     71        }
     72        return $rempl;
    7973}
    8074
    81 ?>
     75function cadre_ou_code($regs) {
     76        $ret = false;
     77// pour l'instant, on oublie $matches[1] et $matches[4] les attributs autour de class="machin"
     78        if (!preg_match(',^(.*)class=("|\')(.*)\2(.*)$,Uims',$regs[2], $matches)
     79        || !($ret = coloration_code_color($matches[3], $regs[3], $regs[1]))) {
     80                $ret = traiter_echap_code_dist($regs);
     81        }
     82        return $ret;
     83}
     84
     85function traiter_echap_code($regs) {
     86        return cadre_ou_code($regs);
     87}
     88
     89function traiter_echap_cadre($regs) {
     90        return cadre_ou_code($regs);
     91}
  • _plugins_/_stable_/coloration_code/plugin.xml

    r5053 r5881  
    6262          </multi>
    6363        </description>
    64     <fonctions> <!-- charge a chaque recalul de page , donc filtre -->
     64    <fonctions> <!-- charge a chaque recalul de page , donc filtre et surrimpression de traiter_echap_code_dist-->
    6565        coloration_code.php
    6666    </fonctions>
     
    6868          coloration_code
    6969        </prefix>
    70         <!--
    71 Lors de pre typo , on va passer le texte a travers de coloration_code_echappe() (prefix+action)
    72         -->
    73         <pipeline>
    74                 <nom>pre_typo</nom>
    75                 <action>echappe</action>
    76                 <inclure>coloration_code.php</inclure>
    77         </pipeline>
    7870</plugin>
Note: See TracChangeset for help on using the changeset viewer.