\r
/**\r
* Indique si une saisie peut être affichée.\r
- * \r
+ *\r
* On s'appuie sur l'éventuelle clé "editable" du $champ.\r
* Si editable vaut :\r
* - absent : le champ est éditable\r
* Environnement transmis à la saisie, certainement l'environnement du formulaire\r
* @param bool $utiliser_editable\r
* - false pour juste tester le cas -1\r
- * \r
+ *\r
* @return bool\r
* Retourne un booléen indiquant l'état éditable ou pas :\r
* - true si la saisie est éditable (peut être affichée)\r
}\r
}\r
}\r
- \r
+\r
// aucun des paramètres demandés n'avait de contenu\r
return false;\r
}\r
if (!saisie_editable($champ, $env)) {\r
return '';\r
}\r
- \r
+\r
$contexte = array();\r
- \r
+\r
// On sélectionne le type de saisie\r
$contexte['type_saisie'] = $champ['saisie'];\r
// Identifiant unique de saisie, si present\r
$options[$option] = _T_ou_typo($valeur, 'multi');\r
}\r
}\r
- \r
+\r
// On ajoute les options propres à la saisie\r
$contexte = array_merge($contexte, $options);\r
\r
// car les sous-saisies ne doivent pas être affectees\r
// par les modification sur l'environnement servant à generer la saisie mère\r
$contexte['_env'] = $env;\r
- \r
+\r
// À partir du moment où on passe tout l'environnement, il faut enlever certains éléments qui ne doivent absolument provenir que des options\r
unset($env['inserer_debut']);\r
unset($env['inserer_fin']);\r
unset($env[$option_a_supprimer]);\r
}\r
}\r
- \r
+\r
$contexte = array_merge($env, $contexte);\r
}\r
// Sinon on ne sélectionne que quelques éléments importants\r
// Si ya des enfants on les remonte dans le contexte\r
if (isset($champ['saisies']) and is_array($champ['saisies']))\r
$contexte['saisies'] = $champ['saisies'];\r
- \r
+\r
// On génère la saisie\r
return recuperer_fond(\r
'saisies/_base',\r
return '';\r
\r
$contexte = array();\r
- \r
+\r
// On sélectionne le type de saisie\r
$contexte['type_saisie'] = $saisie['saisie'];\r
- \r
+\r
// Peut-être des transformations à faire sur les options textuelles\r
$options = $saisie['options'];\r
foreach ($options as $option => $valeur){\r
$options[$option] = _T_ou_typo($valeur, 'multi');\r
}\r
}\r
- \r
+\r
// On ajoute les options propres à la saisie\r
$contexte = array_merge($contexte, $options);\r
\r
// par les modification sur l'environnement servant à generer la saisie mère\r
$contexte['_env'] = $env;\r
\r
- // À partir du moment où on passe tout l'environnement, il faut enlever \r
+ // À partir du moment où on passe tout l'environnement, il faut enlever\r
// certains éléments qui ne doivent absolument provenir que des options\r
$saisies_disponibles = saisies_lister_disponibles();\r
if (is_array($saisies_disponibles[$contexte['type_saisie']]['options'])){\r
unset($env[$option_a_supprimer]);\r
}\r
}\r
- \r
+\r
$contexte = array_merge($env, $contexte);\r
}\r
\r
// Dans tous les cas on récupère de l'environnement la valeur actuelle du champ\r
- \r
+\r
// On regarde en priorité s'il y a un tableau listant toutes les valeurs\r
if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])){\r
$contexte['valeur'] = $env['valeurs'][$contexte['nom']];\r
$code = '';\r
$code .= '(function($){';\r
$code .= '$(document).ready(function(){chargement=true;';\r
- $code .= 'verifier_saisies_'.$id_form.' = function(form){';\r
+ $code .= 'verifier_saisies_'.$id_form." = function(form){\n";\r
foreach ($saisies as $saisie) {\r
// on utilise comme selecteur l'identifiant de saisie en priorite s'il est connu\r
// parce que li_class = 'tableau[nom][option]' ne fonctionne evidement pas\r
default:\r
$class_li = 'editer_'.$saisie['options']['nom'];\r
}\r
- $condition = $saisie['options']['afficher_si']."\n".$saisie['options']['afficher_si_remplissage'];\r
+ $afficher_si = isset($saisie['options']['afficher_si']) ? $saisie['options']['afficher_si'] : '';\r
+ $afficher_si_remplissage = isset($saisie['options']['afficher_si_remplissage']) ? $saisie['options']['afficher_si_remplissage'] : '';\r
+ $condition = join("\n", array_filter(array($afficher_si, $afficher_si_remplissage)));\r
// retrouver l'identifiant\r
$identifiant = '';\r
if (isset($saisie['identifiant']) and $saisie['identifiant']) {\r
$condition = preg_replace('#@'.preg_quote($nom).'@#U', '$(form).find("[name=\''.$nom.'\']:checked").val()', $condition);\r
break;\r
case 'case':\r
- $condition = preg_replace('#@'.preg_quote($nom).'@#U', '($(form).find("[name=\''.$nom.'\']").is(":checked") ? $(form).find("[name=\''.$nom.'\']").val() : "")', $condition);\r
+ $condition = preg_replace('#@'.preg_quote($nom).'@#U', '($(form).find(".checkbox[name=\''.$nom.'\']").is(":checked") ? $(form).find(".checkbox[name=\''.$nom.'\']").val() : "")', $condition);\r
+ break;\r
+ case 'checkbox':\r
+ preg_match_all('#@(.+)@ == "(.*)"$#U', $condition, $matches2);\r
+ foreach ($matches2[2] as $value) {\r
+ $condition = preg_replace('#@'.preg_quote($nom).'@#U', '($(form).find(".checkbox[name=\''.$nom.'[]\'][value='.$value.']").is(":checked") ? $(form).find(".checkbox[name=\''.$nom.'[]\'][value='.$value.']").val() : "")', $condition);\r
+ }\r
break;\r
default:\r
$condition = preg_replace('#@'.preg_quote($nom).'@#U', '$(form).find("[name=\''.$nom.'\']").val()', $condition);\r
} else {\r
$sel = "li.$class_li";\r
}\r
- $code .= 'if ('.$condition.') {$(form).find("'.$sel.'").show(400);} ';\r
- $code .= 'else {if (chargement==true) {$(form).find("'.$sel.'").hide(400).css("display","none");} else {$(form).find("'.$sel.'").hide(400);};} ';\r
+ $code .= "\tif (".$condition.') {$(form).find("'.$sel.'").show(400);} '."\n\t";\r
+ $code .= 'else {if (chargement==true) {$(form).find("'.$sel.'").hide(400).css("display","none");} else {$(form).find("'.$sel.'").hide(400);};} '."\n";\r
}\r
}\r
- $code .= '};';\r
+ $code .= "};";\r
$code .= '$("li#afficher_si_'.$id_form.'").parents("form").each(function(){verifier_saisies_'.$id_form.'(this);});';\r
$code .= '$("li#afficher_si_'.$id_form.'").parents("form").change(function(){verifier_saisies_'.$id_form.'(this);});';\r
$code .= 'chargement=false;})';\r
/**\r
* Lorsque l'on affiche les saisies (#VOIR_SAISIES), les saisies ayant une option afficher_si\r
* et dont les conditions ne sont pas remplies doivent être retirées du tableau de saisies.\r
- * \r
+ *\r
* Cette fonction sert aussi lors de la vérification des saisies avec saisies_verifier().\r
* À ce moment là, les saisies non affichées sont retirées de _request\r
* (on passe leur valeur à NULL).\r