diff --git a/.gitattributes b/.gitattributes index bd2d3b2964c8ba44cfb06ba14fdfc38aec0763bd..83a24279f5b3675f4ad476aefb899b05f6339d36 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,6 +2,7 @@ IMG/icones/aiff-dist.png -text IMG/icones/asf-dist.png -text IMG/icones/avi-dist.png -text +IMG/icones/bmp.png -text IMG/icones/bz2-dist.png -text IMG/icones/css-dist.png -text IMG/icones/defaut-dist.png -text diff --git a/IMG/icones/bmp.png b/IMG/icones/bmp.png new file mode 100644 index 0000000000000000000000000000000000000000..a409064f1cc531009e348db7ea103702ddd261af Binary files /dev/null and b/IMG/icones/bmp.png differ diff --git a/ecrire/article_documents.php3 b/ecrire/article_documents.php3 index c8aaa0d3a25081ffb3ff3feab6972a0772b40019..e93608c512d95e8ed575e78025da94756f87e074 100644 --- a/ecrire/article_documents.php3 +++ b/ecrire/article_documents.php3 @@ -3,6 +3,17 @@ include ("inc.php3"); include_local ("inc_documents.php3"); +$redirect_url = new Link('article_documents.php3'); +if ($id_document) $redirect_url->addVar('id_document', $id_document); +if ($id_article) $redirect_url->addVar('id_article', $id_article); +$redirect_url = $redirect_url->getUrl(); + +$image_link = new Link('../spip_image.php3'); +if ($id_article) $image_link->addVar('id_article', $id_article); + +$id_doc_actif = $id_document; + + // // editable ? // @@ -26,20 +37,6 @@ if (!$flag_editable) { // Gerer les modifications // -if ($new == "oui") { - mysql_query("INSERT spip_documents (id_vignette, titre) ". - "VALUES ('$id_vignette', 'nouveau document')"); - $id_document = mysql_insert_id(); - - if ($id_article) { - mysql_query("INSERT spip_documents_articles (id_document, id_article) ". - "VALUES ($id_document, $id_article)"); - } -} - -// eventuel triangle a garder deplie -$id_doc_actif = $id_document; - if ($modif_document == 'oui') { $titre = addslashes(corriger_caracteres($titre)); $descriptif = addslashes(corriger_caracteres($descriptif)); @@ -49,15 +46,15 @@ if ($modif_document == 'oui') { // transformer en vignette/document if ($transformer_image == 'document') { mysql_query("UPDATE spip_documents SET mode='document' WHERE id_document=$id_document"); -} else if ($transformer_image == 'vignette') { - // est-ce qu'on met aussi id_vignette=0 ? (Non : on garde une trace de l'id_vignette en cas - // d'aller-retour document -> vignette -> document - mysql_query("UPDATE spip_documents SET mode='vignette' WHERE id_document=$id_document"); +} +else if ($transformer_image == 'vignette') { + mysql_query("UPDATE spip_documents SET mode='vignette', id_vignette=0 WHERE id_document=$id_document"); } // // Affichage // + $query = "SELECT titre FROM spip_articles WHERE id_article = $id_article"; $result = mysql_query($query); if ($art = mysql_fetch_object($result)) { @@ -90,7 +87,7 @@ if ($documents_lies) { reset($documents_lies); while (list(, $id_document) = each($documents_lies)) { echo "<tr><td>\n"; - afficher_document($id_document, $id_doc_actif); + afficher_document($id_document, $image_link, $redirect_url, $id_doc_actif == $id_document); echo "</td></tr>\n"; } echo "<tr><td height='10'> </td></tr>\n"; @@ -123,7 +120,7 @@ if ($images_liees) { reset($images_liees); while (list(, $id_document) = each($images_liees)) { echo "<tr><td>\n"; - afficher_document($id_document, $id_doc_actif); + afficher_document($id_document, $image_link, $redirect_url, $id_doc_actif == $id_document); echo "</td></tr>\n"; } echo "<tr><td height='10'> </td></tr>\n"; @@ -144,11 +141,11 @@ echo "</td></tr></table>\n"; echo debut_boite_info(); -$link = new Link('../spip_image.php3'); +$link = $image_link; +$link->addVar('redirect', $redirect_url); $link->addVar('hash', calculer_action_auteur("ajout_doc")); $link->addVar('hash_id_auteur', $connect_id_auteur); $link->addVar('ajout_doc', 'oui'); -$link->addVar('id_article', $id_article); afficher_upload($link, 'Télécharger depuis votre ordinateur :'); diff --git a/ecrire/inc_base.php3 b/ecrire/inc_base.php3 index 943e6775b9692322583e269bcb91a51e753a90d6..6a61555b9ebc7ab7e0e81ca7c9610c7392a42a46 100644 --- a/ecrire/inc_base.php3 +++ b/ecrire/inc_base.php3 @@ -375,6 +375,12 @@ function creer_base() { "(3, 'gif', 'Image GIF', 'image')"; mysql_query($query); + $query = "INSERT IGNORE spip_types_documents (extension, titre, inclus) VALUES ". + "('bmp', 'Image BMP', 'image'), ". + "('psd', 'Image Photoshop', 'image'), ". + "('tif', 'Image TIFF', 'image')"; + mysql_query($query); + $query = "INSERT IGNORE spip_types_documents (extension, titre) VALUES ". "('txt', 'Document texte'), ". "('htm', 'Fichier HTML'), ". @@ -399,6 +405,7 @@ function creer_base() { "('tgz', 'Archive TGZ'), ". "('swf', 'Animation Flash')"; mysql_query($query); + } diff --git a/ecrire/inc_documents.php3 b/ecrire/inc_documents.php3 index dc4cee88c489410ee76563037d614a0cda9c9011..76f3a1c56b6742afb74c3a984b2e0d990bb42d86 100644 --- a/ecrire/inc_documents.php3 +++ b/ecrire/inc_documents.php3 @@ -56,8 +56,7 @@ function afficher_upload($link, $intitule, $inclus = '') { global $this_link, $connect_statut; if (!$link->getVar('redirect')) { - $my_link = new Link("article_documents.php3"); // faute de mieux pour l'instant (Fil) - $link->addVar('redirect', $my_link->getUrl()); + $link->addVar('redirect', $this_link->getUrl()); } echo "<font face='verdana, arial, helvetica, sans-serif' size='2'>\n"; @@ -95,12 +94,14 @@ function afficher_upload($link, $intitule, $inclus = '') { // Afficher un document sous forme de ligne depliable // -function afficher_document($id_document, $id_doc_actif = 0) { +function afficher_document($id_document, $image_link, $redirect_url = "", $deplier = false) { global $connect_id_auteur, $connect_statut; global $couleur_foncee, $couleur_claire; global $this_link; global $id_article; + if (!$redirect_url) $redirect_url = $this_link->getUrl(); + $document = fetch_document($id_document); $id_vignette = $document->get('id_vignette'); @@ -121,7 +122,7 @@ function afficher_document($id_document, $id_doc_actif = 0) { } $block = "document $id_document"; - if ($id_document == $id_doc_actif) + if ($deplier) echo bouton_block_visible($block); else echo bouton_block_invisible($block); @@ -136,11 +137,11 @@ function afficher_document($id_document, $id_doc_actif = 0) { echo "</font>\n"; echo "<font size='1'>"; - $link = new Link('../spip_image.php3'); - $link->addVar('redirect', $this_link->getUrl()); + + $link = $image_link; + $link->addVar('redirect', $redirect_url); $link->addVar('hash', calculer_action_auteur("supp_doc ".$id_document)); $link->addVar('hash_id_auteur', $connect_id_auteur); - $link->addVar('id_article', $id_article); $link->addVar('doc_supp', $id_document); echo "[<b><a ".$link->getHref().">SUPPRIMER</a></b>]\n"; @@ -148,7 +149,7 @@ function afficher_document($id_document, $id_doc_actif = 0) { echo "</font>\n"; - if ($id_document == $id_doc_actif) + if ($deplier) echo debut_block_visible($block); else echo debut_block_invisible($block); @@ -186,14 +187,14 @@ function afficher_document($id_document, $id_doc_actif = 0) { if ($type_inclus == 'image') { if ($mode == 'vignette') { - $link = new Link(); - $link->addVar('transformer_image','document'); - $link->addVar('id_document',$id_document); + $link = new Link($redirect_url); + $link->addVar('transformer_image', 'document'); + $link->addVar('id_document', $id_document); $link_transformer = "<font size='1'>[<b><a ".$link->getHref().">Transformer en document</a></b>]</font>\n"; } else if ($mode == 'document') { - $link = new Link(); - $link->addVar('transformer_image','vignette'); - $link->addVar('id_document',$id_document); + $link = new Link($redirect_url); + $link->addVar('transformer_image', 'vignette'); + $link->addVar('id_document', $id_document); $link_transformer = "<font size='1'>[<b><a ".$link->getHref().">Transformer en image affichable</a></b>]</font>\n"; } } @@ -257,7 +258,14 @@ function afficher_document($id_document, $id_doc_actif = 0) { echo texte_vignette($largeur_vignette, $hauteur_vignette, $fichier_vignette); echo "<font size='2'>\n"; $hash = calculer_action_auteur("supp_doc ".$id_vignette); - echo "[<a href='../spip_image.php3?redirect=".urlencode("article_documents.php3")."&id_document=$id_document&id_article=$id_article&hash_id_auteur=$connect_id_auteur&hash=$hash&doc_supp=$id_vignette'>"; + + $link = $image_link; + $link->addVar('redirect', $redirect_url); + $link->addVar('hash', calculer_action_auteur("supp_doc ".$id_vignette)); + $link->addVar('hash_id_auteur', $connect_id_auteur); + $link->addVar('doc_supp', $id_vignette); + + echo "[<a ".$link->getHref().">"; echo "supprimer la vignette"; echo "</a>]</font><br>\n"; echo $raccourci_doc; @@ -276,14 +284,14 @@ function afficher_document($id_document, $id_doc_actif = 0) { echo "<div align='left'>\n"; $hash = calculer_action_auteur("ajout_doc"); - $link = new Link('../spip_image.php3'); - $link->addVar('redirect', $this_link->getUrl()); + + $link = $image_link; + $link->addVar('redirect', $redirect_url); + $link->addVar('hash', calculer_action_auteur("ajout_doc")); + $link->addVar('hash_id_auteur', $connect_id_auteur); $link->addVar('ajout_doc', 'oui'); $link->addVar('id_document', $id_document); - $link->addVar('id_article', $id_article); $link->addVar('mode', 'vignette'); - $link->addVar('hash_id_auteur', $connect_id_auteur); - $link->addVar('hash', $hash); afficher_upload($link, 'Charger une vignette :', 'image'); echo "</div>\n"; @@ -307,10 +315,10 @@ function afficher_document($id_document, $id_doc_actif = 0) { function pave_documents($id_article) { global $puce; - $result_doc = mysql_query(("SELECT type.extension AS extension, COUNT(doc.id_document) AS cnt + $result_doc = mysql_query("SELECT type.extension AS extension, COUNT(doc.id_document) AS cnt FROM spip_types_documents AS type, spip_documents AS doc, spip_documents_articles AS lien WHERE lien.id_article=$id_article AND doc.id_document = lien.id_document AND doc.id_type = type.id_type - GROUP BY doc.id_type")); + GROUP BY doc.id_type"); while ($type = mysql_fetch_object($result_doc)) { $documents .= $puce.$type->cnt." ".$type->extension."<br>"; $nbdoc += $type->cnt; diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index 3750e4cc7fa6ee58c3e3b716d123692cc7b56123..ab59a38c24c34fd5a858f77c2cdde1f707381344 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -12,7 +12,7 @@ define("_ECRIRE_INC_VERSION", "1"); // (utilise pour les modifs de la base de donnees) // -$spip_version = 1.409; // version de la base +$spip_version = 1.410; // version de la base // dernier tag connu ou date si cvs if (! ereg('Name: v(.*) ','$Name$', $regs)) diff --git a/spip_image.php3 b/spip_image.php3 index 233a73ea17b616759fa5667c47188524e651eda6..8d698c5bcecd6345b9b01f343a598ed3063ede79 100644 --- a/spip_image.php3 +++ b/spip_image.php3 @@ -25,6 +25,33 @@ function deplacer_fichier_upload($source, $dest) { } +// +// Convertit le type numerique retourne par getimagesize() en extension fichier +// + +function decoder_type_image($type, $strict = false) { + switch ($type) { + case 1: + return "gif"; + case 2: + return "jpg"; + case 3: + return "png"; + case 4: + return $strict ? "" : "swf"; + case 5: + return "psd"; + case 6: + return "bmp"; + case 7: + case 8: + return "tif"; + default: + return ""; + } +} + + // // Ajouter une image (logo) // @@ -42,13 +69,8 @@ function ajout_image($source, $dest) { // analyse le type de l'image (on ne fait pas confiance au nom de // fichier envoye par le browser : pour les Macs c'est plus sur) - $size = getimagesize($loc); - $type = $size[2]; - - if ($type=="1") $type="gif"; - else if ($type=="2") $type="jpg"; - else if ($type=="3") $type="png"; - else $type = ""; + $size = @getimagesize($loc); + $type = decoder_type_image($size[2], true); if ($type) { rename($loc, "$loc.$type"); @@ -88,8 +110,9 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { $result = mysql_query($query); if ($row = @mysql_fetch_array($result)) { $id_type = $row['id_type']; + $type_inclus = $row['inclus']; } - else return array(false,0); + else return false; // // Preparation @@ -124,14 +147,14 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { else $dest_path = "IMG/$dest"; - if (!deplacer_fichier_upload($source, $dest_path)) return; + if (!deplacer_fichier_upload($source, $dest_path)) return false; // // Recopier le fichier // $size_image = getimagesize($dest_path); - $type_image = $size_image[2]; + $type_image = decoder_type_image($size_image[2]); if ($type_image) { $largeur = $size_image[0]; $hauteur = $size_image[1]; @@ -139,7 +162,7 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { $taille = filesize($dest_path); if ($nouveau) { - if (!$mode) $mode = $type_image ? 'vignette' : 'document'; + if (!$mode) $mode = ($type_image AND $type_inclus == 'image') ? 'vignette' : 'document'; $titre = ereg_replace("\..*$", "", $orig); $titre = ereg_replace("ecrire/|upload/", "", $titre); $titre = strtr($titre, "_", " "); @@ -156,25 +179,23 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document) { $id_document = $id_document_lie; // pour que le 'return' active le bon doc. } - return array (true,$id_document) ; // on veut bien effacer le fichier s'il est dans ftp/upload/ + return $id_document; } // image_name n'est valide que par POST http, mais pas par la methode ftp/upload // par ailleurs, pour un fichier ftp/upload, il faut effacer l'original nous-memes -$effacer_si_ok = false; if (!$image_name AND $image2) { $image = "ecrire/upload/".$image2; $image_name = $image; - $effacer_si_ok = true; } // // ajouter un document // if ($ajout_doc == 'oui') { - list ($ok, $id_document) = ajout_doc($image_name, $image, $fichier, $mode, $id_document); + $id_document = ajout_doc($image_name, $image, $fichier, $mode, $id_document); } @@ -226,7 +247,7 @@ $redirect_url = "ecrire/" . $vars["redirect"]; $link = new Link($redirect_url); reset($vars); while (list ($key, $val) = each ($vars)) { - if (!ereg("^(redirect|image.*|hash.*|ajout.*|doc.*|id_document|transformer.*)$", $key)) { + if (!ereg("^(redirect|image.*|hash.*|ajout.*|doc.*|transformer.*)$", $key)) { $link->addVar($key, $val); } }