[SPIP Zone] r4674 - /_plugins_/_typo_/barre_typo_enrichie/inc/texte.php

Author: real3t@gmail.com
Date: Fri Aug 18 18:22:34 2006
New Revision: 4674

Log:
Suivre la SVN (là, c'est sûr, avec les modèles, ça n'est plus compatible avec la 1.9.0).

Franchement, qu'est-ce qui empêche les modifs intégrée dans ce plugin pour inc/texte.php d'être intégrées dans le core ?

Pour mémoire, ces modifs sont :
* [texte|bulle d'aide{langue}->URL]
* et [?SPIP|bulle d'aide]

Modified:
    _plugins_/_typo_/barre_typo_enrichie/inc/texte.php

Modified: _plugins_/_typo_/barre_typo_enrichie/inc/texte.php

--- _plugins_/_typo_/barre_typo_enrichie/inc/texte.php (original)
+++ _plugins_/_typo_/barre_typo_enrichie/inc/texte.php Fri Aug 18 18:22:34 2006
@@ -33,6 +33,7 @@

// on initialise la puce ici car il serait couteux de faire le find_in_path()
// a chaque hit, alors qu'on n'a besoin de cette valeur que lors du calcul
+// http://doc.spip.org/@definir_puce
function definir_puce() {
   static $les_puces = array();

@@ -75,6 +76,7 @@

// Ne pas afficher le chapo si article virtuel
+// http://doc.spip.org/@nettoyer_chapo
function nettoyer_chapo($chapo){
   if (substr($chapo,0,1) == "="){
     $chapo = "";
@@ -90,6 +92,7 @@
// Creer un bloc base64 correspondant a $rempl ; au besoin en marquant
// une $source differente ; le script detecte automagiquement si ce qu'on
// echappe est un div ou un span
+// http://doc.spip.org/@code_echappement
function code_echappement($rempl, $source='') {
   // Convertir en base64
   $base64 = base64_encode($rempl);
@@ -106,6 +109,7 @@

// - pour $source voir commentaire infra (echappe_retour)
// - pour $no_transform voir le filtre post_autobr dans inc_filtres.php3
+// http://doc.spip.org/@echappe_html
function echappe_html($letexte, $source='', $no_transform=false,
$preg=',<(html|code|cadre|frame)>(.*)</\1>,UimsS') {
   if (preg_match_all(
@@ -187,6 +191,7 @@
// Rq: $source sert a faire des echappements "a soi" qui ne sont pas nettoyes
// par propre() : exemple dans ecrire/inc_articles_ortho.php, $source='ORTHO'
// ou encore dans typo()
+// http://doc.spip.org/@echappe_retour
function echappe_retour($letexte, $source='') {
   if (strpos($letexte,"base64$source")) {
     # echo htmlspecialchars($letexte); ## pour les curieux
@@ -202,6 +207,7 @@
   return $letexte;
}

+// http://doc.spip.org/@nettoyer_raccourcis_typo
function nettoyer_raccourcis_typo($texte){
   $texte = pipeline('nettoyer_raccourcis_typo',$texte);
   // remplacer les liens
@@ -225,6 +231,7 @@
   return $texte;
}

+// http://doc.spip.org/@couper
function couper($texte, $taille=50) {
   $offset = 400 + 2*$taille;
   if ( $offset<strlen($texte)
@@ -295,6 +302,7 @@
}

// prendre <intro>...</intro> sinon couper a la longueur demandee
+// http://doc.spip.org/@couper_intro
function couper_intro($texte, $long) {
   $texte = extraire_multi(eregi_replace("(</?)intro>", "\\1intro>", $texte)); // minuscules
   $intro = '';
@@ -322,12 +330,14 @@
//

// Securite : empecher l'execution de code PHP ou javascript ou autre malice
+// http://doc.spip.org/@interdire_scripts
function interdire_scripts($source) {
   $source = preg_replace(",<(\%|\?|/?[[:space:]]*(script|base)),imsS", "&lt;\\1", $source);
   return $source;
}

// Securite : utiliser SafeHTML s'il est present dans ecrire/safehtml/
+// http://doc.spip.org/@safehtml
function safehtml($t) {
   static $process, $test;

@@ -365,6 +375,7 @@
}

// Correction typographique francaise
+// http://doc.spip.org/@typo_fr
function typo_fr($letexte) {
   static $trans;

@@ -421,6 +432,7 @@
}

// rien sauf les "~" et "-,"
+// http://doc.spip.org/@typo_en
function typo_en($letexte) {

   $cherche1 = array(
@@ -452,8 +464,12 @@
// Typographie generale
// note: $echapper = false lorsqu'on appelle depuis propre() [pour accelerer]
//
+// http://doc.spip.org/@typo
function typo($letexte, $echapper=true) {

+ // Plus vite !
+ if (!strlen($letexte)) return '';
+
   // Echapper les codes <html> etc
   if ($echapper)
     $letexte = echappe_html($letexte, 'TYPO');
@@ -485,30 +501,30 @@
   $letexte = str_replace("'", "&#8217;", $letexte);

   // typo francaise ou anglaise ?
- // $lang_typo est fixee dans l'interface privee pour editer
+ // $lang_objet est fixee dans l'interface privee pour editer
   // un texte anglais en interface francaise (ou l'inverse) ;
   // sinon determiner la typo en fonction de la langue
- if (!$lang = $GLOBALS['lang_typo']) {
- #include_spip('inc/lang');
- $lang = lang_typo($GLOBALS['spip_lang']);
- }
- if ($lang == 'fr')
+ if (!$lang = $GLOBALS['lang_objet'])
+ $lang = $GLOBALS['spip_lang'];
+ lang_select($lang);
+ switch (lang_typo($lang)) {
+ case 'fr':
     $letexte = typo_fr($letexte);
- else
+ break;
+ default:
     $letexte = typo_en($letexte);
+ break;
+ }

   // Retablir les caracteres proteges
   $letexte = strtr($letexte, $illegal, $protege);

   //
- // Installer les images et documents ;
+ // Installer les modeles, notamment images et documents ;
   //
   // NOTE : dans propre() ceci s'execute avant les tableaux a cause du "|",
   // et apres les liens a cause du traitement de [<imgXX|right>->URL]
- if (preg_match(__preg_img, $letexte)) {
- include_spip('inc/documents');
- $letexte = inserer_documents($letexte);
- }
+ $letexte = traiter_modeles($letexte);

   // Appeler les fonctions de post-traitement
   $letexte = pipeline('post_typo', $letexte);
@@ -516,6 +532,9 @@
   if (function_exists('apres_typo'))
     $letexte = apres_typo($letexte);

+ // remettre la langue precedente
+ lang_dselect();
+
   // reintegrer les echappements
   if ($echapper)
     $letexte = echappe_retour($letexte, 'TYPO');
@@ -532,6 +551,7 @@

// obsolete, utiliser calculer_url

+// http://doc.spip.org/@extraire_lien
function extraire_lien ($regs) {
   list($lien, $class, $texte) = calculer_url($regs[3], $regs[1],'tout');
   // Preparer le texte du lien ; attention s'il contient un <div>
@@ -547,6 +567,7 @@
// 'titre': seulement T ci-dessus (i.e. le TITRE ci-dessus ou dans table SQL)
// 'url': seulement L (i.e. generer_url_RACCOURCI)

+// http://doc.spip.org/@calculer_url
function calculer_url ($lien, $texte='', $pour='url') {

   // Cherche un lien du type [->raccourci 123]
@@ -613,6 +634,7 @@
   return ($pour == 'url') ? $lien : array($lien, $class, $texte);
}

+// http://doc.spip.org/@calculer_url_article
function calculer_url_article($id, $texte, $ancre, $params)
{
   $lien = generer_url_article($id);
@@ -625,6 +647,7 @@
   return array($lien, 'spip_in', $texte);
}

+// http://doc.spip.org/@calculer_url_rubrique
function calculer_url_rubrique($id, $texte, $ancre, $params)
{
   $lien = generer_url_rubrique($id);
@@ -637,6 +660,7 @@
   return array($lien, 'spip_in', $texte);
}

+// http://doc.spip.org/@calculer_url_mot
function calculer_url_mot($id, $texte, $ancre, $params)
{
   $lien = generer_url_mot($id);
@@ -649,6 +673,7 @@
   return array($lien, 'spip_in', $texte);
}

+// http://doc.spip.org/@calculer_url_breve
function calculer_url_breve($id, $texte, $ancre, $params)
{
   $lien = generer_url_breve($id);
@@ -661,6 +686,7 @@
   return array($lien, 'spip_in', $texte);
}

+// http://doc.spip.org/@calculer_url_auteur
function calculer_url_auteur($id, $texte, $ancre, $params)
{
   $lien = generer_url_auteur($id);
@@ -673,6 +699,7 @@
   return array($lien, 'spip_in', $texte);
}

+// http://doc.spip.org/@calculer_url_document
function calculer_url_document($id, $texte, $ancre, $params)
{
   $lien = generer_url_document($id);
@@ -687,6 +714,7 @@
   return array($lien, 'spip_in', $texte);
}

+// http://doc.spip.org/@calculer_url_site
function calculer_url_site($id, $texte, $ancre, $params)
{
   # attention dans le cas des sites le lien pointe non pas sur
@@ -704,6 +732,7 @@
//
// Tableaux
//
+// http://doc.spip.org/@traiter_tableau
function traiter_tableau($bloc) {

   // Decouper le tableau en lignes
@@ -817,6 +846,7 @@
//
// Traitement des listes (merci a Michael Parienti)
//
+// http://doc.spip.org/@traiter_listes
function traiter_listes ($texte) {
   $parags = preg_split(",\n[[:space:]]*\n,S", $texte);
   $texte ='';
@@ -895,24 +925,66 @@
   return substr($texte, 0, -2);
}

-// Definition de la regexp des images/documents
-define('__preg_img', ',<(img|doc|emb)([0-9]+)(\|([^>]*))?'.'>,iS');

// fonction en cas de texte extrait d'un serveur distant:
// on ne sait pas (encore) rapatrier les documents joints
-
+// TODO: gerer les modeles ?
+// http://doc.spip.org/@supprime_img
function supprime_img($letexte) {
   $message = _T('img_indisponible');
- preg_replace(__preg_img, "($message)", $letexte);
+ preg_replace(',<(img|doc|emb)([0-9]+)(\|([^>]*))?'.'>,iS',
+ "($message)", $letexte);
   return $letexte;
}

+// traite les modeles (dans la fonction typo), en remplacant
+// le raccourci <modeleN|parametres> par la page calculee a
+// partir du squelette modeles/modele.html
+// http://doc.spip.org/@traiter_modeles
+function traiter_modeles($texte) {
+ if (preg_match_all(',<([a-z_-]+)([0-9]+)([|]([^>]+))?'.'>,iS',
+ $texte, $matches, PREG_SET_ORDER)) {
+ include_spip('public/assembler');
+ foreach ($matches as $regs) {
+ $modele = inclure_modele($regs[4], $regs[1], $regs[2]);
+ if ($modele !== false) {
+ $rempl = code_echappement($modele);
+ $cherche = $regs[0];
+
+ // XHTML : remplacer par une <div onclick> le lien
+ // dans le cas [<docXX>->lien] ; sachant qu'il n'existe
+ // pas de bonne solution en XHTML pour produire un lien
+ // sur une div (!!)...
+ if (substr($rempl, 0, 5) == '<div '
+ AND preg_match(
+ ',(<a [^>]+>)\s*'.preg_quote($regs[0]).'\s*</a>,Uims',
+ $texte, $r)) {
+ $lien = extraire_attribut($r[1], 'href');
+ $cherche = $r[0];
+ $rempl = '<div style="cursor:pointer;cursor:hand;" '
+ .'onclick="document.location=\''.$lien
+ .'\'"'
+## .' href="'.$lien.'"' # href deviendra legal en XHTML2
+ .'>'
+ .$rempl
+ .'</div>';
+ }
+

[... 43 lines stripped ...]