X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fbalise%2Fformulaire_.php;fp=www%2Fecrire%2Fbalise%2Fformulaire_.php;h=c35022c87913b83b7d979b4d510b2a2ea79d0c1e;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/balise/formulaire_.php b/www/ecrire/balise/formulaire_.php new file mode 100644 index 0000000..c35022c --- /dev/null +++ b/www/ecrire/balise/formulaire_.php @@ -0,0 +1,229 @@ +nom_champ)===FALSE) { + $p->code = "''"; + $p->interdire_scripts = false; + return $p; + } + + // sinon renvoyer un code php dnamique + return calculer_balise_dynamique($p, $p->nom_champ, array()); +} + +/* prendre en charge par defaut les balises dynamiques formulaires simples */ +// http://doc.spip.org/@balise_FORMULAIRE__dyn +function balise_FORMULAIRE__dyn($form) +{ + $form = existe_formulaire($form); + if (!$form) return ''; + + // deux moyen d'arriver ici : + // soit #FORMULAIRE_XX reroute avec 'FORMULAIRE_XX' ajoute en premier arg + // soit #FORMULAIRE_{xx} + + // recuperer les arguments passes a la balise + // on enleve le premier qui est le nom de la balise + // deja recupere ci-dessus + + $args = func_get_args(); + array_shift($args); + $contexte = balise_FORMULAIRE__contexte($form, $args); + if (!is_array($contexte)) return $contexte; + return array("formulaires/$form", 3600, $contexte); +} + +function balise_FORMULAIRE__contexte($form, $args) +{ + // tester si ce formulaire vient d'etre poste (memes arguments) + // pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page + // si poste, on recupere les erreurs + + $je_suis_poste = false; + if ($post_form = _request('formulaire_action') + AND $post_form == $form + AND $p = _request('formulaire_action_args') + AND is_array($p = decoder_contexte_ajax($p, $post_form))) { + // enlever le faux attribut de langue masque + array_shift($p); + if (formulaire__identifier($form, $args, $p)) + $je_suis_poste = true; + } + + $editable = true; + $erreurs = $post = array(); + if ($je_suis_poste) { + $post = traiter_formulaires_dynamiques(true); + $e = "erreurs_$form"; + $erreurs = isset($post[$e]) ? $post[$e] : array(); + $editable = "editable_$form"; + $editable = (!isset($post[$e])) + || count($erreurs) + || (isset($post[$editable]) && $post[$editable]); + } + + $valeurs = formulaire__charger($form, $args, $je_suis_poste); + + // si $valeurs n'est pas un tableau, le formulaire n'est pas applicable + // C'est plus fort qu'editable qui est gere par le squelette + // Idealement $valeur doit etre alors un message explicatif. + if (!is_array($valeurs)) return is_string($valeurs) ? $valeurs : ''; + + // charger peut passer une action si le formulaire ne tourne pas sur self() + // ou une action vide si elle ne sert pas + $action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&', true); + // bug IEx : si action finit par / + // IE croit que le