[PLUGINS] ~maj globale
[lhc/web/www.git] / www / plugins / saisies / inc / saisies_afficher.php
index 4e7e348..f90c820 100644 (file)
@@ -155,9 +155,8 @@ function saisies_generer_html($champ, $env = array()) {
                }
 
                $contexte = array_merge($env, $contexte);
-       }
-       // Sinon on ne sélectionne que quelques éléments importants
-       else {
+       } else {
+               // Sinon on ne sélectionne que quelques éléments importants
                // On récupère la liste des erreurs
                $contexte['erreurs'] = $env['erreurs'];
                // On récupère la langue de l'objet si existante
@@ -170,20 +169,19 @@ function saisies_generer_html($champ, $env = array()) {
 
        // Dans tous les cas on récupère de l'environnement la valeur actuelle du champ
        // Si le nom du champ est un tableau indexé, il faut parser !
-       if (isset($contexte['nom']) and preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {
+       if (isset($contexte['nom']) and preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)
+                       and isset($env[$separe[1]])) {
                $contexte['valeur'] = $env[$separe[1]];
                preg_match_all('/\[([\w]+)\]/', $separe[2], $index);
                // On va chercher au fond du tableau
                foreach ($index[1] as $cle) {
                        $contexte['valeur'] = isset($contexte['valeur'][$cle]) ? $contexte['valeur'][$cle] : null;
                }
-       }
-       // Sinon la valeur est juste celle du nom si elle existe
-       elseif (isset($contexte['nom']) and isset($env[$contexte['nom']])) {
+       } elseif (isset($contexte['nom']) and isset($env[$contexte['nom']])) {
+               // Sinon la valeur est juste celle du nom si elle existe
                $contexte['valeur'] = $env[$contexte['nom']];
-       }
-       // Sinon rien
-       else {
+       } else {
+               // Sinon rien
                $contexte['valeur'] = null;
        }
 
@@ -266,20 +264,18 @@ function saisies_generer_vue($saisie, $env = array(), $env_obligatoire = array()
        // Dans tous les cas on récupère de l'environnement la valeur actuelle du champ
 
        // On regarde en priorité s'il y a un tableau listant toutes les valeurs
-       if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])) {
+       if (!empty($env['valeurs']) and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])) {
                $contexte['valeur'] = $env['valeurs'][$contexte['nom']];
-       }
-       // Si le nom du champ est un tableau indexé, il faut parser !
-       elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {
+       } elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {
+               // Si le nom du champ est un tableau indexé, il faut parser !
                $contexte['valeur'] = $env[$separe[1]];
                preg_match_all('/\[([\w]+)\]/', $separe[2], $index);
                // On va chercher au fond du tableau
                foreach ($index[1] as $cle) {
                        $contexte['valeur'] = $contexte['valeur'][$cle];
                }
-       }
-       // Sinon la valeur est juste celle du nom
-       else {
+       } else {
+               // Sinon la valeur est juste celle du nom
                // certains n'ont pas de nom (fieldset)
                $contexte['valeur'] = isset($env[$contexte['nom']]) ? $env[$contexte['nom']] : '';
        }
@@ -334,7 +330,12 @@ function saisies_generer_js_afficher_si($saisies, $id_form) {
                                                                $class_li = 'explication_'.$saisie['options']['nom'];
                                                                break;
                                                        default:
-                                                               $class_li = 'editer_'.$saisie['options']['nom'];
+                                                               // Les [] dans le nom de la saisie sont transformés en _ dans le
+                                                               // nom de la classe, il faut faire pareil
+                                                               $class_li = 'editer_' . rtrim(
+                                                                       preg_replace('/[][]\[?/', '_', $saisie['options']['nom']),
+                                                                       '_'
+                                                               );
                                                }
                                                $afficher_si = isset($saisie['options']['afficher_si']) ? $saisie['options']['afficher_si'] : '';
                                                $afficher_si_remplissage = isset($saisie['options']['afficher_si_remplissage']) ? $saisie['options']['afficher_si_remplissage'] : '';