[ Index ] |
|
Code source de SPIP 1.8.3 |
1 <?php 2 3 /***************************************************************************\ 4 * SPIP, Systeme de publication pour l'internet * 5 * * 6 * Copyright (c) 2001-2005 * 7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * 8 * * 9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * 10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * 11 \***************************************************************************/ 12 13 14 // 15 // Ce fichier ne sera execute qu'une fois 16 if (defined("_ECRIRE_INC_DOCUMENTS")) return; 17 define("_ECRIRE_INC_DOCUMENTS", "1"); 18 19 include_ecrire ("inc_admin.php3"); 20 include_ecrire ("inc_date.php3"); 21 22 // 23 // Vignette pour les documents lies 24 // 25 26 function vignette_par_defaut($type_extension, $size=true) { 27 28 if (!$type_extension) 29 $type_extension = 'txt'; 30 31 $filename = _DIR_IMG_ICONES . "$type_extension"; 32 33 // Glurps ! 34 // je dirais meme plus: Glurps ! (esj) 35 if (!@file_exists($v = $filename.'.png')) 36 if (!@file_exists($v = $filename.'.gif')) 37 if (!@file_exists($v = $filename.'-dist.png')) 38 if (!@file_exists($v = $filename.'-dist.gif')) 39 if (!@file_exists($v = _DIR_IMG_ICONES . "/defaut.png")) 40 if (!@file_exists($v = _DIR_IMG_ICONES . "/defaut.gif")) 41 if (!@file_exists($v = _DIR_IMG_ICONES . "/defaut-dist.png")) 42 if (!@file_exists($v = _DIR_IMG_ICONES . "/defaut-dist.gif")) 43 $v = _DIR_IMG_ICONES . "/defaut-dist.gif"; 44 45 if (!$size) return $v; 46 47 if ($size = @getimagesize($v)) { 48 $largeur = $size[0]; 49 $hauteur = $size[1]; 50 } 51 52 return array($v, $largeur, $hauteur); 53 } 54 55 56 // 57 // Affiche le document avec sa vignette par defaut 58 // 59 // Attention : en mode 'doc', si c'est un fichier graphique on prefere 60 // afficher une vue reduite, quand c'est possible (presque toujours, donc) 61 // En mode 'vignette', l'image conserve sa taille 62 // 63 // A noter : dans le portfolio prive on pousse le vice jusqu'a reduire la taille 64 // de la vignette -> c'est a ca que sert la variable $portfolio 65 function image_pattern($vignette) { 66 return "<img src='" 67 . (_DIR_RESTREINT ? '' : '../') 68 . $vignette['fichier']."' 69 width='".$vignette['largeur']."' 70 height='".$vignette['hauteur']."' 71 style='border-width: 0px;' />"; 72 } 73 74 function document_et_vignette($document, $url, $portfolio=false) { 75 // a supprimer avec spip_types_documents 76 list($extension) = spip_fetch_array(spip_query("SELECT extension FROM 77 spip_types_documents WHERE id_type=".$document['id_type'])); 78 79 if ($document['id_vignette'] > 0 80 AND $vignette = spip_fetch_array(spip_query("SELECT * FROM spip_documents 81 WHERE id_document = ".$document['id_vignette']))) { 82 if (!$portfolio OR !(lire_meta('creer_preview') == 'oui')) { 83 $image = image_pattern($vignette); 84 } else { 85 $image = prive_lien_image_reduite ($vignette['largeur'], 86 $vignette['hauteur'], $vignette['fichier']); 87 } 88 } else if (strstr(lire_meta('formats_graphiques'), $extension) 89 AND lire_meta('creer_preview') == 'oui') { 90 include_ecrire ('inc_logos.php3'); 91 #var_dump($document); 92 $local = copie_locale($document['fichier']); 93 if ($portfolio) 94 $image = reduire_image_logo($local, 110, 120); 95 else 96 $image = reduire_image_logo($local); 97 } 98 99 if (!$image) { 100 list($fichier, $largeur, $hauteur) = vignette_par_defaut($extension); 101 $image = "<img src='$fichier' style='border-width: 0px;' height='$hauteur' width='$largeur' />"; 102 } 103 104 if (!$url) 105 return $image; 106 else 107 return "<a href='$url'>$image</a>"; 108 } 109 110 // 111 // Integration (embed) multimedia 112 // 113 114 function embed_document($id_document, $les_parametres="", $afficher_titre=true) { 115 global $id_doublons; 116 117 $id_doublons['documents'] .= ",$id_document"; 118 119 if ($les_parametres) { 120 $parametres = explode("|",$les_parametres); 121 122 for ($i = 0; $i < count($parametres); $i++) { 123 $parametre = $parametres[$i]; 124 125 if (eregi("^left|right|center$", $parametre)) { 126 $align = $parametre; 127 } 128 else { 129 $params[] = $parametre; 130 } 131 } 132 } 133 134 if (!($row = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = " . intval($id_document))))) 135 return ''; 136 $id_document = $row['id_document']; 137 $id_type = $row['id_type']; 138 $titre = propre($row ['titre']); 139 $descriptif = propre($row['descriptif']); 140 $fichier = generer_url_document($id_document); 141 $largeur = $row['largeur']; 142 $hauteur = $row['hauteur']; 143 $taille = $row['taille']; 144 $mode = $row['mode']; 145 146 $result_type = spip_query("SELECT * FROM spip_types_documents WHERE id_type=" . intval($id_type)); 147 if ($row_type = @spip_fetch_array($result_type)) { 148 $type = $row_type['titre']; 149 $inclus = $row_type['inclus']; 150 $extension = $row_type['extension']; 151 } 152 else $type = 'fichier'; 153 154 // Pour RealVideo 155 $real = ((!ereg("^controls", $les_parametres)) AND (ereg("^(rm|ra|ram)$", $extension))); 156 157 if ($inclus == "embed" AND !$real) { 158 159 for ($i = 0; $i < count($params); $i++) { 160 if (ereg("([^\=]*)\=([^\=]*)", $params[$i], $vals)){ 161 $nom = $vals[1]; 162 $valeur = $vals[2]; 163 $inserer_vignette .= "<param name='$nom' value='$valeur'>"; 164 $param_emb .= " $nom='$valeur'"; 165 if ($nom == "controls" AND $valeur == "PlayButton") { 166 $largeur = 40; 167 $hauteur = 25; 168 } 169 else if ($nom == "controls" AND $valeur == "PositionSlider") { 170 $largeur = $largeur - 40; 171 $hauteur = 25; 172 } 173 } 174 } 175 176 $vignette = "<object width='$largeur' height='$hauteur'>\n"; 177 $vignette .= "<param name='movie' value='$fichier'>\n"; 178 $vignette .= "<param name='src' value='$fichier'>\n"; 179 $vignette .= $inserer_vignette; 180 181 $vignette .= "<embed src='$fichier' $param_emb width='$largeur' height='$hauteur'></embed></object>\n"; 182 183 } 184 else if ($inclus == "embed" AND $real) { 185 $vignette .= "<div>".embed_document ($id_document, "controls=ImageWindow|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false)."</div>"; 186 $vignette .= embed_document ($id_document, "controls=PlayButton|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false); 187 $vignette .= embed_document ($id_document, "controls=PositionSlider|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false); 188 } 189 else if ($inclus == "image") { 190 $fichier_vignette = $fichier; 191 $largeur_vignette = $largeur; 192 $hauteur_vignette = $hauteur; 193 if ($fichier_vignette) { 194 $vignette = "<img src='$fichier_vignette' style='border-width: 0px;'"; 195 if ($largeur_vignette && $hauteur_vignette) 196 $vignette .= " width='$largeur_vignette' height='$hauteur_vignette'"; 197 if ($titre) { 198 $titre_ko = ($taille > 0) ? ($titre . " - ". taille_en_octets($taille)) : $titre; 199 $titre_ko = supprimer_tags(propre($titre_ko)); 200 $vignette .= " alt=\"$titre_ko\" title=\"$titre_ko\""; 201 }else{ $vignette .= " alt=\"\" title=\"\""; } 202 $vignette .= " />"; 203 } 204 } 205 206 if (!$afficher_titre) return $vignette; 207 208 if ($largeur_vignette < 120) $largeur_vignette = 120; 209 $forcer_largeur = " width = '$largeur_vignette'"; 210 211 if ($align != 'center') $float = " style='float: $align;'"; 212 213 $retour .= "<div class='spip_documents spip_documents_$align'$float>\n"; 214 $retour .= $vignette; 215 216 if ($titre) $retour .= "<div class='spip_doc_titre'><strong>$titre</strong></div>"; 217 218 if ($descriptif) { 219 $retour .= "<div class='spip_doc_descriptif'>$descriptif</div>"; 220 } 221 222 $retour .= "</div>\n"; 223 224 return $retour; 225 } 226 227 228 // 229 // Integration des images et documents 230 // 231 232 function integre_image($id_document, $align, $type_aff) { 233 global $id_doublons; 234 235 $id_doublons['documents'] .= ",$id_document"; 236 237 if (!($row = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = " . intval($id_document))))) return ""; 238 $id_document = $row['id_document']; 239 $id_type = $row['id_type']; 240 $titre = typo($row['titre']); 241 $descriptif = propre($row['descriptif']); 242 $fichier = $row['fichier']; 243 $url_fichier = generer_url_document($id_document); 244 $largeur = $row['largeur']; 245 $hauteur = $row['hauteur']; 246 $taille = $row['taille']; 247 $mode = $row['mode']; 248 $id_vignette = $row['id_vignette']; 249 250 // on construira le lien en fonction du type de doc 251 if ($t = @spip_fetch_array(spip_query( 252 "SELECT titre,extension FROM spip_types_documents 253 WHERE id_type = $id_type"))) { 254 $extension = $t['extension']; # jpg, tex 255 $type = $t['titre']; # JPEG, LaTeX 256 } 257 258 // Attention ne pas confondre : 259 // pour un document affiche avec le raccourci <IMG> on a 260 // $mode == 'document' et $type_aff == 'IMG' 261 // inversement, pour une image presentee en mode 'DOC', 262 // $mode == 'vignette' et $type_aff == 'DOC' 263 264 // Type : vignette ou document ? 265 if ($mode == 'document') { 266 $vignette = document_et_vignette($row, $url_fichier); 267 } else { 268 $vignette = image_pattern($row); 269 } 270 271 // 272 // Regler le alt et title 273 // 274 $alt_titre_doc = entites_html(texte_backend(supprimer_tags($titre))); 275 $alt_infos_doc = entites_html($type 276 . (($taille>0) ? ' - '.texte_backend(taille_en_octets($taille)) : '')); 277 if ($row['distant'] == 'oui') 278 $alt_infos_doc .= ", ".$url_fichier; 279 if ($alt_titre_doc) $alt_sep = ', '; 280 281 // documents presentes en mode <DOC> : alt et title "JPEG, 54 ko" 282 // mais pas de titre puisqu'il est en dessous 283 if ($mode == 'document' AND $type_aff == 'DOC') { 284 $alt = " alt=\"$alt_infos_doc\" title=\"$alt_infos_doc\""; 285 } 286 // document en mode <IMG> : alt + title detailles 287 else if ($mode == 'document' AND $type_aff == 'IMG') { 288 $alt = " alt=\"$alt_titre_doc$alt_sep$alt_infos_doc\" 289 title=\"$alt_titre_doc$alt_sep$alt_infos_doc\""; 290 } 291 // vignette en mode <DOC> : alt disant "JPEG", pas de title 292 else if ($mode == 'vignette' AND $type_aff == 'DOC') { 293 $alt = " alt=\"($type)\""; 294 } 295 // vignette en mode <IMG> : alt + title s'il y a un titre 296 else if ($mode == 'vignette' AND $type_aff == 'IMG') { 297 if (strlen($titre)) 298 $alt = " alt=\"$alt_titre_doc ($type)\" title=\"$alt_titre_doc\""; 299 else 300 $alt = " alt=\"($type)\""; 301 } 302 303 $vignette = str_replace(' />', "$alt />", $vignette); # inserer l'attribut 304 305 // Preparer le texte sous l'image pour les <DOC> 306 if ($type_aff == 'DOC') { 307 if (strlen($titre)) 308 $txt = "\n<div class='spip_doc_titre'><strong>" 309 . $titre 310 . "</strong></div>\n"; 311 if (strlen($descriptif)) 312 $txt .= "<div class='spip_doc_descriptif'>$descriptif</div>\n"; 313 } 314 315 // Passer un DIV pour les images centrees et, dans tous les cas, les <DOC> 316 if ($align == 'center' OR $type_aff =='DOC') { 317 $span = "div"; 318 } else { 319 $span = "span"; 320 } 321 322 if ($align != 'center') { 323 // Largeur de la div = celle de l'image ; mais s'il y a une legende 324 // mettre au moins 120px 325 $width = extraire_attribut($vignette, 'width'); 326 if (strlen($txt) AND $width < 120) $width = 120; 327 $width = 'width: '.$width.'px;'; 328 329 $style = " style='float: $align; $width'"; 330 } 331 332 return 333 "<$span class='spip_documents spip_documents_$align' $style>" 334 . $vignette 335 . $txt 336 . "</$span>\n"; 337 } 338 339 // 340 // Parcourt recursivement le repertoire upload/ (ou tout autre repertoire, d'ailleurs) 341 // 342 function fichiers_upload($dir) { 343 $fichiers = array(); 344 $d = opendir($dir); 345 346 while ($f = readdir($d)) { 347 if (is_file("$dir/$f") AND is_readable("$dir/$f") 348 AND $f != 'remove.txt') 349 $fichiers[] = "$dir/$f"; 350 else 351 if (is_dir("$dir/$f") AND is_readable("$dir/$f") 352 AND $f != '.' AND $f != '..') 353 $fichiers = array_merge($fichiers, fichiers_upload("$dir/$f")); 354 355 } 356 closedir($d); 357 358 sort($fichiers); 359 360 return $fichiers; 361 } 362 363 // 364 // Retourner le code HTML d'utilisation de fichiers uploades a la main 365 // 366 367 function texte_upload_manuel($dir, $inclus = '') { 368 $fichiers = fichiers_upload($dir); 369 $exts = array(); 370 371 foreach ($fichiers as $f) { 372 $f = ereg_replace("^$dir/","",$f); 373 if (ereg("\.([^.]+)$", $f, $match)) { 374 $ext = strtolower($match[1]); 375 if (!$exts[$ext]) { 376 if ($ext == 'jpeg') $ext = 'jpg'; 377 $req = "SELECT extension FROM spip_types_documents WHERE extension='$ext'"; 378 if ($inclus) $req .= " AND inclus='$inclus'"; 379 if (@spip_fetch_array(spip_query($req))) $exts[$ext] = 'oui'; 380 else $exts[$ext] = 'non'; 381 } 382 383 $ledossier = substr($f, 0, strrpos($f,"/")); 384 $lefichier = substr($f, strrpos($f, "/"), strlen($f)); 385 386 if ($ledossier != $ledossier_prec) { 387 $texte_upload .= "\n<option value=\"$ledossier\" style='font-weight: bold;'>" 388 ._T('tout_dossier_upload', array('upload' => $ledossier)) 389 ."</option>"; 390 } 391 392 $ledossier_prec = $ledossier; 393 394 if ($exts[$ext] == 'oui') $texte_upload .= "\n<option value=\"$f\"> $lefichier</option>"; 395 } 396 } 397 398 if ($texte_upload) { 399 $texte_upload = "\n<option value=\"/\" style='font-weight: bold;'>" 400 ._T('info_installer_tous_documents') 401 ."</option>" . $texte_upload; 402 } 403 404 return $texte_upload; 405 } 406 407 408 // 409 // Retourne le lien HTML vers l'image reduite (pour l'espace prive) 410 // 411 function prive_lien_image_reduite ($largeur_vignette, $hauteur_vignette, $fichier_vignette) { 412 global $connect_id_auteur; 413 include_ecrire ("inc_logos.php3"); 414 415 return reduire_image_logo('../'.$fichier_vignette, 120, 110); 416 } 417 418 // Bloc d'edition de la taille du doc (pour embed) 419 function afficher_formulaire_taille($document, $type_inclus='AUTO') { 420 421 // (on ne le propose pas pour les images qu'on sait 422 // lire, id_type<=3), sauf bug, ou document distant 423 if ($document['id_type'] <= 3 424 AND $document['hauteur']*$document['largeur']>0 425 AND $document['distant']!='oui') 426 return ''; 427 428 // Si on n'a pas le type_inclus, on va le chercher dans spip_types_documents 429 if ($type_inclus == 'AUTO' 430 AND $r = spip_query("SELECT * FROM spip_types_documents 431 WHERE id_type=".$document['id_type']) 432 AND $type = @spip_fetch_array($r)) 433 $type_inclus = $type['inclus']; 434 435 if (($type_inclus == "embed" #meme pour le MP3 : "l x h pixels"? 436 OR $type_inclus == "image") 437 AND $document['largeur']*$document['hauteur']) { 438 echo "<br /><b>"._T('entree_dimensions')."</b><br />\n"; 439 echo "<input type='text' name='largeur_document' class='fondl' style='font-size:9px;' value=\"".$document['largeur']."\" size='5'>"; 440 echo " × <input type='text' name='hauteur_document' class='fondl' style='font-size:9px;' value=\"".$document['hauteur']."\" size='5'> "._T('info_pixels'); 441 } 442 } 443 444 445 // 446 // Afficher un formulaire d'upload 447 // 448 449 function afficher_upload($link, $redirect='', $intitule, $inclus = '', $envoi_multiple = true, $forcer_document = false) { 450 global $clean_link, $connect_statut, $connect_toutes_rubriques, $options, $spip_lang_right; 451 static $num_form = 0; $num_form ++; 452 453 if (!$redirect) 454 $redirect = $clean_link->getUrl(); 455 $link->addVar('redirect', $redirect); 456 457 if ($forcer_document) 458 $link->addVar('forcer_document', 'oui'); 459 460 echo $link->getForm('POST', '', 'multipart/form-data'); 461 echo "<div>"; 462 463 // bouton permettant de telecharger 10 images ou docs a la fois 464 $envoi_multiple &= ($options == "avancees"); 465 if ($envoi_multiple OR $forcer_document) 466 echo bouton_block_invisible("ftp$num_form"); 467 468 if (tester_upload()) { 469 echo "$intitule</div>"; 470 471 // un modele de selecteur de fichier 472 $upload = "<div><input name='fichier*' type='File' style='font-size: 10px;' class='forml' size='15'></div>"; 473 474 // afficher le premier 475 echo str_replace('*', '1', $upload); 476 477 /* (TESTS POUR ENVOI MULTIPLE ; DESACTIVE) 478 // afficher les suivants, masques 479 if ($envoi_multiple) { 480 echo debut_block_invisible ("upload$num_form"); 481 for ($i=2; $i<=10; $i++) 482 echo str_replace('*', "$i", $upload); 483 echo fin_block(); 484 } 485 */ 486 487 echo "<div align='".$GLOBALS['spip_lang_right']."'><input name='ok_post' type='Submit' VALUE='"._T('bouton_telecharger')."' CLASS='fondo'></div>\n<div>"; 488 } 489 490 echo debut_block_invisible("ftp$num_form"); 491 492 if ($connect_statut == '0minirezo' AND $connect_toutes_rubriques 493 AND $envoi_multiple) { 494 $texte_upload = texte_upload_manuel(_DIR_TRANSFERT, $inclus); 495 if ($texte_upload) { 496 echo "<p><div style='color: #505050;'>"; 497 if ($forcer_document) echo '<input type="hidden" name="forcer_document" value="oui">'; 498 echo "\n"._T('info_selectionner_fichier')." :<br />"; 499 echo "\n<select name='image2' size='1' class='fondl'>"; 500 echo $texte_upload; 501 echo "\n</select>"; 502 echo "\n <div align='".$GLOBALS['spip_lang_right']."'><input name='ok_ftp' type='Submit' value='"._T('bouton_choisir')."' class='fondo'></div>"; 503 504 echo "</div>\n"; 505 } 506 else { 507 echo "<div style='border: 1px #303030 solid; padding: 4px; color: #505050;'>"; 508 echo _T('info_installer_ftp').aide("ins_upload"); 509 echo "</div>"; 510 } 511 } 512 513 // Lien document distant, jamais en mode image 514 if ($forcer_document) { 515 echo "<p /><div style='border: 1px #303030 solid; padding: 4px; color: #505050;'>"; 516 echo "<img src='"._DIR_IMG_PACK.'attachment.gif', 517 "' style='float: $spip_lang_right;' alt=\"\" />\n"; 518 echo "\n"._T('info_referencer_doc_distant')."<br />"; 519 echo "\n<input name='image_url' size='32' class='fondo' value='http://' />"; 520 echo "\n <div align='".$GLOBALS['spip_lang_right']."'><input name='ok_url' type='Submit' value='"._T('bouton_choisir')."' class='fondo'></div>"; 521 echo "</div>\n"; 522 } 523 524 echo "</div>\n"; 525 echo fin_block(); 526 echo "</form>\n"; 527 528 } 529 530 531 // 532 // Afficher les documents non inclus 533 // (page des articles) 534 535 function afficher_portfolio ( 536 $documents = array(), # liste des documents, avec toutes les donnees 537 $id_article, # numero de l'article ou de la rubrique 538 $type = "article", # article ou rubrique ? 539 $album = 'portfolio', # album d'images ou de documents ? 540 $flag_modif = false, # a-t-on le droit de modifier ? 541 $image_url, # adresse du lien spip_image 542 $redirect_url, # adresse du retour apres spip-image 543 $couleur # couleur des cases du tableau 544 ) { 545 global $connect_id_auteur, $connect_statut; 546 global $id_doublons, $options; 547 global $spip_lang_left, $spip_lang_right; 548 549 // la derniere case d'une rangee 550 $bord_droit = ($album == 'portfolio' ? 2 : 1); 551 552 foreach ($documents as $document) { 553 $id_document = $document['id_document']; 554 $id_vignette = $document['id_vignette']; 555 $id_type = $document['id_type']; 556 $titre = $document['titre']; 557 $descriptif = $document['descriptif']; 558 $url = generer_url_document($id_document); 559 $fichier = $document['fichier']; 560 $largeur = $document['largeur']; 561 $hauteur = $document['hauteur']; 562 $taille = $document['taille']; 563 $date = $document['date']; 564 $mode = $document['mode']; 565 566 $flag_deplie = teste_doc_deplie($id_document); 567 568 if ($case == 0) { 569 echo "<tr style='border-top: 1px solid black;'>"; 570 } 571 572 $style = "border-$spip_lang_left: 1px solid $couleur; border-bottom: 1px solid $couleur;"; 573 if ($case == $bord_droit) $style .= " border-$spip_lang_right: 1px solid $couleur;"; 574 echo "<td width='33%' style='text-align: $spip_lang_left; $style' valign='top'>"; 575 576 // Signaler les documents distants par une icone de trombone 577 if ($document['distant'] == 'oui') { 578 echo "<img src='"._DIR_IMG_PACK.'attachment.gif'."' style='float: $spip_lang_right;' alt=\"".entites_html($document['fichier'])."\" title=\"" . 579 entites_html($document['fichier'])."\" />\n"; 580 } 581 582 // bloc vignette + rotation 583 echo "<div style='text-align:center;'>"; 584 585 586 # 'extension', a ajouter dans la base quand on supprimera spip_types_documents 587 switch ($id_type) { 588 case 1: 589 $document['extension'] = "jpg"; 590 break; 591 case 2: 592 $document['extension'] = "png"; 593 break; 594 case 3: 595 $document['extension'] = "gif"; 596 break; 597 } 598 599 // bloc rotation de l'image 600 // si c'est une image, qu'on sait la faire tourner, qu'elle 601 // n'est pas distante, et qu'elle n'a pas de vignette perso ! 602 if ($flag_modif 603 AND strstr(lire_meta('formats_graphiques'), $document['extension']) 604 AND $document['distant']!='oui' 605 AND !$id_vignette) { 606 echo "<div class='verdana1' style='float: $spip_lang_right; text-align: $spip_lang_right;'>"; 607 $process = lire_meta('image_process'); 608 if ($process == 'imagick' OR $process == 'gd2' 609 OR $process == 'convert' OR $process == 'netpbm') { 610 // tourner a gauche 611 $link_rot = new Link ($image_url); 612 $link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document)); 613 $link_rot->addVar('hash_id_auteur', $connect_id_auteur); 614 $link_rot->addVar('doc_rotate', $id_document); 615 $link_rot->addVar('var_rot', -90); 616 $link_rot->addVar('redirect', 617 $redirect_url.'&show_docs='.$id_document); 618 $link_rot->addVar('ancre', $album); 619 echo http_href_img($link_rot->getUrl(), 'tourner-gauche.gif', "style='border-width: 0px;'", _T('image_tourner_gauche'), '', 'bouton_rotation'); 620 echo "<br />"; 621 622 // tourner a droite 623 $link_rot = new Link ($image_url);; 624 $link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document)); 625 $link_rot->addVar('hash_id_auteur', $connect_id_auteur); 626 $link_rot->addVar('doc_rotate', $id_document); 627 $link_rot->addVar('var_rot', 90); 628 $link_rot->addVar('redirect', 629 $redirect_url.'&show_docs='.$id_document); 630 $link_rot->addVar('ancre', $album); 631 echo http_href_img($link_rot->getUrl(), 632 'tourner-droite.gif', "style='border-width: 0px;'", 633 _T('image_tourner_droite'), '', 'bouton_rotation'); 634 echo "<br />"; 635 636 // tourner 180 637 $link_rot = new Link ($image_url);; 638 $link_rot->addVar('hash', calculer_action_auteur("rotate ".$id_document)); 639 $link_rot->addVar('hash_id_auteur', $connect_id_auteur); 640 $link_rot->addVar('doc_rotate', $id_document); 641 $link_rot->addVar('var_rot', 180); 642 $link_rot->addVar('redirect', 643 $redirect_url.'&show_docs='.$id_document); 644 $link_rot->addVar('ancre', $album); 645 echo http_href_img($link_rot->getUrl(), 646 'tourner-180.gif', "style='border-width: 0px;'", 647 _T('image_tourner_180'), '', 'bouton_rotation'); 648 } 649 echo "</div>\n"; 650 } // fin bloc rotation 651 652 // 653 // Recuperer la vignette et afficher le doc 654 // 655 echo document_et_vignette($document, $url, true); 656 657 echo "</div>"; // fin du bloc vignette + rotation 658 659 660 // bloc titre et descriptif 661 if ($flag_modif) { 662 if ($flag_deplie) 663 $triangle = bouton_block_visible("port$id_document"); 664 else 665 $triangle = bouton_block_invisible("port$id_document"); 666 } 667 if (strlen($titre) > 0) { 668 echo "<div class='verdana2'><b>$triangle".typo($titre)."</b></div>"; 669 } else { 670 $nom_fichier = basename($fichier); 671 672 if (strlen($nom_fichier) > 20) { 673 $nom_fichier = substr($nom_fichier, 0, 10)."...".substr($nom_fichier, strlen($nom_fichier)-10, strlen($nom_fichier)); 674 } 675 echo "<div class='verdana1'>$triangle$nom_fichier</div>"; 676 } 677 678 679 if (strlen($descriptif) > 0) { 680 echo "<div class='verdana1'>".propre($descriptif)."</div>"; 681 } 682 683 // Taille de l'image ou poids du document 684 echo "<div class='verdana1' style='text-align: center;'>"; 685 if ($largeur * $hauteur) 686 echo _T('info_largeur_vignette', 687 array('largeur_vignette' => $largeur, 688 'hauteur_vignette' => $hauteur)); 689 else 690 echo taille_en_octets($taille); 691 echo "</div>"; 692 693 694 if ($flag_modif) { 695 if ($flag_deplie) 696 echo debut_block_visible("port$id_document"); 697 else 698 echo debut_block_invisible("port$id_document"); 699 700 echo "<div class='verdana1' style='color: $couleur_foncee; border: 1px solid $couleur_foncee; padding: 5px; margin-top: 3px;'>"; 701 $link = new Link($redirect_url); 702 $link->addVar('modif_document', 'oui'); 703 $link->addVar('id_document', $id_document); 704 $link->addVar('show_docs', $id_document); 705 706 if ($document['id_article']) 707 $query = '?id_article='.$document['id_article']; 708 if ($document['id_rubrique']) 709 $query = '?id_rubrique='.$document['id_rubrique']; 710 711 echo $link->getForm('POST', "$query#$album"); 712 echo "<b>"._T('titre_titre_document')."</b><br />\n"; 713 echo "<input type='text' onFocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\" name='titre_document' class='formo' style='font-size:11px;' value=\"".entites_html($titre)."\" size='40'><br />\n"; 714 715 // modifier la date (seulement dans les rubriques - et encore) 716 if ($type == 'rubrique' 717 AND $options == "avancees" 718 AND $connect_statut == '0minirezo') { 719 if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $date, $regs)) { 720 $mois = $regs[2]; 721 $jour = $regs[3]; 722 $annee = $regs[1]; 723 } 724 echo "<b>"._T('info_mise_en_ligne')."</b><br />\n", 725 afficher_jour($jour, "NAME='jour_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\""), 726 afficher_mois($mois, "NAME='mois_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\""), 727 afficher_annee($annee, "NAME='annee_doc' SIZE='1' CLASS='fondl' style='font-size:9px;'\n\tonChange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block')\""), 728 "<br />\n"; 729 } 730 731 // bloc descriptif (affiche ou hidden) 732 if ($options == "avancees") { 733 echo "<b>"._T('info_description')."</b><br />\n"; 734 echo "<textarea name='descriptif_document' rows='4' class='forml' style='font-size:10px;' cols='*' wrap='soft' onFocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\">"; 735 echo entites_html($descriptif); 736 echo "</textarea>\n"; 737 738 if ($options == "avancees") 739 afficher_formulaire_taille($document); 740 741 } else { 742 echo "<input type='hidden' name='descriptif_document' value=\"".entites_html($descriptif)."\" />\n"; 743 } 744 745 echo "<div class='display_au_chargement' id='valider_doc$id_document' align='".$GLOBALS['spip_lang_right']."'>"; 746 echo "<input TYPE='submit' class='fondo' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'>"; 747 echo "</div>"; 748 echo "</form>"; 749 750 751 // bloc mettre a jour la vignette 752 echo "<hr />"; 753 bloc_gerer_vignette($document, $image_url, $redirect_url, $album); 754 755 echo "</div>"; 756 757 // bouton "supprimer le doc" 758 $link_supp = new Link ($image_url); 759 $link_supp->addVar('redirect', $redirect_url); 760 $link_supp->addVar('hash', 761 calculer_action_auteur("supp_doc ".$id_document)); 762 $link_supp->addVar('hash_id_auteur', $connect_id_auteur); 763 $link_supp->addVar('doc_supp', $id_document); 764 $link_supp->addVar('ancre', $album); 765 icone_horizontale(_T('icone_supprimer_document'), 766 $link_supp->getUrl(), "image-24.gif", "supprimer.gif"); 767 768 } // fin block modifs 769 770 771 // fin bloc titre + descriptif 772 echo fin_block(); 773 774 echo "</td>\n"; 775 $case ++; 776 777 if ($case > $bord_droit) { 778 $case = 0; 779 echo "</tr>\n"; 780 } 781 782 $id_doublons['documents'] .= ",$id_document"; 783 } 784 785 // fermer la derniere ligne 786 if ($case > 0) { 787 echo "<td style='border-$spip_lang_left: 1px solid $couleur;'> </td>"; 788 echo "</tr>"; 789 } 790 791 } 792 793 794 function bloc_gerer_vignette($document, $image_url, $redirect_url, $album) { 795 global $connect_id_auteur; 796 797 $id_document = $document['id_document']; 798 $id_vignette = $document['id_vignette']; 799 800 echo bouton_block_invisible("gerer_vignette$id_document"); 801 echo "<b>"._T('info_vignette_personnalisee')."</b>\n"; 802 echo debut_block_invisible("gerer_vignette$id_document"); 803 804 if ($id_vignette) { 805 $link = new Link ($image_url); 806 $link->addVar('redirect', 807 $redirect_url.'&show_docs='.$id_document); 808 $link->addVar('hash', 809 calculer_action_auteur("supp_doc ".$id_vignette)); 810 $link->addVar('hash_id_auteur', $connect_id_auteur); 811 $link->addVar('doc_supp', $id_vignette); 812 813 $link->addVar('ancre', $album); 814 815 icone_horizontale (_T('info_supprimer_vignette'), 816 $link->getUrl(), "vignette-24.png", "supprimer.gif"); 817 } 818 else { 819 /**** 820 OBSOLETE 821 // lien "creation automatique" 822 if (strstr(lire_meta('formats_graphiques'), $document['extension']) 823 AND lire_meta('creer_preview') == 'oui' 824 AND $document['distant'] != 'oui') { 825 $link = new Link($image_url); 826 $link->addvar('creer_vignette', 'oui'); 827 $link->addVar('redirect', 828 $redirect_url.'&show_docs='.$id_document); 829 $link->addvar('vignette', $document['fichier']); 830 $link->addVar('hash', 831 calculer_action_auteur("vign ".$document['fichier'])); 832 $link->addVar('hash_id_auteur', $connect_id_auteur); 833 $link->addVar('id_document', $id_document); 834 $link->addVar('ancre', $album); 835 icone_horizontale(_T('info_creer_vignette'), 836 $link->getUrl(), "vignette-24.png", "creer.gif"); 837 } 838 *****/ 839 840 // lien "upload vignette" 841 $link = new Link ($image_url); 842 $link->addVar('hash', calculer_action_auteur("ajout_doc")); 843 $link->addVar('hash_id_auteur', $connect_id_auteur); 844 $link->addVar('ajout_doc', 'oui'); 845 $link->addVar('id_document', $id_document); 846 $link->addVar('mode', 'vignette'); 847 $link->addVar('ancre', $album); 848 afficher_upload($link, 849 $redirect_url.'&show_docs='.$id_document, 850 /* _T('info_remplacer_vignette') */'', 'portfolio', false); 851 } 852 echo fin_block(); 853 } 854 855 function afficher_documents_non_inclus($id_article, $type = "article", $flag_modif) { 856 global $couleur_foncee, $couleur_claire; 857 global $connect_id_auteur, $connect_statut; 858 global $id_doublons, $options; 859 global $spip_lang_left, $spip_lang_right; 860 861 $image_url = '../spip_image.php3?'; 862 if ($id_article) 863 $image_url .= 'id_article='.$id_article; 864 else if ($id_rubrique) 865 $image_url .= 'id_article='.$id_rubrique; 866 867 $redirect_url = new Link(); 868 if ($type == "rubrique") 869 $redirect_url->addVar('modifier_rubrique', 'oui'); 870 $redirect_url = $redirect_url->getUrl(); 871 872 // Afficher portfolio 873 ///////// 874 875 $query = "SELECT docs.* FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes ". 876 "WHERE l.id_$type=$id_article AND l.id_document=docs.id_document ". 877 "AND docs.mode='document'". 878 " AND docs.id_type=lestypes.id_type AND lestypes.extension IN ('gif', 'jpg', 'png')"; 879 880 if ($id_doublons['documents']) $query .= " AND docs.id_document NOT IN (0".$id_doublons['documents'].") "; 881 $query .= " ORDER BY docs.id_document"; 882 883 // 884 // recuperer tout le tableau des images du portfolio 885 // 886 $images_liees = spip_query($query); 887 $documents = array(); 888 while ($document = spip_fetch_array($images_liees)) 889 $documents[] = $document; 890 891 if (count($documents)) { 892 echo "<a name='portfolio'></a>"; 893 echo "<div> </div>"; 894 echo "<div style='background-color: $couleur_claire; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'><b>".majuscules(_T('info_portfolio'))."</b></div>"; 895 echo "<table width='100%' cellspacing='0' cellpadding='3'>"; 896 897 afficher_portfolio ($documents, $id_article, $type, 'portfolio', $flag_modif, $image_url, $redirect_url, $couleur_claire); 898 899 echo "</table>\n"; 900 } 901 902 903 904 //// Documents associes 905 $query = "SELECT * FROM spip_documents AS docs, spip_documents_".$type."s AS l ". 906 "WHERE l.id_$type=$id_article AND l.id_document=docs.id_document ". 907 "AND docs.mode='document'"; 908 909 if ($id_doublons['documents']) $query .= " AND docs.id_document NOT IN (0".$id_doublons['documents'].") "; 910 $query .= " ORDER BY docs.id_document"; 911 912 $documents_lies = spip_query($query); 913 914 $documents = array(); 915 while ($document = spip_fetch_array($documents_lies)) 916 $documents[] = $document; 917 918 if (count($documents)) { 919 echo "<a id='documents'></a>"; 920 echo "<div> </div>"; 921 echo "<div style='background-color: #aaaaaa; padding: 4px; color: black; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;' class='verdana2'><b>". majuscules(_T('info_documents')) ."</b></div>"; 922 echo "<table width='100%' cellspacing='0' cellpadding='5'>"; 923 924 afficher_portfolio ($documents, $id_article, $type, 'documents', $flag_modif, $image_url, $redirect_url, '#aaaaaa'); 925 926 echo "</table>"; 927 } 928 929 930 if (lire_meta("documents_$type") != 'non' AND $flag_modif) { 931 /// Ajouter nouveau document/image 932 933 echo "<p> </p>"; 934 935 echo "<div align='right'>"; 936 echo "<table width='50%' cellpadding=0 cellspacing=0 border=0><tr><td style='text-align: $spip_lang_left;'>"; 937 938 echo debut_cadre_relief("image-24.gif", false, "", _T('titre_joindre_document')); 939 940 $link = new Link ($image_url); 941 $link->addVar('hash', calculer_action_auteur("ajout_doc")); 942 $link->addVar('hash_id_auteur', $connect_id_auteur); 943 $link->addVar('ajout_doc', 'oui'); 944 $link->addVar('type', $type); 945 946 afficher_upload($link, $redirect_url, _T('info_telecharger_ordinateur'), '', true, true); 947 948 echo fin_cadre_relief(); 949 950 951 echo "</td></tr></table>"; 952 echo "</div>"; 953 } 954 955 } 956 957 958 // 959 // Afficher un document dans la colonne de gauche 960 // (edition des articles) 961 962 function afficher_documents_colonne($id_article, $type="article", $flag_modif = true) { 963 global $connect_id_auteur, $connect_statut; 964 global $couleur_foncee, $couleur_claire, $options; 965 global $clean_link; 966 967 $image_url = '../spip_image.php3'; 968 if ($id_article) $image_url .= '?id_article='.$id_article; 969 970 $id_doc_actif = $id_document; 971 972 # HACK!!! simule une mise en page pour affecter la globale id_doublons 973 # referencee dans afficher_case_document appelee plus loin : 974 # utile pour un affichage differencie des image "libres" et des images 975 # integrees via <imgXX|left> dans le texte 976 propre($GLOBALS['descriptif']." ".$GLOBALS['texte']." ".$GLOBALS['chapo']); 977 978 /// Ajouter nouvelle image 979 echo "<a id='images'></a>\n"; 980 $titre_cadre = _T('bouton_ajouter_image').aide("ins_img"); 981 debut_cadre_relief("image-24.gif", false, "creer.gif", $titre_cadre); 982 983 $link = new Link ($image_url); 984 $link->addVar('hash', calculer_action_auteur("ajout_doc")); 985 $link->addVar('hash_id_auteur', $connect_id_auteur); 986 $link->addVar('ajout_doc', 'oui'); 987 $link->addVar('mode', 'vignette'); 988 $link->addVar('type', $type); 989 afficher_upload($link, $redirect_url, _T('info_telecharger')); 990 991 fin_cadre_relief(); 992 993 994 //// Documents associes 995 $query = "SELECT docs.id_document FROM spip_documents AS docs, spip_documents_".$type."s AS l ". 996 "WHERE l.id_".$type."=$id_article AND l.id_document=docs.id_document ". 997 "AND docs.mode='document' ORDER BY docs.id_document"; 998 999 $res = spip_query($query); 1000 $documents_lies = array(); 1001 while ($row = spip_fetch_array($res)) 1002 $documents_lies[]= $row['id_document']; 1003 1004 if (count($documents_lies)) { 1005 $res = spip_query("SELECT DISTINCT id_vignette FROM spip_documents ". 1006 "WHERE id_document in (".join(',', $documents_lies).")"); 1007 while ($v = spip_fetch_array($res)) 1008 $vignettes[]= $v['id_vignette']; 1009 $docs_exclus = ereg_replace('^,','',join(',', $vignettes).','.join(',', $documents_lies)); 1010 1011 if ($docs_exclus) 1012 $docs_exclus = "AND l.id_document NOT IN ($docs_exclus) "; 1013 } 1014 1015 //// Images sans documents 1016 $query = "SELECT docs.id_document FROM spip_documents AS docs, spip_documents_".$type."s AS l ". 1017 "WHERE l.id_".$type."=$id_article AND l.id_document=docs.id_document ".$docs_exclus. 1018 "AND docs.mode='vignette' ORDER BY docs.id_document"; 1019 1020 $images_liees = spip_query($query); 1021 1022 echo "\n<p />"; 1023 while ($document = spip_fetch_array($images_liees)) { 1024 $id_document = $document['id_document']; 1025 afficher_case_document($id_document, $image_url, $redirect_url, $id_doc_actif == $id_document); 1026 } 1027 1028 1029 /// Ajouter nouveau document 1030 echo "<p> </p>\n"; 1031 echo "<a name='documents'></a>\n"; 1032 echo "<a name='portfolio'></a>\n"; 1033 if ($type == "article" AND lire_meta("documents_$type") != 'non') { 1034 $titre_cadre = _T('bouton_ajouter_document').aide("ins_doc"); 1035 1036 debut_cadre_enfonce("doc-24.gif", false, "creer.gif", $titre_cadre); 1037 $link = new Link ($image_url); 1038 $link->addVar('hash', calculer_action_auteur("ajout_doc")); 1039 $link->addVar('hash_id_auteur', $connect_id_auteur); 1040 $link->addVar('ajout_doc', 'oui'); 1041 $link->addVar('mode', 'document'); 1042 $link->addVar('type', $type); 1043 afficher_upload($link, $redirect_url, 1044 _T('info_telecharger_ordinateur')); 1045 fin_cadre_enfonce(); 1046 } 1047 1048 // Afficher les documents lies 1049 echo "<p />\n"; 1050 if ($type == "article") { 1051 if ($documents_lies) { 1052 reset($documents_lies); 1053 while (list(, $id_document) = each($documents_lies)) { 1054 afficher_case_document($id_document, $image_url, $redirect_url, $id_doc_actif == $id_document); 1055 } 1056 } 1057 } 1058 } 1059 1060 // 1061 // Affiche le raccourci <doc123|left> 1062 // et l'insere quand on le clique 1063 // 1064 function affiche_raccourci_doc($doc, $id, $align) { 1065 if ($align) { 1066 $pipe = "|$align"; 1067 1068 if ($GLOBALS['browser_barre']) 1069 $onclick = " ondblclick='barre_inserer(\"<$doc$id$pipe>\", document.formulaire.texte);' title=\"". entites_html(_T('double_clic_inserer_doc'))."\""; 1070 } else { 1071 $align='center'; 1072 } 1073 return "<div align='$align'$onclick><$doc$id$pipe></div>\n"; 1074 } 1075 1076 // 1077 // Afficher un document sous forme de ligne depliable 1078 // 1079 1080 function afficher_case_document($id_document, $image_url, $redirect_url = "", $deplier = false) { 1081 global $connect_id_auteur, $connect_statut; 1082 global $couleur_foncee, $couleur_claire; 1083 global $clean_link; 1084 global $options; 1085 global $id_doublons; 1086 global $spip_lang_left, $spip_lang_right; 1087 1088 1089 $flag_deplie = teste_doc_deplie($id_document); 1090 1091 $doublons = $id_doublons['documents'].","; 1092 1093 if (!$redirect_url) $redirect_url = $clean_link->getUrl(); 1094 1095 $document = spip_fetch_array(spip_query("SELECT * FROM spip_documents WHERE id_document = " . intval($id_document))); 1096 1097 $id_vignette = $document['id_vignette']; 1098 $id_type = $document['id_type']; 1099 $titre = $document['titre']; 1100 $descriptif = $document['descriptif']; 1101 $url = generer_url_document($id_document); 1102 $fichier = $document['fichier']; 1103 $largeur = $document['largeur']; 1104 $hauteur = $document['hauteur']; 1105 $taille = $document['taille']; 1106 $mode = $document['mode']; 1107 if (!$titre) { 1108 $titre_fichier = _T('info_sans_titre_2'); 1109 $titre_fichier .= " <small>(".ereg_replace("^[^\/]*\/[^\/]*\/","",$fichier).")</small>"; 1110 } 1111 1112 $result = spip_query("SELECT * FROM spip_types_documents WHERE id_type=$id_type"); 1113 if ($type = @spip_fetch_array($result)) { 1114 $type_extension = $type['extension']; 1115 $type_inclus = $type['inclus']; 1116 $type_titre = $type['titre']; 1117 } 1118 1119 // 1120 // Afficher un document 1121 // 1122 1123 if ($mode == 'document') { 1124 $titre_cadre = lignes_longues(typo($titre).typo($titre_fichier), 30); 1125 debut_cadre_enfonce("doc-24.gif", false, "", $titre_cadre); 1126 1127 echo "<div style='float: $spip_lang_left;'>"; 1128 $block = "document $id_document"; 1129 if ($flag_deplie) echo bouton_block_visible($block); 1130 else echo bouton_block_invisible($block); 1131 echo "</div>"; 1132 1133 1134 // 1135 // Affichage de la vignette 1136 // 1137 echo "<div align='center'>\n"; 1138 echo document_et_vignette($document, $url, true); 1139 echo "</div>\n"; 1140 1141 1142 // Affichage du raccourci <doc...> correspondant 1143 if (!ereg(",$id_document,", $doublons)) { 1144 echo "<div style='padding:2px;'><font size='1' face='arial,helvetica,sans-serif'>"; 1145 if ($options == "avancees" AND ($type_inclus == "embed" OR $type_inclus == "image") AND $largeur > 0 AND $hauteur > 0) { 1146 echo "<b>"._T('info_inclusion_vignette')."</b><br />"; 1147 } 1148 echo "<font color='333333'>" 1149 . affiche_raccourci_doc('doc', $id_document, 'left') 1150 . affiche_raccourci_doc('doc', $id_document, 'center') 1151 . affiche_raccourci_doc('doc', $id_document, 'right') 1152 . "</font>\n"; 1153 echo "</font></div>"; 1154 1155 if ($options == "avancees" AND ($type_inclus == "embed" OR $type_inclus == "image") AND $largeur > 0 AND $hauteur > 0) { 1156 echo "<div style='padding:2px;'><font size='1' face='arial,helvetica,sans-serif'>"; 1157 echo "<b>"._T('info_inclusion_directe')."</b></br>"; 1158 echo "<font color='333333'>" 1159 . affiche_raccourci_doc('emb', $id_document, 'left') 1160 . affiche_raccourci_doc('emb', $id_document, 'center') 1161 . affiche_raccourci_doc('emb', $id_document, 'right') 1162 . "</font>\n"; 1163 echo "</font></div>"; 1164 } 1165 } 1166 1167 // 1168 // Edition des champs 1169 // 1170 1171 if ($flag_deplie) 1172 echo debut_block_visible($block); 1173 else 1174 echo debut_block_invisible($block); 1175 1176 if (ereg(",$id_document,", $doublons)) { 1177 echo "<div style='padding:2px;'><font size='1' face='arial,helvetica,sans-serif'>"; 1178 echo affiche_raccourci_doc('doc', $id_document, ''); 1179 echo "</font></div>"; 1180 } 1181 1182 echo "<div class='verdana1' style='color: $couleur_foncee; border: 1px solid $couleur_foncee; padding: 5px; margin-top: 3px; text-align: left; background-color: white;'>"; 1183 if (strlen($descriptif) > 0) echo propre($descriptif)."<br />"; 1184 1185 1186 if ($options == "avancees") { 1187 echo "<div style='color: black;'>"; 1188 if ($type_titre){ 1189 echo "$type_titre"; 1190 } else { 1191 echo _T('info_document').' '.majuscules($type_extension); 1192 } 1193 1194 if ($largeur * $hauteur) 1195 echo ", "._T('info_largeur_vignette', 1196 array('largeur_vignette' => $largeur, 1197 'hauteur_vignette' => $hauteur)); 1198 1199 echo ', '.taille_en_octets($taille); 1200 echo "</div>"; 1201 } 1202 1203 $link = new Link($redirect_url); 1204 $link->addVar('modif_document', 'oui'); 1205 $link->addVar('id_document', $id_document); 1206 $link->addVar('show_docs', $id_document); 1207 echo $link->getForm('POST'); 1208 1209 echo "<b>"._T('entree_titre_document')."</b><br />\n"; 1210 echo "<input type='text' name='titre_document' class='formo' value=\"".entites_html($titre)."\" size='40'><br />\n"; 1211 1212 if ($descriptif OR $options == "avancees") { 1213 echo "<b>"._T('info_description_2')."</b><br />\n"; 1214 echo "<textarea name='descriptif_document' rows='4' class='formo' cols='*' wrap='soft'>"; 1215 echo entites_html($descriptif); 1216 echo "</textarea>\n"; 1217 } 1218 1219 if ($options == "avancees") 1220 afficher_formulaire_taille($document, $type_inclus); 1221 1222 echo "<div align='".$GLOBALS['spip_lang_right']."'>"; 1223 echo "<input TYPE='submit' class='fondo' style='font-size:9px;' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'>"; 1224 echo "</div>"; 1225 echo "</form>"; 1226 1227 $link_supp = new Link ($image_url); 1228 $link_supp->addVar('redirect', $redirect_url); 1229 $link_supp->addVar('hash', calculer_action_auteur("supp_doc ".$id_document)); 1230 $link_supp->addVar('hash_id_auteur', $connect_id_auteur); 1231 $link_supp->addVar('doc_supp', $id_document); 1232 $link_supp->addVar('ancre', 'documents'); 1233 1234 echo "</div>"; 1235 echo fin_block(); 1236 // Fin edition des champs 1237 1238 echo "<p /><div align='center'>"; 1239 icone_horizontale(_T('icone_supprimer_document'), $link_supp->getUrl(), "doc-24.gif", "supprimer.gif"); 1240 echo "</div>"; 1241 1242 1243 // Bloc edition de la vignette 1244 if ($options == 'avancees') { 1245 echo "<div class='verdana1' style='color: $couleur_foncee; border: 1px solid $couleur_foncee; padding: 5px; margin-top: 3px;'>"; 1246 # 'extension', a ajouter dans la base quand on supprimera spip_types_documents 1247 switch ($id_type) { 1248 case 1: 1249 $document['extension'] = "jpg"; 1250 break; 1251 case 2: 1252 $document['extension'] = "png"; 1253 break; 1254 case 3: 1255 $document['extension'] = "gif"; 1256 break; 1257 } 1258 bloc_gerer_vignette($document, $image_url, $redirect_url, 'documents'); 1259 echo "</div>\n"; 1260 } 1261 1262 fin_cadre_enfonce(); 1263 } 1264 1265 // 1266 // Afficher une image inserable dans l'article 1267 // 1268 else if ($mode == 'vignette') { 1269 $block = "image $id_document"; 1270 $titre_cadre = lignes_longues(typo($titre).typo($titre_fichier), 30); 1271 1272 debut_cadre_relief("image-24.gif", false, "", $titre_cadre); 1273 1274 echo "<div style='float: $spip_lang_left;'>"; 1275 if ($flag_deplie) echo bouton_block_visible($block); 1276 else echo bouton_block_invisible($block); 1277 echo "</div>"; 1278 1279 1280 // 1281 // Preparer le raccourci a afficher sous la vignette ou sous l'apercu 1282 // 1283 $raccourci_doc = "<div style='padding:2px;'> 1284 <font size='1' face='arial,helvetica,sans-serif'>"; 1285 if (strlen($descriptif) > 0 OR strlen($titre) > 0) 1286 $doc = 'doc'; 1287 else 1288 $doc = 'img'; 1289 if (!ereg(",$id_document,", $doublons)) { 1290 $raccourci_doc .= 1291 affiche_raccourci_doc($doc, $id_document, 'left') 1292 . affiche_raccourci_doc($doc, $id_document, 'center') 1293 . affiche_raccourci_doc($doc, $id_document, 'right'); 1294 } else { 1295 $raccourci_doc .= affiche_raccourci_doc($doc, $id_document, '');; 1296 } 1297 $raccourci_doc .= "</font></div>\n"; 1298 1299 // 1300 // Afficher un apercu (pour les images) 1301 // 1302 if ($type_inclus == 'image') { 1303 echo "<div style='text-align: center; padding: 2px;'>\n"; 1304 echo document_et_vignette($document, $url, true); 1305 echo "</div>\n"; 1306 if (strlen($descriptif)>0) 1307 echo "<font face='Verdana,Arial,Sans,sans-serif' size='2'>" 1308 . propre($descriptif) 1309 . "</font>"; 1310 1311 if (!ereg(",$id_document,", $doublons)) 1312 echo $raccourci_doc; 1313 } 1314 1315 if ($flag_deplie) echo debut_block_visible($block); 1316 else echo debut_block_invisible($block); 1317 1318 if (ereg(",$id_document,", $doublons)) 1319 echo $raccourci_doc; 1320 1321 echo "\n<div class='verdana1' align='center'>", 1322 _T('info_largeur_vignette', array('largeur_vignette' => $largeur, 'hauteur_vignette' => $hauteur)), 1323 "</div>\n"; 1324 1325 $link = new Link($redirect_url); 1326 $link->addVar('modif_document', 'oui'); 1327 $link->addVar('id_document', $id_document); 1328 $link->addVar('show_docs', $id_document); 1329 echo $link->getForm('POST'); 1330 1331 echo "<div class='verdana1' style='color: #999999; border: 1px solid #999999; padding: 5px; margin-top: 3px; text-align: left; background-color: #eeeeee;'>"; 1332 echo "<b>"._T('entree_titre_image')."</b><br />\n"; 1333 echo "<input type='text' name='titre_document' class='formo' value=\"".entites_html($titre)."\" size='40'><br />"; 1334 1335 if ($descriptif OR $options == "avancees") { 1336 echo "<b>"._T('info_description_2')."</b><br />\n"; 1337 echo "<textarea name='descriptif_document' rows='4' class='formo' cols='*' style='font-size:9px;' wrap='soft'>"; 1338 echo entites_html($descriptif); 1339 echo "</textarea>\n"; 1340 } 1341 1342 echo "<div align='".$GLOBALS['spip_lang_right']."'>"; 1343 echo "<input class='fondo' style='font-size: 9px;' TYPE='submit' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'>"; 1344 echo "</div>"; 1345 echo "</div>"; 1346 echo "</form>"; 1347 1348 echo "<center>"; 1349 $link = new Link ($image_url); 1350 $link->addVar('redirect', $redirect_url); 1351 $link->addVar('hash', calculer_action_auteur("supp_doc ".$id_document)); 1352 $link->addVar('hash_id_auteur', $connect_id_auteur); 1353 $link->addVar('doc_supp', $id_document); 1354 $link->addVar('ancre', 'images'); 1355 icone_horizontale (_T('icone_supprimer_image'), $link->getUrl(), "image-24.gif", "supprimer.gif"); 1356 echo "</center>\n"; 1357 1358 1359 echo fin_block(); 1360 1361 fin_cadre_relief(); 1362 } 1363 } 1364 1365 function teste_doc_deplie($id_document) { 1366 global $show_docs; 1367 static $deplies; 1368 1369 if (!$deplies) 1370 $deplies = split('-',$show_docs); 1371 1372 return in_array($id_document, $deplies); 1373 } 1374 1375 1376 // Mettre a jour la description du document postee par le redacteur 1377 // TODO: pour le moment cette fonction ne sait traiter qu'un document... 1378 function maj_documents ($id_objet, $type) { 1379 global $_POST; 1380 1381 if ($id_objet 1382 AND $id_document = intval($_POST['id_document']) 1383 AND $_POST['modif_document'] == 'oui') { 1384 1385 // "securite" : verifier que le document est bien lie a l'objet 1386 $result_doc = spip_query("SELECT * FROM spip_documents_".$type."s 1387 WHERE id_document=".$id_document." 1388 AND id_".$type." = $id_objet"); 1389 if (spip_num_rows($result_doc) > 0) { 1390 $titre_document = addslashes(corriger_caracteres( 1391 $_POST['titre_document'])); 1392 $descriptif_document = addslashes(corriger_caracteres( 1393 $_POST['descriptif_document'])); 1394 $query = "UPDATE spip_documents 1395 SET titre='$titre_document', descriptif='$descriptif_document'"; 1396 1397 // taille du document (cas des embed) 1398 if ($largeur_document = intval($_POST['largeur_document']) 1399 AND $hauteur_document = intval($_POST['hauteur_document'])) 1400 $query .= ", largeur='$largeur_document', 1401 hauteur='$hauteur_document'"; 1402 1403 $query .= " WHERE id_document=".$_POST['id_document']; 1404 spip_query($query); 1405 1406 1407 // Date du document (uniquement dans les rubriques) 1408 if ($_POST['jour_doc']) { 1409 if ($_POST['annee_doc'] == "0000") 1410 $_POST['mois_doc'] = "00"; 1411 if ($_POST['mois_doc'] == "00") 1412 $_POST['jour_doc'] = "00"; 1413 $date = $_POST['annee_doc'].'-' 1414 .$_POST['mois_doc'].'-'.$_POST['jour_doc']; 1415 1416 if (preg_match('/^[0-9-]+$/', $date)) { 1417 spip_query("UPDATE spip_documents 1418 SET date='$date' 1419 WHERE id_document=$id_document"); 1420 1421 // Changement de date, ce qui nous oblige a : 1422 calculer_rubriques(); 1423 } 1424 } 1425 1426 } 1427 1428 // Demander l'indexation du document 1429 include_ecrire ('inc_index.php3'); 1430 marquer_indexer('document', $id_document); 1431 1432 } 1433 } 1434 1435 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Thu Feb 22 22:27:47 2007 | par Balluche grâce à PHPXref 0.7 |