[PLUGINS] ~maj des plugins
[lhc/web/www.git] / www / plugins / saisies / inc / saisies_afficher.php
index 1c41d35..9c15248 100644 (file)
@@ -11,7 +11,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 \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
@@ -26,7 +26,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  *     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
@@ -65,7 +65,7 @@ function saisie_editable($champ, $env, $utiliser_editable=true) {
                        }\r
                }\r
        }\r
-       \r
+\r
        // aucun des paramètres demandés n'avait de contenu\r
        return false;\r
 }\r
@@ -101,9 +101,9 @@ function saisies_generer_html($champ, $env=array()){
        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
@@ -121,7 +121,7 @@ function saisies_generer_html($champ, $env=array()){
                        $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
@@ -133,7 +133,7 @@ function saisies_generer_html($champ, $env=array()){
                // 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
@@ -144,7 +144,7 @@ function saisies_generer_html($champ, $env=array()){
                                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
@@ -173,7 +173,7 @@ function saisies_generer_html($champ, $env=array()){
        // 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
@@ -200,10 +200,10 @@ function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
                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
@@ -214,7 +214,7 @@ function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
                        $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
@@ -227,7 +227,7 @@ function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
                // 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
@@ -236,12 +236,12 @@ function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
                                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
@@ -293,7 +293,7 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
        $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
@@ -311,7 +311,9 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
                                                        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
@@ -340,7 +342,13 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
                                                                        $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
@@ -351,11 +359,11 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
                                                } 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
@@ -366,7 +374,7 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
 /**\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