Array ( "sexe" => "ligne|brut", "age" => "ligne|propre|Âge du capitaine", "biblio" => "bloc|propre|Bibliographie" ), 'articles' => Array ( "isbn" => "ligne|typo|ISBN" ) ); */ /* // On peut optionnellement vouloir affiner les extras : // - pour les articles/rubriques/breves en fonction du secteur ; // - pour les auteurs en fonction du statut // - pour les mots-cles en fonction du groupe de mots $GLOBALS['champs_extra_proposes'] = Array ( 'auteurs' => Array ( // tous : par defaut 'tous' => 'age|sexe', // une biblio pour les admin (statut='0minirezo') '0minirezo' => 'age|sexe|biblio' ), 'articles' => Array ( // tous : par defaut 'tous' => '', // 1 : id_secteur=1; 1 => 'isbn' ) ); */ //////////////////////////////////////////////////////////////////////////////////// // // Ce fichier ne sera execute qu'une fois if (defined("_ECRIRE_INC_EXTRA")) return; define("_ECRIRE_INC_EXTRA", "1"); // a partir de la liste des champs, generer la liste des input function extra_saisie($extra, $type, $ensemble='') { $extra = unserialize($extra); // quels sont les extras de ce type d'objet if (!$champs = $GLOBALS['champs_extra'][$type]) $champs = Array(); // prendre en compte, eventuellement, les champs presents dans la base // mais oublies dans mes_options. if (is_array($extra)) while (list($key,) = each($extra)) if (!$champs[$key]) $champs[$key] = "masque||($key?)"; // quels sont les extras proposes... // ... si l'ensemble est connu if ($ensemble && isset($GLOBALS['champs_extra_proposes'][$type][$ensemble])) $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type][$ensemble]); // ... sinon, les champs proposes par defaut else if (isset($GLOBALS['champs_extra_proposes'][$type]['tous'])) { $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type]['tous']); } // sinon tous les champs extra du type else { $champs_proposes = Array(); reset($champs); while (list($ch, ) = each($champs)) $champs_proposes[] = $ch; } // bug explode if($champs_proposes == explode('|', '')) $champs_proposes = Array(); // maintenant, on affiche les formulaires pour les champs renseignes dans $extra // et pour les champs proposes reset($champs_proposes); while (list(, $champ) = each($champs_proposes)) { $desc = $champs[$champ]; list($form, $filtre, $prettyname, $default, $allowed_vals, $labels) = explode("|", $desc); if($form == 'radio') { $values = explode(",", $allowed_vals); if ($values == explode(",", "")) { $values = Array(); } $labels_values = explode(",", $labels); if ($labels_values == explode(",", "")) { $labels_values = Array(); } /* verifie si la valeur actuelle est définie ou si il va falloir prendre celle par défaut */ $selectionne = -1; foreach ($values as $key => $val) { if ($contenu == $val) { $selectionne = $key; } } if($selectionne == -1) foreach ($values as $key => $val) { if ($contenu == $default) { $selectionne = $key; } } $contenu = $labels_values[$selectionne]; } if (!$prettyname) $prettyname = ucfirst($champ); $affiche .= "$prettyname :
"; switch($form) { case "bloc": case "block": $affiche .= "\n"; break; case "masque": $affiche .= "".interdire_scripts($extra[$champ])."\n"; break; case "select": $affiche .= ""; break; case "radio": $values = explode(",", $allowed_vals); if ($values == explode(",", "")) { $values = Array(); } $labels_values = explode(",", $labels); if ($labels_values == explode(",", "")) { $labels_values = Array(); } /* verifie si la valeur actuelle est définie ou si il va falloir prendre celle par défaut */ $selectionne = -1; foreach ($values as $key => $val) { if ($extra[$champ] == $val) $selectionne = $key; } /* affiche des */ foreach ($values as $key => $val) { $affiche .= "
"; } break; case "ligne": case "line": default: $affiche .= "\n"; }else{ $affiche .= " VALUE=\"".entites_html($extra[$champ])."\" SIZE='40'>\n"; } break; } $affiche .= "

\n"; } if ($affiche) { debut_cadre_enfonce(); echo $affiche; fin_cadre_enfonce(); } } // recupere les valeurs postees pour reconstituer l'extra function extra_recup_saisie($type) { $champs = $GLOBALS['champs_extra'][$type]; if (is_array($champs)) { $extra = Array(); while(list($champ,)=each($champs)) $extra[$champ]=$GLOBALS["suppl_$champ"]; return serialize($extra); } else return ''; } // Retourne la liste des filtres a appliquer pour un champ extra particulier function extra_filtres($type, $nom_champ) { $champ = $GLOBALS['champs_extra'][$type][$nom_champ]; if (!$champ) return array();; list(, $filtre, ) = explode("|", $champ); if ($filtre && $filtre != 'brut' && function_exists($filtre)) return array($filtre); return array(); } function extra_champ_valide($type, $nom_champ) { return isset($GLOBALS['champs_extra'][$type][$nom_champ]); } // a partir de la liste des champs, generer l'affichage function extra_affichage($extra, $type) { $extra = unserialize ($extra); if (!is_array($extra)) return; $champs = $GLOBALS['champs_extra'][$type]; while (list($nom,$contenu) = each($extra)) { list($type, $filtre, $prettyname) = explode("|", $champs[$nom]); if ($filtre != 'brut' AND function_exists($filtre)) $contenu = $filtre($contenu); if (!$prettyname) $prettyname = ucfirst($nom); if ($contenu) $affiche .= "

$prettyname : ".interdire_scripts($contenu)."
\n"; } if ($affiche) { debut_cadre_enfonce(); echo $affiche; fin_cadre_enfonce(); } } ?>