From e7e19c496607b69ee6840acd5a0defb39c9a3496 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Mon, 16 May 2005 06:49:06 +0000 Subject: [PATCH] =?UTF-8?q?Reprise=20de=20#LOGO=5FDOCUMENT,=20qui=20avait?= =?UTF-8?q?=20tendance=20=C3=A0=20flancher=20dans=20des=20=C3=A9critures?= =?UTF-8?q?=20compliqu=C3=A9es=20[(#LOGO=5FDOCUMENT{30}|#URL=5FDOCUMENT)]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc_filtres.php3 | 24 +++++++++++++-- inc-balises.php3 | 48 +++++++++++++++++------------- inc-calcul-outils.php3 | 65 +++++++++++++++++++++++++++++------------ 3 files changed, 95 insertions(+), 42 deletions(-) diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index 685655aa1c..4d6f82467c 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -762,8 +762,18 @@ function copie_locale($source, $mode='auto') { OR $mode=='force') { include_ecrire('inc_sites.php3'); $contenu = recuperer_page($source); - if ($contenu) + if ($contenu) { ecrire_fichier($local, $contenu); + + // signaler au moteur de recherche qu'il peut reindexer ce doc + $a = spip_query("SELECT id_document FROM spip_documents + WHERE fichier='".addslashes($source)."'"); + list($id_document) = spip_fetch_array($a); + if ($id_document) { + include_ecrire('inc_index.php3'); + marquer_indexer('document', $id_document); + } + } else return false; } @@ -931,11 +941,19 @@ function inserer_attribut($balise, $attribut, $val, $texte_backend=true) { $insert = " $attribut=\"".entites_html(texte_backend($val))."\" "; list($old,$r) = extraire_attribut($balise, $attribut, true); + if ($old !== NULL) { + // Remplacer l'ancien attribut du meme nom $balise = $r[1].$insert.$r[5]; } - else - $balise = preg_replace(",([[:space:]]/)?".">,", $insert."/>", $balise); + else { + // preferer une balise " />" (comme <img />) + if (preg_match(',[[:space:]]/>,', $balise)) + $balise = preg_replace(",[[:space:]]/>,", $insert."/>", $balise, 1); + // sinon une balise <a ...> ... </a> + else + $balise = preg_replace(",>,", $insert.">", $balise, 1); + } return $balise; } diff --git a/inc-balises.php3 b/inc-balises.php3 index 3af65dabd0..08f21e2254 100644 --- a/inc-balises.php3 +++ b/inc-balises.php3 @@ -542,25 +542,31 @@ function calculer_balise_logo ($p) { $filtres = ''; if (is_array($p->fonctions)) { foreach($p->fonctions as $couple) { - // eliminer les faux filtres - if (!$flag_stop) array_shift($p->filtres); - $nom = $couple[0]; - if (ereg('^(left|right|center|top|bottom)$', $nom)) - $align = $nom; - else if ($nom == 'lien') { - $flag_lien_auto = 'oui'; - $flag_stop = true; - } - else if ($nom == 'fichier') { - $flag_fichier = 1; - $flag_stop = true; - } - // double || signifie "on passe aux filtres" - else if ($nom == '') - $flag_stop = true; - else if (!$flag_stop) { - $lien = $nom; - $flag_stop = true; + // eliminer les faux filtres + if (!$flag_stop) { + array_shift($p->filtres); + $nom = $couple[0]; + if (ereg('^(left|right|center|top|bottom)$', $nom)) + $align = $nom; + else if ($nom == 'lien') { + $flag_lien_auto = 'oui'; + $flag_stop = true; + } + else if ($nom == 'fichier') { + $flag_fichier = 1; + $flag_stop = true; + } + // double || signifie "on passe aux filtres" + else if ($nom == '') { + if (!$params = $couple[1]) + $flag_stop = true; + } + else if ($nom) { + $lien = $nom; + $flag_stop = true; + } else { + + } } // apres un URL ou || ou |fichier ce sont // des filtres (sauf left...lien...fichier) @@ -590,7 +596,7 @@ function calculer_balise_logo ($p) { } if ($flag_fichier) - $code_lien = "'',''" ; + $code_lien = "'',''" ; else { if (!$code_lien) $code_lien = "''"; @@ -603,7 +609,7 @@ function calculer_balise_logo ($p) { $p->descr['documents'] . '\', $doublons, '. intval($flag_fichier).", $code_lien, '". // #LOGO_DOCUMENT{x,y} donne la taille maxi - texte_script(param_balise($p)) + texte_script($params) ."')"; } else { diff --git a/inc-calcul-outils.php3 b/inc-calcul-outils.php3 index 55360ce3db..81967c46e2 100644 --- a/inc-calcul-outils.php3 +++ b/inc-calcul-outils.php3 @@ -252,7 +252,7 @@ function calcul_branche ($generation) { } // fonction appelee par la balise #LOGO_DOCUMENT -function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier, $params, $lien, $align) { +function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier, $lien, $align, $params) { if (!$id_document) return ''; if ($doubdoc) $doublons["documents"] .= ','.$id_document; @@ -276,9 +276,23 @@ function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier } } else if ($mode == 'vignette') { $logo = generer_url_document($id_document); + if (!@file_exists($logo)) + $logo = ''; } - if (!$logo) { + // taille maximum [(#LOGO_DOCUMENT{300,52})] + list($x,$y) = split(',', ereg_replace("[\{\}]", "", $params)); + + + if ($logo AND @file_exists($logo)) { + if ($x OR $y) + $logo = reduire_image($logo, $x, $y); + else { + $size = @getimagesize($logo); + $logo = "<img src='$logo' ".$size[3]." />"; + } + } + else { // Retrouver l'extension list($extension) = spip_abstract_fetch(spip_abstract_select(array('extension'), @@ -287,32 +301,47 @@ function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier if (!$extension) $extension = 'txt'; // Pas de vignette, mais un fichier image -- creer la vignette - if (strstr(lire_meta('formats_graphiques'), $extension) - AND lire_meta('creer_preview') == 'oui') { - if ($img = copie_locale($fichier)) { - // taille maximum [(#LOGO_DOCUMENT{300,52})] - list($x,$y) = split(',', ereg_replace("[\{\}]", "", $params)); - $lien_logo = reduire_image($img, $x, $y); - $logo = extraire_attribut($lien_logo, 'src'); - if ($lien) - $lien_logo = "<a href=\"$lien\">$lien_logo</a>"; + if (strstr(lire_meta('formats_graphiques'), $extension)) { + if ($img = copie_locale($fichier) + AND @file_exists($img)) { + if (!$x AND !$y) { + $logo = reduire_image($img); + } else { + # eviter une double reduction + $size = @getimagesize($img); + $logo = "<img src='$img' ".$size[3]." />"; + } } } // Document sans vignette ni image : vignette par defaut - if (!$logo) - $logo = vignette_par_defaut($extension, false); + if (!$logo) { + $img = vignette_par_defaut($extension, false); + $size = @getimagesize($img); + $logo = "<img src='$img' ".$size[3]." />"; + } } + // Reduire si une taille precise est demandee + if ($x OR $y) + $logo = reduire_image($logo, $x, $y); + // flag_fichier : seul le fichier est demande if ($flag_fichier) - return calcule_fichier_logo($logo); # supprimer le IMG/ + # supprimer le IMG/ + return calcule_fichier_logo(extraire_attribut($lien_logo, 'src')); + + // Calculer le code html complet (cf. calcule_logo) + $logo = inserer_attribut($logo, 'alt', ''); + $logo = inserer_attribut($logo, 'style', 'border-width: 0px;'); + $logo = inserer_attribut($logo, 'class', 'spip_logos'); + if ($align) + $logo = inserer_attribut($logo, 'align', $align); - // sinon calculer le code html de l'image, sauf si reduire_image le donne - if (!$lien_logo) - $lien_logo = affiche_logos(array($logo), $lien, $align); + if ($lien) + $logo = "<a href='$lien'>$logo</a>"; - return $lien_logo; + return $logo; } -- GitLab