[ Index ] |
|
Code source de SPIP Agora 1.4 |
1 <?php 2 /***************************************************** 3 * This file is part of Agora, web based content management system. 4 * 5 * Agora is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; version 2 of the License. 8 * 9 * Agora is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details (file "COPYING"). 13 * 14 * Copyright © Arnaud Martin, Antoine Pitrou et Philippe Rivière. 15 * List of authors detailed in "copyright_fr.html" file. 16 * E-mail : agora@sig.premier-ministre.gouv.fr 17 * Web site : http://www.agora.gouv.fr 18 *****************************************************/ 19 //////////////////////////////////////////////////////////////////////////////////// 20 // Pour utiliser les champs "extra", il faut installer dans le fichier 21 // ecrire/mes_options.php un tableau definissant les champs en question, 22 // pour chaque type d'objet (article, rubrique, breve, auteur ou mot) que 23 // l'on veut ainsi etendre ; utiliser dans l'espace public avec 24 // [(#EXTRA|extra{"nom_du_champ"})] 25 26 /* 27 28 // 29 // Definition de tous les extras possibles 30 // 31 32 $GLOBALS['champs_extra'] = Array ( 33 'auteurs' => Array ( 34 "sexe" => "ligne|brut", 35 "age" => "ligne|propre|Âge du capitaine", 36 "biblio" => "bloc|propre|Bibliographie" 37 ), 38 39 'articles' => Array ( 40 "prix" => "ligne|typo|PRIX", 41 "isbn" => "ligne|typo|ISBN" 42 ) 43 ); 44 */ 45 46 /* 47 48 // On peut optionnellement vouloir affiner les extras : 49 // - pour les articles/rubriques/breves en fonction du secteur ou de la rubrique ; 50 // L'héritage des champs EXTRA n'est possible qu'à partir d'une définition par secteur. Il est par contre possible de redéfinir pour une rubrique donnee des extras particulier. Dans ce cas cette rubrique n'herite plus des extras definis par le secteur 51 // - pour les auteurs en fonction du statut 52 // - pour les mots-cles en fonction du groupe de mots 53 54 $GLOBALS['champs_extra_proposes'] = Array ( 55 'auteurs' => Array ( 56 // tous : par defaut 57 'tous' => 'age|sexe', 58 // une biblio pour les admin (statut='0minirezo') 59 '0minirezo' => 'age|sexe|biblio' 60 ), 61 62 'articles' => Array ( 63 // tous : par defaut 64 'tous' => '', 65 // 1 : id_secteur=1; 66 1 => 'prix', 67 // 4 : id_rubrique=4; 68 4 => 'isbn', 69 // -5 : id_rubrique-5; 70 '-5' => 'isbn|prix' 71 ) 72 ); 73 74 */ 75 76 //////////////////////////////////////////////////////////////////////////////////// 77 78 // 79 // Ce fichier ne sera execute qu'une fois 80 if (defined("_ECRIRE_INC_EXTRA")) 81 return; 82 83 define("_ECRIRE_INC_EXTRA", "1"); 84 85 // a partir de la liste des champs, generer la liste des input 86 function extra_saisie ($extra, $type, $ensemble = '') { 87 $extra = unserialize($extra); 88 89 // quels sont les extras de ce type d'objet 90 if (!$champs = $GLOBALS['champs_extra'][$type]) 91 $champs = array(); 92 93 // prendre en compte, eventuellement, les champs presents dans la base 94 // mais oublies dans mes_options. 95 if (is_array($extra)) 96 while (list($key, ) = each($extra)) 97 if (!$champs[$key]) 98 $champs[$key] = "masque||($key?)"; 99 100 // quels sont les extras proposes... 101 // ... si l'ensemble est connu 102 /************* Modification elebescond@clever-age.com ****************/ 103 if ($type != 'auteurs' && $type != 'mots') { 104 $rubriqueMetier = &recuperer_instance_rubrique(); 105 $loadOK = $rubriqueMetier->load($ensemble); 106 if (!PEAR::isError($loadOK)) { 107 $id_secteur = $rubriqueMetier->getSecteurId(); 108 } 109 } 110 111 $heritage = false; 112 113 if ($type != 'mots' && $type != 'auteurs') { 114 $id_rubrique = $ensemble; 115 $rubriqueMetier = &recuperer_instance_rubrique(); 116 while ($id_rubrique > 0) { 117 $loadOK = $rubriqueMetier->load($id_rubrique); 118 $id_rubrique = $rubriqueMetier->getParentId(); 119 if (!PEAR::isError($loadOK)) { 120 if (isset($GLOBALS['champs_extra_proposes'][$type]['-' . $id_rubrique])) { 121 $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type]['-' . $id_rubrique]); 122 $id_rubrique = 0; 123 $heritage = true; 124 } 125 } 126 } 127 } 128 129 //1er cas les Extras sont définis pour la rubrique courante. 130 if ($ensemble && isset($GLOBALS['champs_extra_proposes'][$type][$ensemble])) 131 $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type][$ensemble]); 132 //Parcours de la hierarchie à la recherche d'héritage d'EXTRA (-xx) 133 else if ($heritage) { } 134 //2eme cas les Extras sont définis pour le secteur courant. 135 else if (isset($GLOBALS['champs_extra_proposes'][$type][$id_secteur]) && $type != 'mots' && $type != 'auteurs') { 136 $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type][$id_secteur]); 137 } 138 // ... sinon, les champs proposes par defaut 139 else if (isset($GLOBALS['champs_extra_proposes'][$type]['tous'])) { 140 $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type]['tous']); 141 } 142 // sinon tous les champs extra du type 143 else { 144 $champs_proposes = array(); 145 reset($champs); 146 while (list($ch, ) = each($champs)) 147 $champs_proposes[] = $ch; 148 } 149 /* 150 if ($ensemble && isset($GLOBALS['champs_extra_proposes'][$type][$ensemble])) 151 $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type][$ensemble]); 152 // ... sinon, les champs proposes par defaut 153 else if (isset($GLOBALS['champs_extra_proposes'][$type]['tous'])) { 154 $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type]['tous']); 155 } 156 157 // sinon tous les champs extra du type 158 else { 159 $champs_proposes = Array(); 160 reset($champs); 161 while (list($ch, ) = each($champs)) $champs_proposes[] = $ch; 162 } 163 */ 164 /************* Fin modification elebescond@clever-age.com ****************/ 165 // bug explode 166 if ($champs_proposes == explode('|', '')) 167 $champs_proposes = array(); 168 169 // maintenant, on affiche les formulaires pour les champs renseignes dans $extra 170 // et pour les champs proposes 171 reset($champs_proposes); 172 173 while (list(, $champ) = each($champs_proposes)) { 174 $desc = $champs[$champ]; 175 list($form, $filtre, $prettyname) = explode("|", $desc); 176 177 if (!$prettyname) 178 $prettyname = ucfirst($champ); 179 180 $affiche .= "<b>$prettyname :</b><br />"; 181 182 switch ($form) { 183 case "bloc": 184 case "block": 185 $affiche .= "<textarea name='suppl_$champ' class='forml' rows='10' cols='40'>" . entites_html($extra[$champ]). "</textarea>\n"; 186 break; 187 188 case "masque": 189 $affiche .= "<font color='#555555'>" . interdire_scripts($extra[$champ]). "</font>\n"; 190 break; 191 192 case "ligne": 193 case "line": 194 default: 195 $affiche .= "<input type='text' name='suppl_$champ' class='forml'\n"; 196 $affiche .= " value=\"" . entites_html($extra[$champ]). "\" size='40' />\n"; 197 break; 198 } 199 $affiche .= "<p>\n"; 200 } 201 202 if ($affiche) { 203 debut_cadre_enfonce(); 204 echo $affiche; 205 fin_cadre_enfonce(); 206 } 207 } 208 209 // recupere les valeurs postees pour reconstituer l'extra 210 function extra_recup_saisie ($type) { 211 $champs = $GLOBALS['champs_extra'][$type]; 212 213 if (is_array($champs)) { 214 $extra = array(); 215 216 while (list($champ, ) = each($champs)) 217 $extra[$champ] = $GLOBALS["suppl_$champ"]; 218 return serialize($extra); 219 } 220 else 221 return ''; 222 } 223 224 // Retourne la liste des filtres a appliquer pour un champ extra particulier 225 function extra_filtres ($type, $nom_champ) { 226 $champ = $GLOBALS['champs_extra'][$type][$nom_champ]; 227 228 if (!$champ) 229 return array(); 230 231 ; 232 list(, $filtre, ) = explode("|", $champ); 233 234 if ($filtre && $filtre != 'brut' && function_exists($filtre)) 235 return array($filtre); 236 237 return array(); 238 } 239 240 function extra_champ_valide ($type, $nom_champ) { 241 return isset($GLOBALS['champs_extra'][$type][$nom_champ]); 242 } 243 244 // a partir de la liste des champs, generer l'affichage 245 function extra_affichage ($extra, $type) { 246 $extra = unserialize($extra); 247 248 if (!is_array($extra)) 249 return; 250 251 $champs = $GLOBALS['champs_extra'][$type]; 252 253 while (list($nom, $contenu) = each($extra)) { 254 list($type, $filtre, $prettyname) = explode("|", $champs[$nom]); 255 256 if ($filtre != 'brut' AND function_exists($filtre)) 257 $contenu = $filtre($contenu); 258 259 if (!$prettyname) 260 $prettyname = ucfirst($nom); 261 if ($contenu) 262 $affiche .= "<div><strong>$prettyname :</strong> " . interdire_scripts($contenu). "<br /></div>\n"; 263 } 264 265 if ($affiche) { 266 debut_cadre_enfonce(); 267 echo $affiche; 268 fin_cadre_enfonce(); 269 } 270 } 271 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Feb 24 14:40:03 2007 | par Balluche grâce à PHPXref 0.7 |