[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/inc/ -> chercher_rubrique.php (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2007                                                *
   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  if (!defined("_ECRIRE_INC_VERSION")) return;
  14  
  15  define('_SPIP_SELECT_RUBRIQUES', 20); /* mettre 100000 pour desactiver ajax */
  16  
  17  //
  18  // Selecteur de rubriques pour l'espace prive
  19  // En entree :
  20  // - l'id_rubrique courante (0 si NEW)
  21  // - le type d'objet a placer (une rubrique peut aller a la racine
  22  //    mais pas dans elle-meme, les articles et sites peuvent aller
  23  //    n'importe ou (defaut), et les breves dans les secteurs.
  24  // $idem : en mode rubrique = la rubrique soi-meme
  25  // http://doc.spip.org/@inc_chercher_rubrique_dist
  26  function inc_chercher_rubrique_dist ($id_rubrique, $type, $restreint, $idem=0) {
  27      // Mode sans Ajax :
  28      // - soit parce que le cookie ajax n'est pas la
  29      // - soit parce qu'il y a peu de rubriques
  30      if (_SPIP_AJAX < 1
  31      OR $type == 'breve'
  32      OR spip_num_rows(
  33      spip_query("SELECT id_rubrique FROM spip_rubriques LIMIT ".intval(_SPIP_SELECT_RUBRIQUES+1))) < _SPIP_SELECT_RUBRIQUES)
  34          return selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem);
  35  
  36      else
  37          return selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem);
  38  
  39  }
  40  
  41  // compatibilite pour extensions qui utilisaient l'ancien nom
  42  $GLOBALS['selecteur_rubrique'] = 'inc_chercher_rubrique_dist';
  43  
  44  // http://doc.spip.org/@style_menu_rubriques
  45  function style_menu_rubriques($i) {
  46      global $browser_name, $browser_version;
  47      global $couleur_claire, $spip_lang_left;
  48  
  49      $espace = '';
  50      if (eregi("mozilla", $browser_name)) {
  51          $style = "padding-$spip_lang_left: 16px; "
  52          . "margin-$spip_lang_left: ".(($i-1)*16)."px;";
  53      } else {
  54          $style = '';
  55          for ($count = 0; $count <= $i; $count ++)
  56              $espace .= "&nbsp;&nbsp;&nbsp;&nbsp;";
  57      }
  58      switch ($i) {
  59          case 1:
  60              $espace= "";
  61              $style .= "font-weight: bold;";
  62              break;
  63          case 2:
  64              $style .= "color: #202020;";
  65              break;
  66          case 3:
  67              $style .= "color: #404040;";
  68              break;
  69          case 4:
  70              $style .= "color: #606060;";
  71              break;
  72          case 5:
  73              $style .= "color: #808080;";
  74              break;
  75          default:
  76              $style .= "color: #A0A0A0;";
  77              break;
  78      }
  79  
  80      if ($i==1) {
  81          $style .= "background-image: url(" . _DIR_IMG_PACK. "secteur-12.gif);";
  82          $style .= "background-color: $couleur_claire;";
  83          $style .= "font-weight: bold;";
  84      }
  85      else if ($i==2) {
  86          $style .= "border-bottom: 1px solid $couleur_claire;";
  87          $style .= "font-weight: bold;";
  88      }
  89  
  90      if ($style) $style = " style='$style'";
  91  
  92      return array($style,$espace);
  93  }
  94  
  95  // http://doc.spip.org/@sous_menu_rubriques
  96  function sous_menu_rubriques($id_rubrique, $root, $niv, &$data, &$enfants, $exclus, $restreint, $type) {
  97      global $browser_name, $browser_version;
  98      static $decalage_secteur;
  99  
 100      // Si on a demande l'exclusion ne pas descendre dans la rubrique courante
 101      if ($exclus > 0
 102      AND $root == $exclus) return '';
 103  
 104      // en fonction du niveau faire un affichage plus ou moins kikoo
 105  
 106      // selected ?
 107      $selected = ($root == $id_rubrique) ? ' selected="selected"' : '';
 108  
 109      // class='selec_rub' sauf pour contourner le bug MSIE / MacOs 9.0
 110      if (!($browser_name == "MSIE" AND floor($browser_version) == "5"))
 111          $class = " class='selec_rub'";
 112  
 113      // le style en fonction de la profondeur
 114      list($style,$espace) = style_menu_rubriques($niv);
 115  
 116      // creer l'<option> pour la rubrique $root
 117      $r = '';
 118      if (isset($data[$root])) # pas de racine sauf pour les rubriques
 119      {
 120          $r .= "<option$selected value='$root'$class$style>$espace"
 121          .$data[$root]
 122          .'</option>'."\n";
 123      }
 124      
 125      // et le sous-menu pour ses enfants
 126      $sous = '';
 127      if (isset($enfants[$root]))
 128          foreach ($enfants[$root] as $sousrub)
 129              $sous .= sous_menu_rubriques($id_rubrique, $sousrub,
 130                  $niv+1, $data, $enfants, $exclus, $restreint, $type);
 131  
 132      // si l'objet a deplacer est publie, verifier qu'on a acces aux rubriques
 133      if ($restreint AND !autoriser('publierdans','rubrique',$root))
 134          return $sous;
 135  
 136      // sauter un cran pour les secteurs (sauf premier)
 137      if ($niv == 1
 138      AND $decalage_secteur++
 139      AND $type != 'breve')
 140          $r = "<option value='$root'></option>\n".$r;
 141  
 142      // et voila le travail
 143      return $r.$sous;
 144  }
 145  
 146  // Le selecteur de rubriques en mode classique (menu)
 147  // http://doc.spip.org/@selecteur_rubrique_html
 148  function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem=0) {
 149      $data = array();
 150      if ($type == 'rubrique')
 151          $data[0] = _T('info_racine_site');
 152      if ($type == 'auteur')
 153          $data[0] = '&nbsp;'; # premier choix = neant (rubriques restreintes)
 154  
 155      //
 156      // creer une structure contenant toute l'arborescence
 157      //
 158  
 159      $q = spip_query("SELECT id_rubrique, id_parent, titre, statut, lang, langue_choisie FROM spip_rubriques " . ($type == 'breve' ?  'WHERE id_parent=0 ' : '') . "ORDER BY 0+titre,titre");
 160      while ($r = spip_fetch_array($q)) {
 161          if (autoriser('voir','rubrique',$r['id_rubrique'])){
 162              // titre largeur maxi a 50
 163              $titre = couper(supprimer_tags(typo(extraire_multi($r['titre']
 164              )))." ", 50);
 165              if ($GLOBALS['meta']['multi_rubriques'] == 'oui'
 166              AND ($r['langue_choisie'] == "oui" OR $r['id_parent'] == 0))
 167                  $titre .= ' ['.traduire_nom_langue($r['lang']).']';
 168              $data[$r['id_rubrique']] = $titre;
 169              $enfants[$r['id_parent']][] = $r['id_rubrique'];
 170              if ($id_rubrique == $r['id_rubrique']) $id_parent = $r['id_parent'];
 171          }
 172      }
 173  
 174  
 175      $opt = sous_menu_rubriques($id_rubrique,0, 0,$data,$enfants,$idem, $restreint, $type);
 176      $att = " id='id_parent' name='id_parent'\nstyle='font-size: 90%; width: 99%; max-height: 24px;' class='verdana1'";
 177  
 178      if (preg_match(',^<option[^<>]*value=.(\d*).[^<>]*>([^<]*)</option>$,',$opt,$r))
 179        $r = "<input$att type='hidden' value='" . $r[1] . "' />" . $r[2] ;
 180      else 
 181        $r = "<select$att size='1'>\n$opt</select>\n";
 182  
 183      # message pour neuneus (a supprimer ?)
 184  #    if ($type != 'auteur' AND $type != 'breve')
 185  #        $r .= "\n<br />"._T('texte_rappel_selection_champs');
 186  
 187      return $r;
 188  }
 189  
 190  // http://doc.spip.org/@selecteur_rubrique_ajax
 191  function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0) {
 192  
 193         ## $restreint indique qu'il faut limiter les rubriques affichees
 194         ## aux rubriques editables par l'admin restreint... or, ca ne marche pas.
 195         ## Pour la version HTML c'est bon (cf. ci-dessus), mais pour l'ajax...
 196         ## je laisse ca aux specialistes de l'ajax & des admins restreints
 197         ## note : toutefois c'est juste un pb d'interface, car question securite
 198         ## la verification est faite a l'arrivee des donnees (Fil)
 199  
 200      if ($id_rubrique)
 201          list($titre) = spip_fetch_array(spip_query("SELECT titre FROM spip_rubriques WHERE id_rubrique=$id_rubrique"), SPIP_NUM);
 202      else if ($type == 'auteur')
 203          $titre = '&nbsp;';
 204      else
 205          $titre = _T('info_racine_site');
 206  
 207      $titre = str_replace('&amp;', '&', entites_html(textebrut(typo($titre))));
 208      $init = " disabled='disabled' type='text' value=\"" . $titre . '" style=\'width:300px;\'';
 209  
 210      $url = generer_url_ecrire('selectionner',"id=$id_rubrique&type=$type" . (!$idem ? '' : ("&exclus=$idem&racine=" . ($restreint ? 'non' : 'oui'))));
 211  
 212      return construire_selecteur($url, '', 'selection_rubrique', 'id_parent', $init, $id_rubrique);
 213  }
 214  
 215  // construit un bloc comportant une icone clicable avec image animee a cote
 216  // pour charger en Ajax du code a mettre sous cette icone.
 217  // Attention: changer le onclick si on change le code Html.
 218  // (la fonction JS charger_node ignore l'attribut id qui ne sert en fait pas;
 219  // getElement en mode Ajax est trop couteux).
 220  
 221  // http://doc.spip.org/@construire_selecteur
 222  function construire_selecteur($url, $js, $idom, $name, $init='', $id=0)
 223  {
 224      $icone = ($idom == 'selection_auteur') ? 'message.gif' : 'loupe.png';
 225      return     "<table width='100%'><tr><td style='width: 45px'><a onclick=\""
 226      .  $js
 227      . "return charger_node_url_si_vide('"
 228      . $url
 229      . "', this.parentNode.parentNode.parentNode.parentNode.nextSibling, this.nextSibling,'',event)\"><img src='"
 230      . _DIR_IMG_PACK
 231      . $icone
 232      . "' style='vertical-align: middle;' alt=' ' /></a><img src='"
 233      . _DIR_IMG_PACK
 234      . "searching.gif' id='img_"
 235      .  $idom
 236      . "' style='visibility: hidden;' alt='*' /></td><td>"
 237      . "<input id='titreparent' name='titreparent'"
 238      . $init
 239      . " />" 
 240      . "<input type='hidden' id='$name' name='$name' value='"
 241      . $id
 242      . "' /></td></tr></table><div id='"
 243      . $idom
 244      . "' style='display: none;'></div>";
 245  }
 246  ?>


Généré le : Wed Nov 21 10:20:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics