From 33cabc41c601544f7a50574feca3c53b73779cad Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sun, 2 Jul 2006 21:32:43 +0000 Subject: [PATCH] =?UTF-8?q?meilleure=20gestion=20des=20images=20=C3=A9nooo?= =?UTF-8?q?rmes=20qui=20passeraient=20dans=20les=20backend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/site.html | 3 ++- ecrire/inc/distant.php | 6 +++++- ecrire/inc/filtres.php | 2 +- ecrire/inc/logos.php | 18 ++++++++++++++++-- ecrire/inc/sites_voir.php | 13 +++++++++++-- 5 files changed, 35 insertions(+), 7 deletions(-) diff --git a/dist/site.html b/dist/site.html index e0afbc564b..df8c7d6bf0 100644 --- a/dist/site.html +++ b/dist/site.html @@ -56,7 +56,8 @@ <:par_auteur:> (#LESAUTEURS)] [— <em>(#TAGS|afficher_tags)</em>] </small> - [<div class="texte">(#DESCRIPTIF)</div>] + [<div class="texte">(#DESCRIPTIF|image_reduire{300}) + <br class="nettoyeur" /></div>] </li> </BOUCLE_articles> </ul> diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php index 76ceb7f7a6..d0e2b5f887 100644 --- a/ecrire/inc/distant.php +++ b/ecrire/inc/distant.php @@ -19,7 +19,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // mode = 'force' - charger toujours (mettre a jour) // function copie_locale($source, $mode='auto') { - // Si copie_locale() est appele depuis l'espace prive if (!_DIR_RESTREINT AND strpos(_DIR_RACINE . $source, _DIR_IMG) === 0) @@ -31,6 +30,11 @@ function copie_locale($source, $mode='auto') { if ($mode == 'test') return @file_exists(_DIR_RACINE.$local) ? $local : ''; + // si $local = '' c'est un fichier refuse par fichier_copie_locale(), + // par exemple un fichier qui ne figure pas dans nos documents ; + // dans ce cas on n'essaie pas de le telecharger pour ensuite echouer + if (!$local) return false; + // sinon voir si on doit le telecharger if (($source != $local) AND (preg_match(',^\w+://,', $source))) { if (($mode=='auto' AND !@file_exists($local)) diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index f9df569030..38b8e5bc94 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -830,7 +830,7 @@ function reduire_image($texte, $taille = -1, $taille_y = -1) { } } } - + return $texte; } // Renommer en "image_reduire", pour que toutes fonctions graphiques diff --git a/ecrire/inc/logos.php b/ecrire/inc/logos.php index 3188188306..6dd3d0ce74 100644 --- a/ecrire/inc/logos.php +++ b/ecrire/inc/logos.php @@ -502,11 +502,25 @@ function reduire_image_logo($img, $taille = -1, $taille_y = -1) { $logo = $img; if (!$logo) return ''; - // Si c'est une image distante, la recuperer (si possible) + // Si c'est une image distante, la recuperer include_spip('inc/distant'); + if (!$local = copie_locale($logo)) { spip_log("pas de version locale de $logo"); - return $img; + // on peut resizer en mode html si on dispose des elements + if ($srcw = extraire_attribut($img, 'width') + AND $srch = extraire_attribut($img, 'height')) { + list($w,$h) = image_ratio($srcw, $srch, $taille, $taille_y); + $img = inserer_attribut( + inserer_attribut($img, 'width', $w), + 'height', $h); + return $img; + } + + // la on n'a pas d'infos sur l'image source... on refile le truc a css + // sous la forme style='max-width: NNpx;' + return inserer_attribut($img, 'style', + "max-width: ${taille}px; max-height: ${taille_y}px"); } $logo = $local; diff --git a/ecrire/inc/sites_voir.php b/ecrire/inc/sites_voir.php index 347c292490..bf0f441647 100644 --- a/ecrire/inc/sites_voir.php +++ b/ecrire/inc/sites_voir.php @@ -171,8 +171,17 @@ function afficher_syndic_articles_boucle($row, &$my_sites, $bof, $redirect) $s .= ' '.$e; // descriptif - if (strlen($descriptif) > 0) - $s .= "<div class='arial1'>".safehtml($descriptif)."</div>"; + if (strlen($descriptif) > 0) { + // couper un texte vraiment tres long + if (strlen($descriptif) > 10000) + $descriptif = safehtml(spip_substr($descriptif, 0, 6000)).' (...)'; + else + $descriptif = safehtml($descriptif); + $s .= '<div class="arial1">' + # 385px = largeur de la colonne ou s'affiche le texte + . image_reduire($descriptif, 385, 550) + . '</div>'; + } // tags if ($tags = afficher_tags($row['tags'])) -- GitLab