Ouah, bravo ca marche au poil !
par contre deux petites remarques complémentaires:
- $type chez toi s'appelle $form je crois. (à moins que ma version ne soit
pas la dernière).
- est on obligé de mettre ca 2 fois (l'occurrence dans le switch redondante
??)
$values = explode(",", $allowed_vals);
if ($values == explode(",", "")) {
$values = Array();
}
$labels_values = explode(",", $labels);
if ($labels_values == explode(",", "")) {
$labels_values = Array();
}
M'enfin c'est du détail, ton script est très bien. J'ai constaté aussi que
la valeur des champs extras n'est visible dans le formulaire que lorsqu'on
vide tous les caches après avoir rempli une valeur.
@+
BoOz
"Dusariez Jean-françois" <jfd@qwentes.be> a écrit dans le message de
news:bu310g$uev$1@sea.gmane.org...
Bonjour,
J'ai updater le code pour le sitch et ca a l'air de marcher nickel
maintenant. La db est bien updaté mais il reste un petit probleme du au
header("Location: ..."); apres le update de la db qui fait que la page
est relue en cache malgré les headers lui disnat de ne pas faire ainsi.
Ce bug est une chose qui m'étais connue sur IE et j'ai remarqué que
c'étais pareil avec Firebird, Netscape et Mozilla.
Une parade a cela serais de :
- faire le location sur une autre page
ou
- supprimer le location et affiché d'emblé la page après l'update
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 <boutons radio> */
foreach ($values as $key => $val) {
$affiche .= "<INPUT TYPE='radio' NAME='suppl_$champ'
VALUE='$val' id='$val'";
if ($selectionne == $key) {
$affiche .= " CHECKED ";
} elseif (($selectionne == -1) AND ($val == $default)) {
$affiche .= " CHECKED ";
}
$affiche .= "><label
for='$val'>".entites_html($labels_values[$key])."</label><br>";
}
break;
Sinon j'ai rajouté cela aussi pour l'affichage des extras de type
'radio' (remplacer la ligne commentée par ce qui suit) :
//list($type, $filtre, $prettyname) = explode("|", $champs[$nom]);
list($type, $filtre, $prettyname, $default, $allowed_vals,
$labels) = explode("|", $champs[$nom]);
if($type == '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];
}
Voila pour ma premiere contribution a spip. Quelqu'un peut-il me dire
comment on soumet un pathc pour qu'il soit éventuellement intégrer dans
la version cvs des spip ou eventuellement lors d'une prochaine release.
J'ai aussi un patch qui permet de donner des description a tous les
types de documents (xls, pdf, ...). Si ca interresse qqun demander le
moi je le fournirai sans problème.
JF Dusariez
Qwentes
PS: pour la déclaration dans mes_options.php3 voir le message original
ci dessous.
BoOz wrote:
> Coucou,
>
> J'ai commencé un mini patch pour inc-extra.php3 afin de proposer les
champs
> de type bouton radio, en suivant les traces de l'anarcat.
>
> Je déclare donc dans mes-options.php3
>
> "abo" => "radio|brut|Abonnement à la lettre
> d'information|html|html,texte,non|format html,format texte,ne pas
recevoir
> de courrier",
>
> ce qui permet de définir un nouveau type de champs avec en plus du titre
:
> le champs par defaut | la valeur des inputs | la valeurs des labels.
>
> Dans cet exemple, les auteurs pourront choisir de recevoir la lettre
> d'information et le format qu'ils preferent pour ca (on leur suggere
Html si
> le champs n'est pas rempli mais ca reste leur choix).
>
>
> Ensuite dans inc-extra.php3 j'adpate la ligne 103 :
>
> - list($form, $filtre, $prettyname, $default) = explode("|", $desc);
> + list($form, $filtre, $prettyname, $default, $allowed_vals, $labels) =
> explode("|", $desc);
>
> et dans le switch je rajoute le cas :
>
> case "radio":
>
> $values = explode(",", $allowed_vals);
> if ($values == explode(",", "")) {
> $values = Array();
> }
>
> /* affiche des <boutons radio> */
> foreach ($values as $val) {
> $affiche .= "<INPUT TYPE='radio'
> NAME='suppl_$champ' VALUE='$val' id='$val'";
> if ($extra[$champ] == $val) {
> $selectionne = true;
> $affiche .= " CHECKED ";
> }
> $affiche .= "><label
> for='$val'>$val</label><br>";
> }
> /* la valeur du champ n'a pas ete trouvee, on
la
> rajoute */
> if (($extra[$champ] == '') OR (!$selectionne))
{
> $affiche .= "<br><INPUT TYPE='radio'
> NAME='suppl_$champ' VALUE='$default' id='$default' CHECKED >";
> $affiche .= "<B><label for='$default'>$default</label></B><br>";
> }
>
> break;
>
>
> Ca marche très bien sauf que le label du bouton prend la meme valeur que
sa
> valeur renvoyée et non pas son label tel qu'il est défini dans la
> décalaration du champs.
>
> Je manque de compétances pour m'y retrouver dans les explodes $values et
$
> labels et pour re attribuer a chaque bouton sa valeur et son label.
>
> Mais j'aurai voulu vous passer un patch fonctionel a 100%, et j'enrage
parce