Changeset 99219 in spip-zone


Ignore:
Timestamp:
Aug 19, 2016, 1:31:21 PM (3 years ago)
Author:
xdjuj@…
Message:
  • BugFix? : éviter un warning PHP 5.5+
  • Amélioration : le nom des classes ajoutées depuis le BO peut maintenant prendre plusieurs classes et des classes qui comportent un tiret dans le nom
Location:
_plugins_/ckeditor-spip-plugin/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/ckeditor-spip-plugin/trunk/inc/ckeditor_cfgtools.php

    r68251 r99219  
    1212
    1313        /*
    14          * fonction parse_spipcss 
     14         * fonction parse_spipcss
    1515         *      @$spip : le contenu d'un textarea, servant à la configuration des styles CKEditor
    1616         *
     
    1818         */
    1919        function parse_spipcss($spip) {
    20                 if (preg_match_all("#(^|\n)\s*(.*?)\s*:\s*(\w+)(?:\.(\w+))?(?:\s*{\s*(.*?)\s*})?#s", $spip, $matches, PREG_SET_ORDER)) {
     20                if (preg_match_all("#(^|\n)\s*(.*?)\s*:\s*(\w+)(?:\.([\w -]+))?(?:\s*{\s*(.*?)\s*})?#s", $spip, $matches, PREG_SET_ORDER)) {
    2121                        $js = array() ;
    2222                        foreach($matches as $match) {
     
    4040                        }
    4141                        return "CKEDITOR.addStylesSet('spip-styles',\n\t[\n".join(",\n",$js)."\n\t]\n);" ;
    42                 } else 
     42                } else
    4343                        return '' ;
    4444        }
    45        
    46 ?>
  • _plugins_/ckeditor-spip-plugin/trunk/inc/ckeditor_tools.php

    r82246 r99219  
    1414                case 'num-facultatif': $num = '\\d*' ; break ;
    1515                default: $num = '' ; break ;
    16         } 
     16        }
    1717        $protectedtags[] = $tagname.$num ;
    1818        if (isset($tagdesc['fermante']) && $tagdesc['fermante']) { $protectedtags[] = '\\/'.$tagname ; $closedtags[] = $tagname ; }
     
    2323function ckeditor_efface_repertoire($dir) {
    2424   $files = array_diff(scandir($dir), array('.','..'));
    25     foreach ($files as $file) {
    26       (is_dir("$dir/$file")) ? ckeditor_efface_repertoire("$dir/$file") : unlink("$dir/$file");
    27     }
    28     return rmdir($dir);
    29   } 
     25        foreach ($files as $file) {
     26          (is_dir("$dir/$file")) ? ckeditor_efface_repertoire("$dir/$file") : unlink("$dir/$file");
     27        }
     28        return rmdir($dir);
     29  }
    3030
    3131function ckeditor_ecrire_protectedtags($tags=null) {
     
    5858                $content = ob_get_contents() ;
    5959        ob_end_clean() ;
    60         if ($html) 
     60        if ($html)
    6161                return "<pre>".htmlentities($content)."</pre>" ;
    62         else 
     62        else
    6363                return $content ;
    6464}
    6565
    6666function ckeditor_traite_lien_html($texte, $lien, $avant, $apres) {
    67         /* 
     67        /*
    6868         * Recuperation d'un eventuel title="whatever"
    6969         */
     
    7272
    7373        if (($avant && preg_match($title_regex, stripslashes($avant), $m)) ||
    74             ($apres && preg_match($title_regex, stripslashes($apres), $m))) {
     74                ($apres && preg_match($title_regex, stripslashes($apres), $m))) {
    7575                $titre = "|".htmlspecialchars_decode(str_replace("\\'",
    7676                                                                 "'", $m[1]),
    77                                                     ENT_QUOTES);
    78                 /* 
    79                  * Et si le avant/apres ne contenait que 
     77                                                        ENT_QUOTES);
     78                /*
     79                 * Et si le avant/apres ne contenait que
    8080                 * ca, on purge pour eviter le cas 2 dans
    8181                 * le test qui suit.
     
    151151function ckeditor_traite_lien_spip($texte,$lien,$titre = '') {
    152152        if ($titre)
    153                 $titre = sprintf(" title='%s'", 
    154                                  htmlspecialchars(str_replace('\\\'', "'", 
    155                                                               $titre),
     153                $titre = sprintf(" title='%s'",
     154                                 htmlspecialchars(str_replace('\\\'', "'",
     155                                                                  $titre),
    156156                                                  ENT_QUOTES));
    157157
     
    162162                                $type = 'rubrique' ;
    163163                                break ;
    164                         case 'art':
     164                        case 'art':
    165165                                $type = 'article' ;
    166166                                break ;
     
    194194                default:
    195195                        $f = charger_fonction('vignette','inc');
    196                         $v = $f($row['extension'], true);
     196                                                $v = $f($row['extension'], true);
    197197                        if ($v[0]) {
    198198                                $row['fichier'] = url_absolue($v[0]) ;
     
    210210                        $haut = sprintf(" height=\"%.0dpx\"",$preview * $row['hauteur'] / $row['largeur']) ;
    211211                } else
    212                 if (($row['largeur'] < $row['hauteur']) && ($row['hauteur'] > $preview))        {
     212                if (($row['largeur'] < $row['hauteur']) && ($row['hauteur'] > $preview))        {
    213213                        $haut = ' height="'.$preview.'px"' ;
    214214                        $larg = sprintf(" width=\"%.0dpx\"",$preview * $row['largeur'] / $row['hauteur']) ;
     
    226226        foreach($params as $param) {
    227227                switch ($param) {
    228                         case 'center': 
     228                        case 'center':
    229229                                $align = 'middle' ;
    230230                                $center= ' style="display: block; margin-left: auto; margin-right: auto;"' ;
     
    306306
    307307        $prefix = '<p>' ; $postfix = '</p>' ;
    308                
     308
    309309        if (preg_match_all( /* on recherche les tags imbriqués */
    310310                "#&lt;((".CLOSED_PROTECTED_SPIP_TAGS.")-protected)(.*?)&gt;(.*?)&lt;/\\1&gt;#se",
     
    328328
    329329function ckeditor_html2spip($texte) {
    330         $ckeditor_html2spip_pre = charger_fonction('ckeditor_html2spip_pre','');
    331         $texte = $ckeditor_html2spip_pre($texte);
    332 
    333         $search[] = "~<br/?>(\s|\r|\n)*</li>(\s|\r|\n)*~" ; // fix: http://contrib.spip.net/CKeditor-3-0#forum468504
    334         $replace[] = "</li>" ;
    335 
    336         if (PROTECTED_SPIP_TAGS) {
    337                 $search[] = "#&lt;(".PROTECTED_SPIP_TAGS.".*?)&gt;#s" ;
    338                 $replace[] = "<$1>" ;
    339         }
    340         if (CLOSED_PROTECTED_SPIP_TAGS) {
    341                 $search[] = "#<(".CLOSED_PROTECTED_SPIP_TAGS.")([^>]*)>(.*?)</\\1>#se" ;
    342                 $replace[] = "ckeditor_tag_protect('$3','$1','$2')" ;
    343         }
    344 
    345         if (ckeditor_tweaks_actifs('decoupe')) {
    346                 $search[] = "#\s*<div\s*style=\"page-break-after:\s*always\s*;\s*\">.*?</div>\s*#si" ; // saut de page
    347                 if (ckeditor_lire_config("html2spip", _CKE_HTML2SPIP_DEF)) {
    348                         $replace[] = "\n\n<p>++++</p>\n" ;
    349                 } else {
    350                         $replace[] = "\n\n++++\n\n" ;
    351                 }
    352         }
    353 
    354         $search[] = "#<a\s+([^>]*?)\s*href=(\"|')(.*?)\\2\s*([^>]*?)\s*>(.*?)</a>#sei" ; // les liens
    355         $replace[] = "ckeditor_traite_lien_html('$5','$3','$1','$4')" ;
    356 
    357         $search[] = "#<a[^>]+name=(\"|')(.*?)\\1[^>]*></a>#si" ; // les ancres
    358         $replace[] = '[#$2<-]' ;
    359 
    360         $search[] = "#<img\s*([^>]*?)\s*src=\"([^\"]*?)\?docid=(\d+)(?:&amp;|&)doctype=(\w+)(?:(?:&amp;|&)docparam=([^\"]*))?\"\s*([^>]*?)\s*>#sei" ; // les images
    361         $replace[] = "ckeditor_traite_img_html('$3','$4','$5','$1','$6')" ;
    362 
    363         $search[] = "#<img\s*([^>]*?)\s*src=\"data:([^\"]*?)\"\s*([^>]*?)\s*>#sei" ; // les images incorporées/encodées en base64
    364         $replace[] = "ckeditor_traite_img_data('$2','$1','$3')" ;
    365 
    366         // nettoyage des attribus ajoutés par ckeditor
    367         $search[] = "#(<\w+\s*[^>]*\b)data-cke-saved-\w+=([\"']).*?\\2([^>]*>)#si" ;
    368         $replace[] = "$1$3" ;
    369        
    370         if (ckeditor_tweaks_actifs('smileys')) {
    371                 $cs_path = preg_split("~/~", _DIR_PLUGIN_COUTEAU_SUISSE) ;
    372                 $search[] = "#<img[^>]+src=\"[^\"]*".$cs_path[count($cs_path)-1]."/img/smileys/[^\"]*\"[^>]+title=\"([^\"]*)\"[^>]+/>#si" ;
    373                 $replace[] = "$1" ;
    374         }
    375 
    376         if (ckeditor_lire_config("spiplinks")) {
    377                 $search[] = "#(\[[^\]]*?-)&gt;([^\]]*?\])#s" ; // les liens spip
    378                 $replace[] = "$1>$2" ;
    379 
    380                 $search[] = "#(\[.*?)&lt;(-\])#s" ; // les ancres spip
    381                 $replace[] = "$1<$2" ;
    382         }
    383 
    384         $search[] = "#<br/?>(\r|\n|\s)*<(td|caption|tr|tbody|/td|/caption|/tr|/tbody)[^>]*>(\r|\n|\s)*#si" ;
    385         $replace[] = "<$2>" ;
    386 
    387         /* plus de nettoyage : */
    388         $search[] = "#(\s*<p>\s*</p>)*\s*$#s" ;
    389         $replace[] = '' ;
    390 
    391         $search[] = '~<br/?>$~' ;
    392         $replace[] = '' ;
    393 
    394         $texte = preg_replace($search, $replace, $texte) ;
     330  $ckeditor_html2spip_pre = charger_fonction('ckeditor_html2spip_pre','');
     331  $texte = $ckeditor_html2spip_pre($texte);
     332
     333  $search[] = "~<br/?>(\s|\r|\n)*</li>(\s|\r|\n)*~" ; // fix: http://contrib.spip.net/CKeditor-3-0#forum468504
     334  $replace[] = function($m) {return "</li>";};
     335
     336  if (PROTECTED_SPIP_TAGS) {
     337        $search[] = "#&lt;(".PROTECTED_SPIP_TAGS.".*?)&gt;#s" ;
     338        $replace[] = function($m) {return "<$m[1]>";};
     339  }
     340  if (CLOSED_PROTECTED_SPIP_TAGS) {
     341        $search[] = "#<(".CLOSED_PROTECTED_SPIP_TAGS.")([^>]*)>(.*?)</\\1>#s" ;
     342        $replace[] = function($m) {return ckeditor_tag_protect($m[3],$m[1],$m[2]);};
     343  }
     344
     345  if (ckeditor_tweaks_actifs('decoupe')) {
     346        $search[] = "#\s*<div\s*style=\"page-break-after:\s*always\s*;\s*\">.*?</div>\s*#si" ; // saut de page
     347        if (ckeditor_lire_config("html2spip", _CKE_HTML2SPIP_DEF)) {
     348          $replace[] = function($m) {return "\n\n<p>++++</p>\n";};
     349        } else {
     350          $replace[] = function($m) {return "\n\n++++\n\n";};
     351        }
     352  }
     353
     354  $search[] = "#<a\s+([^>]*?)\s*href=(\"|')(.*?)\\2\s*([^>]*?)\s*>(.*?)</a>#si" ; // les liens
     355  $replace[] = function($m) {return ckeditor_traite_lien_html($m[5],$m[3],$m[1],$m[4]);};
     356
     357  $search[] = "#<a[^>]+name=(\"|')(.*?)\\1[^>]*></a>#si" ; // les ancres
     358  $replace[] = function($m) {return "[#$m[2]<-]";};
     359
     360  $search[] = "#<img\s*([^>]*?)\s*src=\"([^\"]*?)\?docid=(\d+)(?:&amp;|&)doctype=(\w+)(?:(?:&amp;|&)docparam=([^\"]*))?\"\s*([^>]*?)\s*>#si" ; // les images
     361  $replace[] = function($m) {return ckeditor_traite_img_html($m[3],$m[4],$m[5],$m[1],$m[6]);};
     362
     363  $search[] = "#<img\s*([^>]*?)\s*src=\"data:([^\"]*?)\"\s*([^>]*?)\s*>#si" ; // les images incorporées/encodées en base64
     364  $replace[] = function($m) {return ckeditor_traite_img_data($m[2],$m[1],$m[3]);};
     365
     366  // nettoyage des attribus ajoutés par ckeditor
     367  $search[] = "#(<\w+\s*[^>]*\b)data-cke-saved-\w+=([\"']).*?\\2([^>]*>)#si" ;
     368  $replace[] = function($m) {return "$m[1]$m[3]";};
     369
     370  if (ckeditor_tweaks_actifs('smileys')) {
     371        $cs_path = preg_split("~/~", _DIR_PLUGIN_COUTEAU_SUISSE) ;
     372        $search[] = "#<img[^>]+src=\"[^\"]*".$cs_path[count($cs_path)-1]."/img/smileys/[^\"]*\"[^>]+title=\"([^\"]*)\"[^>]+/>#si" ;
     373        $replace[] = function($m) {return "$m[1]";};
     374  }
     375
     376  if (ckeditor_lire_config("spiplinks")) {
     377        $search[] = "#(\[[^\]]*?-)&gt;([^\]]*?\])#s" ; // les liens spip
     378        $replace[] = function($m) {return "$m[1]>$m[2]";};
     379
     380        $search[] = "#(\[.*?)&lt;(-\])#s" ; // les ancres spip
     381        $replace[] = function($m) {return "$m[1]<$m[2]";};
     382  }
     383
     384  $search[] = "#<br/?>(\r|\n|\s)*<(td|caption|tr|tbody|/td|/caption|/tr|/tbody)[^>]*>(\r|\n|\s)*#si" ;
     385  $replace[] = function($m) {return "<$m[2]>";};
     386
     387  /* plus de nettoyage : */
     388  $search[] = "#(\s*<p>\s*</p>)*\s*$#s" ;
     389  $replace[] = function($m) {return '';};
     390
     391  $search[] = '~<br/?>$~' ;
     392  $replace[] = function($m) {return '';};
     393
     394  foreach($search as $k => $v)
     395        $texte = preg_replace_callback($v, $replace[$k], $texte) ;
    395396
    396397        if (ckeditor_lire_config("conversion", _CKE_CONVERSION_DEF) == 'complete') {
     
    402403                $search_regex = sprintf("#<%s[^>]*>#s", PROTECTED_SPIP_TAGS);
    403404                $texte = preg_replace_callback($search_regex,
    404                                                ckeditor_wrap_callback,
    405                                                $texte);
     405                                                   ckeditor_wrap_callback,
     406                                                   $texte);
    406407
    407408                /*
     
    428429                $search_regex = '|<script type="ckeditor_wrap">([^>]*)</script>|si';
    429430                $texte = preg_replace_callback($search_regex,
    430                                                ckeditor_unwrap_callback,
    431                                                $texte);
     431                                                           ckeditor_unwrap_callback,
     432                                                   $texte);
    432433        }
    433434
     
    444445function ckeditor_spip2html_post_dist($texte) {
    445446        return $texte;
    446 }     
     447}
    447448
    448449function ckeditor_spip2html($texte) {
     
    450451        $texte = $ckeditor_spip2html_pre($texte);
    451452
    452         $search[] = "#(?:(?:&amp;|&)lt;|<)(img|doc|emb|video|audio|text)(\d+)\|(.*?)(?:(?:&amp;|&)gt;|>)#se" ;
    453         $replace[] = "ckeditor_traite_img_spip('$1','$2','$3')" ;
     453        $search[] = "#(?:(?:&amp;|&)lt;|<)(img|doc|emb|video|audio|text)(\d+)\|(.*?)(?:(?:&amp;|&)gt;|>)#s" ;
     454        $replace[] = function($m) {return ckeditor_traite_img_spip($m[1],$m[2],$m[3]);};
    454455
    455456        /* Cas de modele sans option, ex: <img1> */
    456         $search[] = "#(?:(?:&amp;|&)lt;|<)(img|doc|emb|video|audio|text)(\d+)(?:(?:&amp;|&)gt;|>)#se" ;
    457         $replace[] = "ckeditor_traite_img_spip('$1','$2','')" ;
     457        $search[] = "#(?:(?:&amp;|&)lt;|<)(img|doc|emb|video|audio|text)(\d+)(?:(?:&amp;|&)gt;|>)#s" ;
     458        $replace[] = function($m) {return ckeditor_traite_img_spip($m[1],$m[2],'');};
    458459
    459460        if (PROTECTED_SPIP_TAGS) {
    460461                $search[] = "#(?:<|&lt;)(".PROTECTED_SPIP_TAGS.")(.*?)(?:>|&gt;)#s" ;
    461                 $replace[] = "&lt;$1-protected$2&gt;" ; // les tags protégés ne doivent pas être traités par la fonction propre
     462                $replace[] = function($m) {return "&lt;$m[1]-protected$m[2]&gt;";}; // les tags protégés ne doivent pas être traités par la fonction propre
    462463        }
    463464
    464465        /* Version avec bulle: [texte|bulle->lien] */
    465         $search[] = "#\[([^|\]]+?)\|([^\]]*?)-(?:&gt;|>)([^\]]*?)\]#se" ;
    466         $replace[] = "ckeditor_traite_lien_spip('$1','$3','$2')" ;
     466        $search[] = "#\[([^|\]]+?)\|([^\]]*?)-(?:&gt;|>)([^\]]*?)\]#s" ;
     467        $replace[] = function($m) {return ckeditor_traite_lien_spip($m[1],$m[3],$m[2]);};
    467468
    468469        /* Version sans bulle: [texte->lien] */
    469         $search[] = "#\[([^\]]*?)-(?:&gt;|>)([^\]]*?)\]#se" ;
    470         $replace[] = "ckeditor_traite_lien_spip('$1','$2')" ;
     470        $search[] = "#\[([^\]]*?)-(?:&gt;|>)([^\]]*?)\]#s" ;
     471        $replace[] = function($m) {return ckeditor_traite_lien_spip($m[1],$m[2]);};
    471472
    472473        $search[] = "~\[#?([^\]]*)(?:&lt;|<)-\]~s" ;
    473         $replace[] = "<a name='$1'></a>" ;
     474        $replace[] = function($m){return "<a name='$m[1]'></a>";};
    474475
    475476        $search[] = "~\[\[~" ; // on protège les notes de bas de page : on a un moyen de les afficher dans ckeditor ...
    476         $replace[] = "[*[*" ;
     477        $replace[] = function($m) {return "[*[*";};
    477478
    478479        $search[] = "~@~" ; // protection de @ : pour que Mailcrypt ne casse pas les liens
    479         $replace[] = "&#64;" ;
     480        $replace[] = function($m) {return "&#64;";};
    480481
    481482        if (CLOSED_PROTECTED_SPIP_TAGS) {
    482                 $search[] = "#&lt;((".CLOSED_PROTECTED_SPIP_TAGS.")-protected)(.*?)&gt;(.*?)&lt;/\\1&gt;#se" ;
    483                 $replace[] = "ckeditor_tag_unprotect('$4','$2','$3')" ;
    484         }
    485 
    486         $texte = propre(preg_replace($search, $replace, $texte)) ; // utilisation du filtre 'propre' : conseil de http://www.spip-contrib.net/RealET,411
    487        
     483                $search[] = "#&lt;((".CLOSED_PROTECTED_SPIP_TAGS.")-protected)(.*?)&gt;(.*?)&lt;/\\1&gt;#s" ;
     484                $replace[] = function($m) {return ckeditor_tag_unprotect($m[4],$m[2],$m[3]);};
     485        }
     486
     487        foreach($search as $k => $v)
     488                $texte = propre(preg_replace_callback($v, $replace[$k], $texte)) ; // utilisation du filtre 'propre' : conseil de http://www.spip-contrib.net/RealET,411
     489
    488490        $texte = preg_replace("~\[\*\[\*~", "[[", $texte) ; // on déprotège ...
    489491        if (PROTECTED_SPIP_TAGS) {
     
    508510        // fix : valeur par défaut pas lisible depuis un squelette
    509511        // 1. nécessaire pour l'insertion d'image en mode spip
    510         ecrire_config("ckeditor/insertall", ckeditor_lire_config("insertall", _CKE_INSERTALL_DEF)) ; 
     512        ecrire_config("ckeditor/insertall", ckeditor_lire_config("insertall", _CKE_INSERTALL_DEF)) ;
    511513        // 2. nécessaire pour le plugin spipmodeles
    512514        ckeditor_ecrire_protectedtags() ;
    513515}
    514 ?>
  • _plugins_/ckeditor-spip-plugin/trunk/paquet.xml

    r99044 r99219  
    22        prefix="ckeditor"
    33        categorie="edition"
    4         version="0.16.22"
     4        version="0.16.23"
    55        etat="stable"
    66        compatibilite="[2.0.9;3.1.*]"
  • _plugins_/ckeditor-spip-plugin/trunk/plugin.xml

    r99044 r99219  
    22        <nom><multi>[fr]CKEditor pour SPIP[en]CKEditor for SPIP[ar]CKEDITOR &#1604; SPIP</multi></nom>
    33        <auteur>Auteurs : [Fr&#233;d&#233;ric Bonnaud->mailto:fred@lea-linux.org], [Mehdi Cherifi (Superyms)->mailto:superyms@gmail.com], [Emmanuel Dreyfus->mailto:manu@netbsd.org]</auteur>
    4         <version>0.16.22</version>
     4        <version>0.16.23</version>
    55        <etat>stable</etat>
    66        <description>
Note: See TracChangeset for help on using the changeset viewer.