X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Fsaisies%2Fformulaires%2Fconstruire_formulaire.php;h=f389534f06a28b8d172fb6144869ef4ceb2bd0d9;hb=c0f18416f529232b5555c6410a8765a5125ebcd3;hp=21b934ed29c9a6d250277dd1ce70d532aa8abbc1;hpb=50522c53acc9e61a4a7de3a1890c4ba93e2f61b4;p=lhc%2Fweb%2Fwww.git diff --git a/www/plugins/saisies/formulaires/construire_formulaire.php b/www/plugins/saisies/formulaires/construire_formulaire.php index 21b934ed..f389534f 100644 --- a/www/plugins/saisies/formulaires/construire_formulaire.php +++ b/www/plugins/saisies/formulaires/construire_formulaire.php @@ -1,68 +1,70 @@ $formulaire_config)); $formulaire_config = $formulaire_config['saisies']; - + // Si la saisie possede un identifiant, on l'ajoute // au formulaire de configuration pour ne pas le perdre en route if (isset($saisie['identifiant']) and $saisie['identifiant']) { @@ -117,11 +119,10 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in ) ); } - + // S'il y a l'option adéquat, on ajoute le champ pour modifier le nom if (isset($options['modifier_nom']) and $options['modifier_nom'] - and $chemin_nom = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true)) - { + and $chemin_nom = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true)) { $chemin_nom[] = 'saisies'; $chemin_nom[] = '0'; @@ -151,12 +152,12 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in $verif_options = array(); // S'il y a un groupe "validation" alors on va construire le formulaire des vérifications - if ($chemin_validation = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][validation]", true)){ + if ($chemin_validation = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][validation]", true)) { include_spip('inc/verifier'); $liste_verifications = verifier_lister_disponibles(); $chemin_validation[] = 'saisies'; $chemin_validation[] = 1000000; // à la fin - + // On construit la saisie à insérer et les fieldset des options $saisie_liste_verif = array( 'saisie' => 'selection', @@ -169,10 +170,10 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in ) ); - foreach ($liste_verifications as $type_verif => $verif){ + foreach ($liste_verifications as $type_verif => $verif) { $saisie_liste_verif['options']['datas'][$type_verif] = $verif['titre']; // Si le type de vérif a des options, on ajoute un fieldset - if (isset($verif['options']) and $verif['options'] and is_array($verif['options'])){ + if (isset($verif['options']) and $verif['options'] and is_array($verif['options'])) { $groupe = array( 'saisie' => 'fieldset', 'options' => array( @@ -188,34 +189,47 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in } $verif_options = array_merge(array($saisie_liste_verif), $verif_options); } - - - if ($enregistrer_saisie){ + + + // Permettre d'intégrer des saisies et fieldset au formulaire de configuration. + // Si des vérifications sont à faire, elles seront prises en compte + // lors des tests de vérifications à l'enregistrement. + $formulaire_config = pipeline('saisies_construire_formulaire_config', array( + 'data' => $formulaire_config, + 'args' => array( + 'identifiant' => $identifiant, + 'action' => $enregistrer_saisie ? 'enregistrer' : 'configurer', + 'options' => $options, + 'nom' => $nom, + 'saisie' => $saisie, + ), + )); + + if ($enregistrer_saisie) { // La saisie modifié $saisie_modifiee = _request("saisie_modifiee_${nom}"); // On cherche les erreurs de la configuration $vraies_erreurs = saisies_verifier($formulaire_config); // Si on autorise à modifier le nom ET qu'il doit être unique : on vérifie if (isset($options['modifier_nom']) and $options['modifier_nom'] - and isset($options['nom_unique']) and $options['nom_unique']) - { + and isset($options['nom_unique']) and $options['nom_unique']) { $nom_modifie = $saisie_modifiee['options']['nom']; - if ($nom_modifie != $enregistrer_saisie and saisies_chercher($formulaire_actuel, $nom_modifie)) + if ($nom_modifie != $enregistrer_saisie and saisies_chercher($formulaire_actuel, $nom_modifie)) { $vraies_erreurs["saisie_modifiee_${nom}[options][nom]"] = _T('saisies:erreur_option_nom_unique'); + } } // On regarde s'il a été demandé un type de vérif if (isset($saisie_modifiee['verifier']['type']) - and (($type_verif = $saisie_modifiee['verifier']['type']) != '') - and $verif_options[$type_verif]) - { + and (($type_verif = $saisie_modifiee['verifier']['type']) != '') + and $verif_options[$type_verif]) { // On ne vérifie que les options du type demandé $vraies_erreurs = array_merge($vraies_erreurs, saisies_verifier($verif_options[$type_verif]['saisies'])); } } // On insère chaque saisie des options de verification - if ($verif_options){ - foreach ($verif_options as $saisie_verif){ + if ($verif_options) { + foreach ($verif_options as $saisie_verif) { $formulaire_config = saisies_inserer($formulaire_config, $saisie_verif, $chemin_validation); } } @@ -225,6 +239,7 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in if ($enregistrer_saisie) { if ($vraies_erreurs) { $erreurs = array_merge($erreurs, $vraies_erreurs); + $erreurs['message_erreur'] = singulier_ou_pluriel(count($vraies_erreurs), 'avis_1_erreur_saisie', 'avis_nb_erreurs_saisie'); } else { $erreurs = array(); } @@ -235,23 +250,23 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in return $erreurs; } -function formulaires_construire_formulaire_traiter($identifiant, $formulaire_initial=array(), $options=array()){ +function formulaires_construire_formulaire_traiter($identifiant, $formulaire_initial = array(), $options = array()) { include_spip('inc/saisies'); $retours = array(); $saisies_disponibles = saisies_lister_disponibles(); - + // On ajoute un préfixe devant l'identifiant $identifiant = 'constructeur_formulaire_'.$identifiant; // On récupère le formulaire à son état actuel $formulaire_actuel = session_get($identifiant); - + // Si on demande à ajouter un groupe - if ($ajouter_saisie = _request('ajouter_groupe_saisie')){ + if ($ajouter_saisie = _request('ajouter_groupe_saisie')) { $formulaire_actuel = saisies_groupe_inserer($formulaire_actuel, $ajouter_saisie); } - + // Si on demande à ajouter une saisie - if ($ajouter_saisie = _request('ajouter_saisie')){ + if ($ajouter_saisie = _request('ajouter_saisie')) { $nom = saisies_generer_nom($formulaire_actuel, $ajouter_saisie); $saisie = array( 'saisie' => $ajouter_saisie, @@ -260,49 +275,40 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini ) ); // S'il y a des valeurs par défaut pour ce type de saisie, on les ajoute - if (($defaut = $saisies_disponibles[$ajouter_saisie]['defaut']) and is_array($defaut)){ + if (($defaut = $saisies_disponibles[$ajouter_saisie]['defaut']) and is_array($defaut)) { $defaut = _T_ou_typo($defaut, 'multi'); - //Compatibilite PHP<5.3.0 + //Compatibilite PHP<5.3.0 //source : http://www.php.net/manual/en/function.array-replace-recursive.php#92574 - if (!function_exists('array_replace_recursive')) - { - function array_replace_recursive($array, $array1) - { - function recurse($array, $array1) - { - foreach ($array1 as $key => $value) - { + if (!function_exists('array_replace_recursive')) { + function array_replace_recursive($array, $array1) { + function recurse($array, $array1) { + foreach ($array1 as $key => $value) { // create new key in $array, if it is empty or not an array - if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key]))) - { + if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key]))) { $array[$key] = array(); } // overwrite the value in the base array - if (is_array($value)) - { + if (is_array($value)) { $value = recurse($array[$key], $value); } $array[$key] = $value; } return $array; } - + // handle the arguments, merge one by one $args = func_get_args(); $array = $args[0]; - if (!is_array($array)) - { + if (!is_array($array)) { return $array; } - for ($i = 1; $i < count($args); $i++) - { - if (is_array($args[$i])) - { + for ($i = 1; $i < count($args); $i++) { + if (is_array($args[$i])) { $array = recurse($array, $args[$i]); } } - return $array; + return $array; } } $saisie = array_replace_recursive($saisie, $defaut); @@ -312,38 +318,37 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini // Si on demande à dupliquer une saisie if ($dupliquer_saisie = _request('dupliquer_saisie')) { - $formulaire_actuel = saisies_dupliquer($formulaire_actuel, $dupliquer_saisie); + $formulaire_actuel = saisies_dupliquer($formulaire_actuel, $dupliquer_saisie); } - + // Si on demande à supprimer une saisie - if ($supprimer_saisie = _request('supprimer_saisie')){ + if ($supprimer_saisie = _request('supprimer_saisie')) { $formulaire_actuel = saisies_supprimer($formulaire_actuel, $supprimer_saisie); } - + // Si on enregistre la conf d'une saisie - if ($nom = _request('enregistrer_saisie')){ + if ($nom = _request('enregistrer_saisie')) { // On récupère ce qui a été modifié $saisie_modifiee = _request("saisie_modifiee_$nom"); - + // On regarde s'il y a une position à modifier - if (isset($saisie_modifiee['position'])){ + if (isset($saisie_modifiee['position'])) { $position = $saisie_modifiee['position']; unset($saisie_modifiee['position']); // On ne déplace que si ce n'est pas la même chose - if ($position != $nom) + if ($position != $nom) { $formulaire_actuel = saisies_deplacer($formulaire_actuel, $nom, $position); + } } - + // On regarde s'il y a des options de vérification à modifier if (isset($saisie_modifiee['verifier']['type']) - and ($type_verif = $saisie_modifiee['verifier']['type']) != '') - { + and ($type_verif = $saisie_modifiee['verifier']['type']) != '') { $saisie_modifiee['verifier'] = array( 'type' => $type_verif, 'options' => $saisie_modifiee['verifier'][$type_verif] ); - } - else { + } else { unset($saisie_modifiee['verifier']); } @@ -352,17 +357,18 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini if (isset($saisie_modifiee['verifier']['options']) and $saisie_modifiee['verifier']['options']) { $saisie_modifiee['verifier']['options'] = array_filter($saisie_modifiee['verifier']['options'], 'saisie_option_contenu_vide'); } - + // On désinfecte à la main - if (is_array($saisie_modifiee['options'])) + if (is_array($saisie_modifiee['options'])) { spip_desinfecte($saisie_modifiee['options']); - + } + // On modifie enfin $formulaire_actuel = saisies_modifier($formulaire_actuel, $nom, $saisie_modifiee); } // Si on demande à réinitialiser - if (_request('reinitialiser') == 'oui'){ + if (_request('reinitialiser') == 'oui') { $formulaire_actuel = $formulaire_initial; } @@ -377,26 +383,26 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini // À utiliser avec un array_walk_recursive() // Applique une transformation à la @valeur@ de tous les champs "nom" d'un formulaire, y compris loin dans l'arbo -function formidable_transformer_nom(&$valeur, $cle, $transformation){ - if ($cle == 'nom' and is_string($valeur)){ +function formidable_transformer_nom(&$valeur, $cle, $transformation) { + if ($cle == 'nom' and is_string($valeur)) { $valeur = str_replace('@valeur@', $valeur, $transformation); } } // Préparer une saisie pour la transformer en truc configurable -function formidable_generer_saisie_configurable($saisie, $env){ +function formidable_generer_saisie_configurable($saisie, $env) { // On récupère le nom $nom = $saisie['options']['nom']; - $identifiant = isset($saisie['identifiant']) ? $saisie['identifiant'] : ""; + $identifiant = isset($saisie['identifiant']) ? $saisie['identifiant'] : ''; // On cherche si ya un formulaire de config - $formulaire_config = isset($env['erreurs']['configurer_'.$nom]) ? $env['erreurs']['configurer_'.$nom] : ""; + $formulaire_config = isset($env['erreurs']['configurer_'.$nom]) ? $env['erreurs']['configurer_'.$nom] : ''; // On ajoute une classe if (!isset($saisie['options']['conteneur_class'])) { $saisie['options']['conteneur_class'] = ''; // initialisation } // Compat ancien nom li_class if (isset($saisie['options']['li_class'])) { - $saisie['options']['conteneur_class'] .= " " . $saisie['options']['li_class']; // initialisation + $saisie['options']['conteneur_class'] .= ' ' . $saisie['options']['li_class']; // initialisation } $saisie['options']['conteneur_class'] .= ' configurable'; @@ -411,7 +417,7 @@ function formidable_generer_saisie_configurable($saisie, $env){ 'formulaires/inc-construire_formulaire-actions', array( 'nom' => $nom, - 'identifiant' => $identifiant, + 'identifiant' => $identifiant, 'formulaire_config' => $formulaire_config, 'deplacable' => $env['_chemin_ui'] ) @@ -428,7 +434,7 @@ function formidable_generer_saisie_configurable($saisie, $env){ ); // Si ya un form de config on l'ajoute à la fin - if (is_array($formulaire_config)){ + if (is_array($formulaire_config)) { // On double l'environnement $env2 = $env; // On ajoute une classe @@ -436,9 +442,9 @@ function formidable_generer_saisie_configurable($saisie, $env){ // Si possible on met en readonly $saisie['options']['readonly'] = 'oui'; - + // On vire les sous-saisies s'il y en a - if (isset($saisie['saisies']) and $saisie['saisies'] and is_array($saisie['saisies'])){ + if (isset($saisie['saisies']) and $saisie['saisies'] and is_array($saisie['saisies'])) { $nb_champs_masques = count(saisies_lister_champs($saisie['saisies'])); $saisie['saisies'] = array( array( @@ -450,9 +456,9 @@ function formidable_generer_saisie_configurable($saisie, $env){ ) ); } - + // On va ajouter le champ pour la position - if (!($chemin_description = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true))){ + if (!($chemin_description = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true))) { $chemin_description = array(0); $formulaire_config = saisies_inserer( $formulaire_config, @@ -483,22 +489,21 @@ function formidable_generer_saisie_configurable($saisie, $env){ ), $chemin_description ); - + $env2['saisies'] = $formulaire_config; - + // Un test pour savoir si on prend le _request ou bien $erreurs_test = $env['erreurs']; unset($erreurs_test['configurer_'.$nom]); unset($erreurs_test['positionner']); unset($erreurs_test['message_erreur']); - if ($erreurs_test){ + if ($erreurs_test) { // Là aussi on désinfecte à la main if (isset($env2["saisie_modifiee_$nom"]['options']) and is_array($env2["saisie_modifiee_$nom"]['options'])) { spip_desinfecte($env2["saisie_modifiee_$nom"]['options']); } - } - else{ + } else { $env2["saisie_modifiee_$nom"] = $env2['_saisies_par_nom'][$nom]; // il n'y a pas toujours de verification... if (isset($env2["saisie_modifiee_$nom"]['verifier'])) { @@ -506,7 +511,7 @@ function formidable_generer_saisie_configurable($saisie, $env){ = $env2["saisie_modifiee_$nom"]['verifier']['options']; } } - + $env2['fond_generer'] = 'inclure/generer_saisies'; $saisie = saisies_inserer_html( $saisie, @@ -539,7 +544,7 @@ function formidable_generer_saisie_configurable($saisie, $env){ **/ function saisie_option_contenu_vide($var) { if (!$var) { - if (is_string($var) AND strlen($var)) { + if (is_string($var) and strlen($var)) { return true; } return false; @@ -547,29 +552,29 @@ function saisie_option_contenu_vide($var) { return true; } -function saisies_groupe_inserer($formulaire_actuel, $saisie){ +function saisies_groupe_inserer($formulaire_actuel, $saisie) { include_spip('inclure/configurer_saisie_fonctions'); - + //le groupe de saisies - $saisies_charger_infos = saisies_charger_infos($saisie,$saisies_repertoire = "saisies/groupes"); - + $saisies_charger_infos = saisies_charger_infos($saisie, $saisies_repertoire = 'saisies/groupes'); + //le tableau est-il en options ou en saisies ? $classique_yaml=count($saisies_charger_infos['options']); $formidable_yaml=count($saisies_charger_infos['saisies']); - if($classique_yaml>0) { + if ($classique_yaml>0) { $champ_options = 'options'; } - if($formidable_yaml>0) { + if ($formidable_yaml>0) { $champ_options = 'saisies'; } - - //les champs du groupe - foreach($saisies_charger_infos[$champ_options] as $info_saisie){ + + //les champs du groupe + foreach ($saisies_charger_infos[$champ_options] as $info_saisie) { unset($info_saisie['identifiant']); $saisies_disponibles = saisies_lister_disponibles(); $construire_nom = $info_saisie[$champ_options]['nom'] ? $info_saisie[$champ_options]['nom'] : $info_saisie['saisie']; - $nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel,$construire_nom); - + $nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel, $construire_nom); + $formulaire_actuel = saisies_inserer($formulaire_actuel, $info_saisie); } return $formulaire_actuel;