Changeset 53797 in spip-zone


Ignore:
Timestamp:
Oct 28, 2011, 3:00:13 PM (10 years ago)
Author:
cedric@…
Message:

http://core.spip.org/issues/2367 Transmettre #ENV a propre(), a typo() et aux modeles
suite de http://core.spip.org/projects/spip/repository/revisions/18654

Location:
_core_/plugins/textwheel
Files:
3 edited

Legend:

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

    r50606 r53797  
    2121//
    2222
    23 function inc_lien_dist($lien, $texte='', $class='', $title='', $hlang='', $rel='', $connect='') {
     23function inc_lien_dist($lien, $texte='', $class='', $title='', $hlang='', $rel='', $connect='', $env=array()) {
    2424        static $u=null;
    2525        if (!$u) $u=url_de_base();
     
    8282        // si pas de modele dans le texte du lien, on peut juste passer typo sur le texte, c'est plus rapide
    8383        // les rares cas de lien qui encapsule un modele passe en dessous, c'est plus lent
    84         if (traiter_modeles($texte, false, '', $connect)==$texte){
    85                 $texte = typo($texte, true, $connect);
     84        if (traiter_modeles($texte, false, '', $connect, null, $env)==$texte){
     85                $texte = typo($texte, true, $connect, $env);
    8686                $lien = "<a href=\"".str_replace('"', '&quot;', $lien)."\" class='$class'$lang$title$rel$mime>$texte</a>";
    8787                return $lien;
     
    9292        # Penser au cas [<imgXX|right>->URL], qui exige typo('<a>...</a>')
    9393        $lien = "<a href=\"".str_replace('"', '&quot;', $lien)."\" class='$class'$lang$title$rel$mime>$texte</a>";
    94         return typo($lien, true, $connect);
     94        return typo($lien, true, $connect, $env);
    9595}
    9696
     
    102102
    103103// http://doc.spip.org/@expanser_liens
    104 function expanser_liens($t, $connect='')
     104function expanser_liens($t, $connect='', $env=array())
    105105{
    106106
    107107        $t = pipeline('pre_liens', $t);
    108108
    109         expanser_un_lien($connect,'init');
     109        expanser_un_lien($connect,'init', $env);
    110110
    111111        if (strpos($t, '->') !== false)
     
    114114        // on passe a traiter_modeles la liste des liens reperes pour lui permettre
    115115        // de remettre le texte d'origine dans les parametres du modele
    116         $t = traiter_modeles($t, false, false, $connect, expanser_un_lien('','sources'));
     116        $t = traiter_modeles($t, false, false, $connect, expanser_un_lien('','sources'), $env);
    117117
    118118        $t = corriger_typo($t);
     
    124124
    125125
    126 function expanser_un_lien($reg, $quoi='echappe'){
     126function expanser_un_lien($reg, $quoi='echappe', $env=null){
    127127        static $pile = array();
    128128        static $inserts;
     
    132132        static $lien;
    133133        static $connect='';
     134        static $contexte = array();
    134135
    135136        switch ($quoi){
    136137                case 'init':
    137138                        if (!$lien) $lien = charger_fonction('lien', 'inc');
     139                        if (!is_null($env))
     140                                $contexte = $env;
    138141                        array_push($pile,array($inserts,$sources,$regs,$connect,$k));
    139142                        $inserts = $sources = $regs = array();
     
    159162                                $r = $href;
    160163                        }
    161                         $regs[$k] = $lien($r, $titre, '', $bulle, $hlang, '', $connect);
     164                        $regs[$k] = $lien($r, $titre, '', $bulle, $hlang, '', $connect, $contexte);
    162165                        return $inserts[$k++];
    163166                        break;
     
    496499
    497500// http://doc.spip.org/@traiter_modeles
    498 function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens = null) {
     501function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens = null, $env = array()) {
    499502        // preserver la compatibilite : true = recherche des documents
    500503        if ($doublons===true)
     
    538541                                if (!is_null($liens))
    539542                                        $params = str_replace($liens[0], $liens[1], $params);
    540                           $modele = inclure_modele($type, $id, $params, $lien, $connect);
     543                          $modele = inclure_modele($type, $id, $params, $lien, $connect, $env);
    541544                                // en cas d'echec,
    542545                                // si l'objet demande a une url,
     
    546549                                        if (!is_null($liens))
    547550                                                $modele = str_replace($liens[0], $liens[1], $modele);
    548                                         $modele = recuperer_fond("modeles/dist", array('id'=>$id,'type'=>$type,'modele'=>$modele), $lien, $connect);
     551                                        $contexte = array_merge($env,array('id'=>$id,'type'=>$type,'modele'=>$modele));
     552                                        if ($lien) {
     553                                                # un eventuel guillemet (") sera reechappe par #ENV
     554                                                $contexte['lien'] = str_replace("&quot;",'"', $lien['href']);
     555                                                $contexte['lien_class'] = $lien['class'];
     556                                                $contexte['lien_mime'] = $lien['mime'];
     557                                        }
     558                                        $modele = recuperer_fond("modeles/dist", $contexte, array(), $connect);
    549559                                }
    550560                                // le remplacer dans le texte
  • _core_/plugins/textwheel/inc/texte.php

    r49329 r53797  
    113113
    114114// http://doc.spip.org/@typo
    115 function typo($letexte, $echapper=true, $connect=null) {
     115function typo($letexte, $echapper=true, $connect=null, $env=array()) {
    116116        // Plus vite !
    117117        if (!$letexte) return $letexte;
     
    139139        // cf. inc/lien
    140140
    141         $letexte = traiter_modeles($mem = $letexte, false, $echapper ? 'TYPO' : '', $connect);
     141        $letexte = traiter_modeles($mem = $letexte, false, $echapper ? 'TYPO' : '', $connect, null, $env);
    142142        if ($letexte != $mem) $echapper = true;
    143143        unset($mem);
     
    542542// Filtre a appliquer aux champs du type #TEXTE*
    543543// http://doc.spip.org/@propre
    544 function propre($t, $connect=null) {
     544function propre($t, $connect=null, $env=array()) {
    545545        // les appels directs a cette fonction depuis le php de l'espace
    546546        // prive etant historiquement ecrits sans argment $connect
     
    558558
    559559        $t = echappe_html($t);
    560         $t = expanser_liens($t,$connect);
     560        $t = expanser_liens($t,$connect, $env);
    561561        $t = traiter_raccourcis($t);
    562562        $t = echappe_retour_modeles($t, $interdire_script);
  • _core_/plugins/textwheel/paquet.xml

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