[ Index ] |
|
Code source de SPIP 1.9.2c |
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 .= " "; 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] = ' '; # 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 = ' '; 204 else 205 $titre = _T('info_racine_site'); 206 207 $titre = str_replace('&', '&', 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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 10:20:27 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |