Valider 673fcfac rédigé par Maïeul's avatar Maïeul
Parcourir les fichiers

Lorsqu'on initialise une session pour modifier un formulaire, stocker le md5 du formulaire initial.

Lorsqu'on reprend la modification du formulaire, après avoir par exemple fermé un onglet, vérifier qu'il n'y pas de modification du md5 du formulaire initial. Si oui, alors le formulaire_initial prend le pas sur tout ce qu'il y avait en session, et remplace le formulaire qui était en session.

cf formidable#8, cas 2 (vérification en amont du formulaire).

Reste à faire le cas 1, vérification à la fin du formulaire.
parent b0ad0fa1
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+25 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -5,6 +5,17 @@ if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}

/**
 * Formulaire permettant de construire un formulaire  ! En agençant des champs
 * Chargement.
 * @param string $identifiant identifiant unique du formulaire
 * @param array $formulaires_initial, formulaire initial (par exemple si on modifie un formulaire déjà construit)
 * @param array $options tableau d'options
 *		- array options_globales : proposer des options globales pour le formulaire, liste de ces options
 *		- array saisies_exclues : liste des saisies à ne pas proposer (= à exclure du choix)
 *		- bool uniquement_sql : ne proposer que les saisies qui permettent de remplir un champ sql
 * @return array $contexte
**/
function formulaires_construire_formulaire_charger($identifiant, $formulaire_initial = array(), $options = array()) {
	include_spip('inc/saisies');
	$contexte = array();
@@ -21,9 +32,21 @@ function formulaires_construire_formulaire_charger($identifiant, $formulaire_ini
	// On s'assure que toutes les saisies ont un identifiant (en cas de bug lors de la création, par ex.)
	$formulaire_initial = saisies_identifier($formulaire_initial);

	// On initialise la session si elle est vide
	if (is_null($formulaire_actuel = session_get($identifiant))) {
	// Construire le md5 du paramètre $formulaire_initial, et trouver celui qu'on avait stocké
	$md5_formulaire_initial = md5(serialize($formulaire_initial));
	$md5_precedent_formulaire_initial = session_get($identifiant.'_md5_formulaire_initial');

	// Si pas de session, on prend le formulaire initial comme formulaire actuel,
	// ou bien si la session est trop trop veille, on prend le formulaire initial comme formulaire
	if (
		is_null($formulaire_actuel = session_get($identifiant))
		or
		($md5_precedent_formulaire_initial
		and
		$md5_formulaire_initial != $md5_precedent_formulaire_initial and $_SERVER['REQUEST_METHOD'] === 'GET')
	) {
		session_set($identifiant, $formulaire_initial);
		session_set($identifiant.'_md5_formulaire_initial', $md5_formulaire_initial);
		$formulaire_actuel = $formulaire_initial;
	}

+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<paquet
	prefix="saisies"
	categorie="outil"
	version="3.32.1"
	version="3.33.0"
	etat="stable"
	compatibilite="[3.0.0;3.2.*]"
	logo="images/logo_saisie_48.png"