[spip-dev] limiter la taille des logos de rubrique/article dans l'espace ecrire (patch)

Patch pour afficher, dans l'espace /ecrire/, les logos d'article et de
rubrique avec une taille maxi de 200x200 pixels, et inscire en-dessous le
nom du fichier tel que sauvé dans /IMG/, ainsi que la taille de l'image.

Le patch affecte /ecrire/articles.php3, /ecrire/naviguer.php3 et crée un
fichier /ecrire/inc_logos.php3

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

--- articles.php3-ori Mon Apr 23 20:11:27 2001
+++ articles.php3 Thu Apr 26 22:05:08 2001
@@ -2,6 +2,7 @@

include ("inc.php3");
include ("inc_mots.php3");
+include ("inc_logos.php3");

$requete_fichier = "articles.php3?id_article=$id_article";

@@ -29,7 +30,7 @@ $flag_editable = ($connect_statut == '0m
// Affichage de la colonne de gauche
//

-debut_page();
+debut_page("SPIP $id_article");
debut_gauche();

echo "<P><TABLE CELLPADDING=1 CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR='#FFCC00' WIDTH=100%>";
@@ -47,23 +48,18 @@ echo "</TD></TR></TABLE></TD></TR></TABL
// Logos de l'article
//

-if (file_exists("../IMG/arton$id_article.gif")){
- $arton="arton$id_article.gif";
-}
-else if (file_exists("../IMG/arton$id_article.jpg")){
- $arton="arton$id_article.jpg";
-}
-else if (file_exists("../IMG/arton$id_article.png")){
- $arton="arton$id_article.png";
-}
-if (file_exists("../IMG/artoff$id_article.gif")){
- $artoff="artoff$id_article.gif";
-}
-else if (file_exists("../IMG/artoff$id_article.jpg")){
- $artoff="artoff$id_article.jpg";
-}
-else if (file_exists("../IMG/artoff$id_article.png")){
- $artoff="artoff$id_article.png";
+$logo = get_logo($id_article,"art");
+$arton = $logo[0];
+$artoff = $logo[1];
+$tailleon = $logo[2];
+if ($tailleon) {
+ $taillezon = " WIDTH=$tailleon[2] HEIGHT=$tailleon[3] ";
+ $afftailleon = " - $tailleon[0]x$tailleon[1]";
+}
+$tailleoff = $logo[3];
+if ($tailleoff) {
+ $taillezoff = " WIDTH=$tailleoff[2] HEIGHT=$tailleoff[3] ";
+ $afftailleoff= " - $tailleoff[0]x$tailleoff[1] ";
}

if ($connect_statut=="0minirezo" AND ($options == 'avancees' OR strlen($arton)>2)) {
@@ -79,7 +75,8 @@ if ($connect_statut=="0minirezo" AND ($o
     if (strlen($arton)>5){
     $hash = calculer_action_auteur("supp_image $arton");

- echo "<P><CENTER><IMG SRC='../IMG/$arton'>";
+ echo "<P><CENTER><IMG SRC='../IMG/$arton' $taillezon>";
+ echo "<BR>$arton $afftailleon\n";
     echo "<BR>[<A HREF='../spip_image.php3?id_article=$id_article&options=$options&image_supp=$arton&id_auteur=$connect_id_auteur&hash=$hash&redirect=articles.php3'>Supprimer le logo</A>]</CENTER>";
   }else{
     $hash = calculer_action_auteur("ajout_image arton$id_article");
@@ -106,7 +103,8 @@ if ($connect_statut=="0minirezo" AND ($o
     if (strlen($artoff)>5){
       $hash = calculer_action_auteur("supp_image $artoff");

- echo "<CENTER><P><IMG SRC='../IMG/$artoff'>";
+ echo "<CENTER><P><IMG SRC='../IMG/$artoff' $taillezoff>";
+ echo "<BR>$artoff $afftailleoff";
       echo "<BR>[<A HREF='../spip_image.php3?id_article=$id_article&options=$options&image_supp=$artoff&id_auteur=$connect_id_auteur&hash=$hash&redirect=articles.php3'>Supprimer le logo</A>]</CENTER>";
     }else{
       $hash = calculer_action_auteur("ajout_image artoff$id_article");
@@ -566,7 +564,7 @@ if ($options == 'avancees') {
   $plusieurs_types = (mysql_num_rows($result) > 1);

   echo "<P><TABLE CELLPADDING=10 WIDTH='100%'><TR><TD BGCOLOR='#EEEEEE'>";
- echo "<FONT SIZE=2><B>MOTS-CLÉS ASSOCIÉS À L'ARTICLE</B></FONT>";
+ echo "<FONT SIZE=2><B>MOTS-CLÉS</B></FONT>";
   echo "<UL>";

   unset($les_mots);
@@ -613,7 +611,7 @@ if ($options == 'avancees') {
       echo "<INPUT TYPE='Hidden' NAME='id_article' VALUE=\"$id_article\">";

       echo "<DIV align=left><LI><FONT FACE='Verdana,Arial,Helvetica,sans-serif' SIZE=3><B>Ajouter un mot-clé :</B></FONT><BR>\n";
- echo "<SELECT NAME='nouv_mot' SIZE='1'>";
+ echo "<SELECT NAME='nouv_mot' SIZE='1'><OPTION value='x'>";

       $ancien_type = '';
       while($row = mysql_fetch_array($result)) {
@@ -623,14 +621,20 @@ if ($options == 'avancees') {
         $descriptif_mot = stripslashes($row['descriptif']);

         if ($type_mot != $ancien_type) {
- echo "\n<OPTION VALUE='0'>[ ------ ".strtoupper($type_mot)." ------ ]";
+ $label = htmlspecialchars(strtoupper($type_mot));
+ if ($ancien_type) echo "</OPTGROUP>\n";
+ echo "<OPTION VALUE='x'><OPTGROUP LABEL=\"$label\">";
+ echo "\n<OPTION VALUE='x'>$label";
+ echo "\n<OPTION VALUE='x'>";
           $ancien_type = $type_mot;
         }
- $texte_option = "$titre_mot";
- $texte_option = couper($texte_option, 50);
- echo "\n<OPTION VALUE=\"$id_mot\">$texte_option";
+ $texte_option = htmlspecialchars(couper($titre_mot, 50));
+ echo "\n<OPTION VALUE=\"$id_mot\">";
+ if ($type_mot) echo "&nbsp;&nbsp;&nbsp;";
+ echo $texte_option;
       }

+ if ($ancien_type) echo "</OPTGROUP>\n";
       echo "</SELECT>";
       echo "<INPUT TYPE='submit' NAME='Choisir' VALUE='Choisir'>";
       echo "</FORM>";

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

--- naviguer.php3-ori Thu Apr 26 21:53:28 2001
+++ naviguer.php3 Thu Apr 26 22:06:08 2001
@@ -1,6 +1,7 @@
<?

include ("inc.php3");
+include ("inc_logos.php3");

debut_page();
@@ -33,23 +34,18 @@ echo "</CENTER>";
echo "</TD></TR></TABLE></TD></TR></TABLE>";

-if (file_exists("../IMG/rubon$coll.gif")){
- $rubon="rubon$coll.gif";
-}
-else if (file_exists("../IMG/rubon$coll.jpg")){
- $rubon="rubon$coll.jpg";
-}
-else if (file_exists("../IMG/rubon$coll.png")){
- $rubon="rubon$coll.png";
-}
-if (file_exists("../IMG/ruboff$coll.gif")){
- $ruboff="ruboff$coll.gif";
-}
-else if (file_exists("../IMG/ruboff$coll.jpg")){
- $rubon="ruboff$coll.jpg";
-}
-else if (file_exists("../IMG/ruboff$coll.png")){
- $rubon="ruboff$coll.png";
+$logo = get_logo($coll,"rub");
+$rubon = $logo[0];
+$ruboff = $logo[1];
+$tailleon = $logo[2];
+if ($tailleon) {
+ $taillezon = " WIDTH=$tailleon[2] HEIGHT=$tailleon[3] ";
+ $afftailleon = " - $tailleon[0]x$tailleon[1]";
+}
+$tailleoff = $logo[3];
+if ($tailleoff) {
+ $taillezoff = " WIDTH=$tailleoff[2] HEIGHT=$tailleoff[3] ";
+ $afftailleoff= " - $tailleoff[0]x$tailleoff[1] ";
}

if ($connect_statut=="0minirezo" AND ($options == 'avancees' OR strlen($rubon) > 2)) {
@@ -64,7 +60,8 @@ if ($connect_statut=="0minirezo" AND ($o
   if (strlen($rubon)>5){
     $hash = calculer_action_auteur("supp_image $rubon");

- echo "<P><CENTER><IMG SRC='../IMG/$rubon'>";
+ echo "<P><CENTER><IMG SRC='../IMG/$rubon' $taillezon>";
+ echo "<BR>$rubon $afftailleon\n";
     echo "<BR>[<A HREF='../spip_image.php3?coll=$coll&image_supp=$rubon&id_auteur=$connect_id_auteur&hash=$hash&redirect=naviguer.php3'>Supprimer le logo</A>]</CENTER>";
   }else{
     $hash = calculer_action_auteur("ajout_image rubon$coll");
@@ -90,7 +87,8 @@ if ($connect_statut=="0minirezo" AND ($o
     if (strlen($ruboff)>5){
       $hash = calculer_action_auteur("supp_image $ruboff");

- echo "<P><CENTER><IMG SRC='../IMG/$ruboff'>";
+ echo "<P><CENTER><IMG SRC='../IMG/$ruboff' $taillezoff>";
+ echo "$ruboff $afftailleoff\n";
       echo "<BR>[<A HREF='../spip_image.php3?coll=$coll&image_supp=$ruboff&id_auteur=$connect_id_auteur&hash=$hash&redirect=naviguer.php3'>Supprimer le logo</A>]</CENTER>";
     }else{
       $hash = calculer_action_auteur("ajout_image ruboff$coll");

%%%%%%% /ecrire/inc_logos.php3 %%%%%%%%%%%

<?

/* fonctions pour gérer les logos d'articles/de rubrique, leur taille, etc. */

function get_logo($id,$type) {
  if (file_exists("../IMG/$type"."on$id.gif")){
    $arton=$type."on$id_article.gif";
  }
  else if (file_exists("../IMG/$type"."on$id.jpg")){
    $arton=$type."on$id.jpg";
  }
  else if (file_exists("../IMG/$type"."on$id.png")){
    $arton=$type."on$id.png";
  }
  if (file_exists("../IMG/$type"."off$id.gif")){
    $artoff=$type."off$id_article.gif";
  }
  else if (file_exists("../IMG/$type"."off$id.jpg")){
    $artoff=$type."off$id.jpg";
  }
  else if (file_exists("../IMG/$type"."off$id.png")){
    $artoff=$type."off$id.png";
  }

  if ($arton) $tailleon= resize_logo($arton);
  if ($artoff) $tailleoff= resize_logo($artoff);

  return (array($arton,$artoff,$tailleon,$tailleoff));
}

function resize_logo($image) {
  $limage = getimagesize("../IMG/$image");
  $limagelarge = $limage[0];
  $limagehaut = $limage[1];

  if ($limagelarge > 200){
    $limagehaut = $limagehaut * 200 / $limagelarge;
    $limagelarge = 200;
  }

  if ($limagehaut > 200){
    $limagelarge = $limagelarge * 200 / $limagehaut;
    $limagehaut = 200;
  }

    // arrondir a l'entier superieur
    $limagehaut = ceil($limagehaut);
    $limagelarge = ceil($limagelarge);

  return (array($limage[0],$limage[1],$limagelarge,$limagehaut));
}

?>

%%%%%%%%%%%%%%%%%%%%%%%%%%%

@ Fil (fil@rezo.net) :

Patch pour afficher, dans l'espace /ecrire/, les logos d'article et de
rubrique avec une taille maxi de 200x200 pixels, et inscire en-dessous le
nom du fichier tel que sauvé dans /IMG/, ainsi que la taille de l'image.

Evidemment j'avais laissé une bogue : voici le bon inc_logos.php3

inc_logos.php3 (1.24 KB)