diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index 685655aa1ce495255ceca17843704b0ef70281f9..4d6f82467cf44740559e957705e41c38eee26324 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 3af65dabd0c701545b900214acf8966fff3fe6fd..08f21e22549872af66885a848b9c97af1d305b73 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 55360ce3dba23a75ebaa3aa18f718d64dba2480c..81967c46e280c579fcc6a884abb76d205f633fe6 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; }