[ Index ]
 

Code source de SPIP 1.8.3

Accédez au Source d'autres logiciels libres | Soutenez Angelica Josefina !

title

Body

[fermer]

/ecrire/ -> inc_documents.php3 (source)

   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\">&nbsp; &nbsp; &nbsp; &nbsp; $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 " &#215; <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')."&nbsp;:<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;'>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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 &lt;doc123|left&gt;
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(\"&lt;$doc$id$pipe&gt;\", document.formulaire.texte);' title=\"". entites_html(_T('double_clic_inserer_doc'))."\"";
1070      } else {
1071          $align='center';
1072      }
1073      return "<div align='$align'$onclick>&lt;$doc$id$pipe&gt;</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  ?>


Généré le : Thu Feb 22 22:27:47 2007 par Balluche grâce à PHPXref 0.7