Valider 3c3fb0ed rédigé par marcimat's avatar marcimat
Parcourir les fichiers

- permettre plusieurs formulaires CVT identiques sur une même page sans qu'ils...

- permettre plusieurs formulaires CVT identiques sur une même page sans qu'ils attrappent tous en même temps les valeurs soumises par un des formulaires. Un formulaire ne récupère que les valeurs qu'il a pu envoyer.
- pour remettre le fonctionnement précédent, il est possible d'envoyer via la fonction charger() du formulaire CVT le paramètre "_forcer_request" valant "true".
parent ec27bb05
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+37 −14
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -35,6 +35,7 @@ function balise_FORMULAIRE__dyn($form)
	// recuperer les arguments passes a la balise
	$args = func_get_args();


	// deux moyen d'arriver ici : soit #FORMULAIRE_XX reroute avec 'FORMULAIRE_XX' ajoute en premier arg
	// soit #FORMULAIRE_{xx}
	if (substr($form,0,11)=="FORMULAIRE_")
@@ -48,14 +49,32 @@ function balise_FORMULAIRE__dyn($form)
	if (!find_in_path("formulaires/$form.html"))
		return '';

	$erreurs = isset($_POST["erreurs_$form"])?$_POST["erreurs_$form"]:array();
	$message_ok = isset($_POST["message_ok_$form"])?$_POST["message_ok_$form"]:"";
	$message_erreur = isset($erreurs['message_erreur'])?$erreurs['message_erreur']:"";
	$valeurs = array();
	// tester si ce formulaire vient d'etre poste (memes arguments)
	// pour ne pas confondre 2 #FORMULAIRES_XX identiques
	$je_suis_poste = false;
	if ($post_form = _request('formulaire_action')
	AND $post_args = _request('formulaire_action_args')) {
		$post_args = decoder_contexte_ajax($post_args,$post_form);
		if ($args === $post_args){
			$je_suis_poste = true;
		}
	}

	// init
	$erreurs = $valeurs = array();
	$message_ok = $message_erreur = "";
	$editable = true;

	// si le formulaire vient d'etre poste, on recupere les erreurs
	if ($je_suis_poste){
		isset($_POST["erreurs_$form"]) || ($erreurs = $_POST["erreurs_$form"]);
		isset($_POST["message_ok_$form"]) || ($message_ok = $_POST["message_ok_$form"]);
		isset($erreurs['message_erreur']) || ($message_erreur = $erreurs['message_erreur']);
	
		$editable = (!isset($_POST["erreurs_$form"])) || count($erreurs) || 
			(isset($_POST["editable_$form"]) && $_POST["editable_$form"]);
	}

	$valeurs = array();
	if ($charger_valeurs = charger_fonction("charger","formulaires/$form/",true))
		$valeurs = call_user_func_array($charger_valeurs,$args);
	$valeurs = pipeline(
@@ -81,6 +100,9 @@ function balise_FORMULAIRE__dyn($form)

	$action = self();
	// recuperer la saisie en cours si erreurs
	// seulement si c'est ce formulaire qui est poste
	// ou si on le demande explicitement par le parametre _forcer_request = true
	if ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request'])) {
		foreach(array_keys($valeurs) as $champ){
			if (substr($champ,0,1)!=='_'){
				if (($v = _request($champ))!==NULL)
@@ -89,6 +111,7 @@ function balise_FORMULAIRE__dyn($form)
				$valeurs[$champ] = protege_valeurs($valeurs[$champ]); // proteger les ' et les " dans les champs que l'on va injecter dans les input
			}
		}
	}

	// nettoyer l'url
	$action = parametre_url($action,'formulaire_action','');