Changeset 93568 in spip-zone
- Timestamp:
- Dec 11, 2015, 7:33:18 PM (5 years ago)
- Location:
- _plugins_/saisies/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/saisies/trunk/inc/saisies_afficher.php
r93501 r93568 2 2 3 3 /** 4 * Gestion de l'affichage des saisies 4 * Gestion de l'affichage des saisies. 5 5 * 6 6 * @return SPIP\Saisies\Afficher 7 **/7 **/ 8 8 9 9 // Sécurité 10 if (!defined('_ECRIRE_INC_VERSION')) return; 10 if (!defined('_ECRIRE_INC_VERSION')) { 11 return; 12 } 11 13 12 14 /** … … 22 24 * 23 25 * @param array $champ 24 * Tableau de description de la saisie26 * Tableau de description de la saisie 25 27 * @param array $env 26 * Environnement transmis à la saisie, certainement l'environnement du formulaire27 * @param bool $utiliser_editable28 * - false pour juste tester le cas -128 * Environnement transmis à la saisie, certainement l'environnement du formulaire 29 * @param bool $utiliser_editable 30 * - false pour juste tester le cas -1 29 31 * 30 32 * @return bool 31 * Retourne un booléen indiquant l'état éditable ou pas :32 * - true si la saisie est éditable (peut être affichée)33 * - false sinon33 * Retourne un booléen indiquant l'état éditable ou pas : 34 * - true si la saisie est éditable (peut être affichée) 35 * - false sinon 34 36 */ 35 function saisie_editable($champ, $env, $utiliser_editable =true) {37 function saisie_editable($champ, $env, $utiliser_editable = true) { 36 38 if ($utiliser_editable) { 37 39 // si le champ n'est pas éditable, on sort. … … 55 57 $nom = $champ['options']['nom']; 56 58 if (isset($env[$nom])) { 57 return $env[$nom] ? true : false 59 return $env[$nom] ? true : false; 58 60 } 59 61 } 60 62 // sinon, si on a des sous saisies 61 63 if (isset($champ['saisies']) and is_array($champ['saisies'])) { 62 foreach ($champ['saisies'] as $saisie) {64 foreach ($champ['saisies'] as $saisie) { 63 65 if (saisie_editable($saisie, $env, false)) { 64 66 return true; … … 72 74 73 75 /** 74 * Génère une saisie à partir d'un tableau la décrivant et de l'environnement 76 * Génère une saisie à partir d'un tableau la décrivant et de l'environnement. 75 77 * 76 78 * @param array $champ 77 * Description de la saisie.78 * Le tableau doit être de la forme suivante :79 * array(80 * 81 * 82 * 83 * 84 * 85 * 86 * 87 * )79 * Description de la saisie. 80 * Le tableau doit être de la forme suivante : 81 * array( 82 * 'saisie' => 'input', 83 * 'options' => array( 84 * 'nom' => 'le_name', 85 * 'label' => 'Un titre plus joli', 86 * 'obligatoire' => 'oui', 87 * 'explication' => 'Remplissez ce champ en utilisant votre clavier.' 88 * ) 89 * ) 88 90 * @param array $env 89 * Environnement du formulaire 90 * Permet de savoir les valeurs actuelles des contenus des saisies, 91 * les erreurs eventuelles présentes... 91 * Environnement du formulaire 92 * Permet de savoir les valeurs actuelles des contenus des saisies, 93 * les erreurs eventuelles présentes... 94 * 92 95 * @return string 93 * Code HTML des saisies de formulaire96 * Code HTML des saisies de formulaire 94 97 */ 95 function saisies_generer_html($champ, $env =array()){98 function saisies_generer_html($champ, $env = array()) { 96 99 // Si le parametre n'est pas bon, on genere du vide 97 if (!is_array($champ)) 100 if (!is_array($champ)) { 98 101 return ''; 102 } 99 103 100 104 // Si la saisie n'est pas editable, on sort aussi. … … 113 117 114 118 // Peut-être des transformations à faire sur les options textuelles 115 $options = $champ['options'];116 foreach ($options as $option => $valeur) {119 $options = isset($champ['options']) ? $champ['options'] : array(); 120 foreach ($options as $option => $valeur) { 117 121 if ($option == 'datas') { 118 122 // exploser une chaine datas en tableau (applique _T_ou_typo sur chaque valeur) … … 132 136 133 137 // Si env est définie dans les options ou qu'il y a des enfants, on ajoute tout l'environnement 134 if (isset($contexte['env']) or (isset($champ['saisies']) ANDis_array($champ['saisies']))) {138 if (isset($contexte['env']) or (isset($champ['saisies']) and is_array($champ['saisies']))) { 135 139 unset($contexte['env']); 136 140 … … 146 150 if (isset($saisies_disponibles[$contexte['type_saisie']]) and is_array($saisies_disponibles[$contexte['type_saisie']]['options'])) { 147 151 $options_a_supprimer = saisies_lister_champs($saisies_disponibles[$contexte['type_saisie']]['options']); 148 foreach ($options_a_supprimer as $option_a_supprimer) {152 foreach ($options_a_supprimer as $option_a_supprimer) { 149 153 unset($env[$option_a_supprimer]); 150 154 } … … 154 158 } 155 159 // Sinon on ne sélectionne que quelques éléments importants 156 else {160 else { 157 161 // On récupère la liste des erreurs 158 162 $contexte['erreurs'] = $env['erreurs']; 159 163 // On récupère la langue de l'objet si existante 160 if (isset($env['langue']))164 if (isset($env['langue'])) { 161 165 $contexte['langue'] = $env['langue']; 166 } 162 167 // On ajoute toujours le bon self 163 168 $contexte['self'] = self(); … … 166 171 // Dans tous les cas on récupère de l'environnement la valeur actuelle du champ 167 172 // Si le nom du champ est un tableau indexé, il faut parser ! 168 if ( preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)){173 if (isset($contexte['nom']) and preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) { 169 174 $contexte['valeur'] = $env[$separe[1]]; 170 175 preg_match_all('/\[([\w]+)\]/', $separe[2], $index); 171 176 // On va chercher au fond du tableau 172 foreach ($index[1] as $cle){177 foreach ($index[1] as $cle) { 173 178 $contexte['valeur'] = isset($contexte['valeur'][$cle]) ? $contexte['valeur'][$cle] : null; 174 179 } … … 176 181 // Sinon la valeur est juste celle du nom 177 182 else { 178 $contexte['valeur'] = (isset($ env[$contexte['nom']]) ? $env[$contexte['nom']] : null);183 $contexte['valeur'] = (isset($contexte['nom']) and isset($env[$contexte['nom']]) ? $env[$contexte['nom']] : null); 179 184 } 180 185 … … 192 197 193 198 /** 194 * Génère une vue d'une saisie à partir d'un tableau la décrivant 199 * Génère une vue d'une saisie à partir d'un tableau la décrivant. 195 200 * 196 201 * @see saisies_generer_html() 202 * 197 203 * @param array $saisie 198 * Tableau de description d'une saisie204 * Tableau de description d'une saisie 199 205 * @param array $env 200 * L'environnement, contenant normalement la réponse à la saisie206 * L'environnement, contenant normalement la réponse à la saisie 201 207 * @param array $env_obligatoire 202 * ??? 208 * ??? 209 * 203 210 * @return string 204 * Code HTML de la vue de la saisie211 * Code HTML de la vue de la saisie 205 212 */ 206 function saisies_generer_vue($saisie, $env =array(), $env_obligatoire=array()){213 function saisies_generer_vue($saisie, $env = array(), $env_obligatoire = array()) { 207 214 // Si le paramètre n'est pas bon, on génère du vide 208 if (!is_array($saisie)) 215 if (!is_array($saisie)) { 209 216 return ''; 217 } 210 218 211 219 $contexte = array(); … … 216 224 // Peut-être des transformations à faire sur les options textuelles 217 225 $options = $saisie['options']; 218 foreach ($options as $option => $valeur) {226 foreach ($options as $option => $valeur) { 219 227 if ($option == 'datas') { 220 228 // exploser une chaine datas en tableau (applique _T_ou_typo sur chaque valeur) … … 229 237 230 238 // Si env est définie dans les options ou qu'il y a des enfants, on ajoute tout l'environnement 231 if (isset($contexte['env']) or (isset($saisie['saisies']) AND is_array($saisie['saisies']))){239 if (isset($contexte['env']) or (isset($saisie['saisies']) and is_array($saisie['saisies']))) { 232 240 unset($contexte['env']); 233 241 … … 242 250 243 251 if (isset($saisies_disponibles[$contexte['type_saisie']]['options']) 244 and is_array($saisies_disponibles[$contexte['type_saisie']]['options'])) 245 { 252 and is_array($saisies_disponibles[$contexte['type_saisie']]['options'])) { 246 253 $options_a_supprimer = saisies_lister_champs($saisies_disponibles[$contexte['type_saisie']]['options']); 247 254 foreach ($options_a_supprimer as $option_a_supprimer) { … … 256 263 257 264 // On regarde en priorité s'il y a un tableau listant toutes les valeurs 258 if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])) {265 if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])) { 259 266 $contexte['valeur'] = $env['valeurs'][$contexte['nom']]; 260 267 } 261 268 // Si le nom du champ est un tableau indexé, il faut parser ! 262 elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {269 elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) { 263 270 $contexte['valeur'] = $env[$separe[1]]; 264 271 preg_match_all('/\[([\w]+)\]/', $separe[2], $index); 265 272 // On va chercher au fond du tableau 266 foreach ($index[1] as $cle){273 foreach ($index[1] as $cle) { 267 274 $contexte['valeur'] = $contexte['valeur'][$cle]; 268 275 } … … 275 282 276 283 // Si ya des enfants on les remonte dans le contexte 277 if (isset($saisie['saisies']) AND is_array($saisie['saisies']))284 if (isset($saisie['saisies']) and is_array($saisie['saisies'])) { 278 285 $contexte['saisies'] = $saisie['saisies']; 286 } 279 287 280 288 if (is_array($env_obligatoire)) { … … 293 301 * pour produire un affichage conditionnel des saisies ayant une option afficher_si ou afficher_si_remplissage. 294 302 * 295 * @param array $saisies296 * Tableau de descriptions des saisies303 * @param array $saisies 304 * Tableau de descriptions des saisies 297 305 * @param string $id_form 298 * Identifiant unique pour le formulaire 306 * Identifiant unique pour le formulaire 307 * 299 308 * @return text 300 * Code javascript309 * Code javascript 301 310 */ 302 function saisies_generer_js_afficher_si($saisies, $id_form){311 function saisies_generer_js_afficher_si($saisies, $id_form) { 303 312 $i = 0; 304 $saisies = saisies_lister_par_nom($saisies, true);313 $saisies = saisies_lister_par_nom($saisies, true); 305 314 $code = ''; 306 315 $code .= '(function($){'; 307 316 $code .= '$(document).ready(function(){chargement=true;'; 308 309 310 317 $code .= 'verifier_saisies_'.$id_form." = function(form){\n"; 318 foreach ($saisies as $saisie) { 319 // on utilise comme selecteur l'identifiant de saisie en priorite s'il est connu 311 320 // parce que conteneur_class = 'tableau[nom][option]' ne fonctionne evidement pas 312 321 // lorsque le name est un tableau 313 322 if (isset($saisie['options']['afficher_si']) or isset($saisie['options']['afficher_si_remplissage'])) { 314 $i++;323 ++$i; 315 324 // retrouver la classe css probable 316 325 switch ($saisie['saisie']) { … … 326 335 $afficher_si = isset($saisie['options']['afficher_si']) ? $saisie['options']['afficher_si'] : ''; 327 336 $afficher_si_remplissage = isset($saisie['options']['afficher_si_remplissage']) ? $saisie['options']['afficher_si_remplissage'] : ''; 328 $condition = join("\n", array_filter(array($afficher_si, $afficher_si_remplissage)));337 $condition = implode("\n", array_filter(array($afficher_si, $afficher_si_remplissage))); 329 338 // retrouver l'identifiant 330 339 $identifiant = ''; … … 335 344 preg_match_all('#@plugin:(.+)@#U', $condition, $matches); 336 345 foreach ($matches[1] as $plug) { 337 if (defined('_DIR_PLUGIN_'.strtoupper($plug))) 346 if (defined('_DIR_PLUGIN_'.strtoupper($plug))) { 338 347 $condition = preg_replace('#@plugin:'.$plug.'@#U', 'true', $condition); 339 else348 } else { 340 349 $condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition); 350 } 341 351 } 342 352 // On gère le cas @config:plugin:meta@ suivi d'un test … … 349 359 preg_match_all('#@(.+)@#U', $condition, $matches); 350 360 foreach ($matches[1] as $nom) { 351 switch ($saisies[$nom]['saisie']) {361 switch ($saisies[$nom]['saisie']) { 352 362 case 'radio': 353 363 case 'oui_non': … … 362 372 foreach ($matches2[2] as $value) { 363 373 $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); 364 374 } 365 375 break; 366 376 default: … … 376 386 $code .= 'else {if (chargement==true) {$(form).find("'.$sel.'").hide(400).css("display","none");} else {$(form).find("'.$sel.'").hide(400);};} '."\n"; 377 387 } 378 379 $code .= "};";380 381 388 } 389 $code .= '};'; 390 $code .= '$("#afficher_si_'.$id_form.'").parents("form").each(function(){verifier_saisies_'.$id_form.'(this);});'; 391 $code .= '$("#afficher_si_'.$id_form.'").parents("form").change(function(){verifier_saisies_'.$id_form.'(this);});'; 382 392 $code .= 'chargement=false;})'; 383 393 $code .= '})(jQuery);'; 384 return $i>0 ? $code : ''; 394 395 return $i > 0 ? $code : ''; 385 396 } 386 397 … … 393 404 * (on passe leur valeur à NULL). 394 405 * 395 * @param array $saisies396 * Tableau de descriptions de saisies406 * @param array $saisies 407 * Tableau de descriptions de saisies 397 408 * @param array|null $env 398 * Tableau d'environnement transmis dans inclure/voi_saisies.html, 399 * NULL si on doit rechercher dans _request (pour saisies_verifier()). 409 * Tableau d'environnement transmis dans inclure/voi_saisies.html, 410 * NULL si on doit rechercher dans _request (pour saisies_verifier()). 411 * 400 412 * @return array 401 * Tableau de descriptions de saisies413 * Tableau de descriptions de saisies 402 414 */ 403 function saisies_verifier_afficher_si($saisies, $env =NULL) {415 function saisies_verifier_afficher_si($saisies, $env = null) { 404 416 // eviter une erreur par maladresse d'appel :) 405 417 if (!is_array($saisies)) { … … 412 424 preg_match_all('#@plugin:(.+)@#U', $condition, $matches); 413 425 foreach ($matches[1] as $plug) { 414 if (defined('_DIR_PLUGIN_'.strtoupper($plug))) 426 if (defined('_DIR_PLUGIN_'.strtoupper($plug))) { 415 427 $condition = preg_replace('#@plugin:'.$plug.'@#U', 'true', $condition); 416 else428 } else { 417 429 $condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition); 430 } 418 431 } 419 432 // On gère le cas @config:plugin:meta@ suivi d'un test … … 424 437 } 425 438 // On transforme en une condition valide 426 if (is_null($env)) 439 if (is_null($env)) { 427 440 $condition = preg_replace('#@(.+)@#U', '_request(\'$1\')', $condition); 428 else441 } else { 429 442 $condition = preg_replace('#@(.+)@#U', '$env["valeurs"][\'$1\']', $condition); 443 } 430 444 eval('$ok = '.$condition.';'); 431 445 if (!$ok) { 432 446 unset($saisies[$cle]); 433 if (is_null($env)) set_request($saisie['options']['nom'],NULL); 434 } 435 } 436 if (isset($saisies[$cle]['saisies'])) // S'il s'agit d'un fieldset ou equivalent, verifier les sous-saisies 447 if (is_null($env)) { 448 set_request($saisie['options']['nom'], null); 449 } 450 } 451 } 452 if (isset($saisies[$cle]['saisies'])) { // S'il s'agit d'un fieldset ou equivalent, verifier les sous-saisies 437 453 $saisies[$cle]['saisies'] = saisies_verifier_afficher_si($saisies[$cle]['saisies'], $env); 438 } 454 } 455 } 456 439 457 return $saisies; 440 458 } -
_plugins_/saisies/trunk/inc/saisies_lister.php
r87652 r93568 2 2 3 3 /** 4 * Gestion de listes des saisies 4 * Gestion de listes des saisies. 5 5 * 6 6 * @return SPIP\Saisies\Listes 7 **/7 **/ 8 8 9 9 // Sécurité 10 if (!defined('_ECRIRE_INC_VERSION')) return; 10 if (!defined('_ECRIRE_INC_VERSION')) { 11 return; 12 } 11 13 12 14 /** … … 14 16 * les saisies "à plat" classées par identifiant unique. 15 17 * 16 * @param array $contenu Le contenu d'un formulaire 17 * @param bool $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldsets 18 * @param array $contenu Le contenu d'un formulaire 19 * @param bool $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldsets 20 * 18 21 * @return array Un tableau avec uniquement les saisies 19 22 */ 20 function saisies_lister_par_identifiant($contenu, $avec_conteneur =true){23 function saisies_lister_par_identifiant($contenu, $avec_conteneur = true) { 21 24 $saisies = array(); 22 25 23 if (is_array($contenu)) {24 foreach ($contenu as $ligne) {26 if (is_array($contenu)) { 27 foreach ($contenu as $ligne) { 25 28 if (is_array($ligne)) { 26 29 $enfants_presents = (isset($ligne['saisies']) and is_array($ligne['saisies'])); 27 if (array_key_exists('saisie', $ligne) and (!$enfants_presents or $avec_conteneur)) {30 if (array_key_exists('saisie', $ligne) and (!$enfants_presents or $avec_conteneur)) { 28 31 $saisies[$ligne['identifiant']] = $ligne; 29 32 } … … 34 37 } 35 38 } 36 39 37 40 return $saisies; 38 41 } … … 42 45 * les saisies "à plat" classées par nom. 43 46 * 44 * @param array $contenu Le contenu d'un formulaire 45 * @param bool $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldset 47 * @param array $contenu Le contenu d'un formulaire 48 * @param bool $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldset 49 * 46 50 * @return array Un tableau avec uniquement les saisies 47 51 */ 48 function saisies_lister_par_nom($contenu, $avec_conteneur =true){52 function saisies_lister_par_nom($contenu, $avec_conteneur = true) { 49 53 $saisies = array(); 50 51 if (is_array($contenu)) {52 foreach ($contenu as $ligne) {53 if (is_array($ligne)) {54 if (array_key_exists('saisie', $ligne) and (!isset($ligne['saisies']) OR !is_array($ligne['saisies']) or $avec_conteneur)){54 55 if (is_array($contenu)) { 56 foreach ($contenu as $ligne) { 57 if (is_array($ligne)) { 58 if (array_key_exists('saisie', $ligne) and (!isset($ligne['saisies']) or !is_array($ligne['saisies']) or $avec_conteneur) and isset($ligne['options'])) { 55 59 $saisies[$ligne['options']['nom']] = $ligne; 56 60 } 57 if (isset($ligne['saisies']) AND is_array($ligne['saisies'])){61 if (isset($ligne['saisies']) and is_array($ligne['saisies'])) { 58 62 $saisies = array_merge($saisies, saisies_lister_par_nom($ligne['saisies'])); 59 63 } … … 61 65 } 62 66 } 63 67 64 68 return $saisies; 65 69 } … … 67 71 /** 68 72 * Liste les saisies ayant une option X 69 * # saisies_lister_avec_option('sql', $saisies); 70 * 71 * 72 * @param String $option Nom de l'option cherchée 73 * @param Array $saisies Liste de saisies 74 * @param String $tri tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant') 73 * # saisies_lister_avec_option('sql', $saisies);. 74 * 75 * 76 * @param String $option Nom de l'option cherchée 77 * @param Array $saisies Liste de saisies 78 * @param String $tri tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant') 79 * 75 80 * @return liste de ces saisies triees par nom ayant une option X définie 76 81 */ … … 80 85 $s = array_keys($saisies); 81 86 if (is_int(array_shift($s))) { 82 $trier = 'saisies_lister_par_' .$tri;87 $trier = 'saisies_lister_par_'.$tri; 83 88 $saisies = $trier($saisies); 84 89 } … … 93 98 94 99 /** 95 * Liste les saisies ayant une definition SQL 96 * 97 * @param Array $saisies liste de saisies 98 * @param String $tri tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant') 100 * Liste les saisies ayant une definition SQL. 101 * 102 * @param Array $saisies liste de saisies 103 * @param String $tri tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant') 104 * 99 105 * @return liste de ces saisies triees par nom ayant une option sql définie 100 106 */ … … 106 112 * Prend la description complète du contenu d'un formulaire et retourne 107 113 * les saisies "à plat" classées par type de saisie. 108 * $saisie['input']['input_1'] = $saisie 114 * $saisie['input']['input_1'] = $saisie. 109 115 * 110 116 * @param array $contenu Le contenu d'un formulaire 117 * 111 118 * @return array Un tableau avec uniquement les saisies 112 119 */ 113 120 function saisies_lister_par_type($contenu) { 114 121 $saisies = array(); 115 116 if (is_array($contenu)) {117 foreach ($contenu as $ligne) {118 if (is_array($ligne)) {119 if (array_key_exists('saisie', $ligne) and (!is_array($ligne['saisies']))) {122 123 if (is_array($contenu)) { 124 foreach ($contenu as $ligne) { 125 if (is_array($ligne)) { 126 if (array_key_exists('saisie', $ligne) and (!is_array($ligne['saisies']))) { 120 127 $saisies[ $ligne['saisie'] ][ $ligne['options']['nom'] ] = $ligne; 121 128 } 122 if (is_array($ligne['saisies'])) {129 if (is_array($ligne['saisies'])) { 123 130 $saisies = array_merge_recursive($saisies, saisies_lister_par_type($ligne['saisies'])); 124 131 } … … 126 133 } 127 134 } 128 135 129 136 return $saisies; 130 137 } … … 134 141 * une liste des noms des champs du formulaire. 135 142 * 136 * @param array $contenu Le contenu d'un formulaire 137 * @param bool $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldset 143 * @param array $contenu Le contenu d'un formulaire 144 * @param bool $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldset 145 * 138 146 * @return array Un tableau listant les noms des champs 139 147 */ 140 function saisies_lister_champs($contenu, $avec_conteneur =true){148 function saisies_lister_champs($contenu, $avec_conteneur = true) { 141 149 $saisies = saisies_lister_par_nom($contenu, $avec_conteneur); 150 142 151 return array_keys($saisies); 143 152 } … … 146 155 * A utiliser dans une fonction charger d'un formulaire CVT, 147 156 * cette fonction renvoie le tableau de contexte correspondant 148 * de la forme $contexte['nom_champ'] = '' 157 * de la forme $contexte['nom_champ'] = ''. 149 158 * 150 159 * @param array $contenu Le contenu d'un formulaire (un tableau de saisies) 160 * 151 161 * @return array Un tableau de contexte 152 162 */ … … 155 165 // return array_fill_keys(saisies_lister_champs($contenu, false), ''); 156 166 $champs = array(); 157 foreach (saisies_lister_champs($contenu, false) as $champ) 167 foreach (saisies_lister_champs($contenu, false) as $champ) { 158 168 $champs[$champ] = ''; 169 } 170 159 171 return $champs; 160 172 } … … 165 177 * 166 178 * @param array $contenu Le contenu d'un formulaire 179 * 167 180 * @return array Un tableau renvoyant la valeur par défaut de chaque champs 168 181 */ 169 function saisies_lister_valeurs_defaut($contenu) {182 function saisies_lister_valeurs_defaut($contenu) { 170 183 $contenu = saisies_lister_par_nom($contenu, false); 171 184 $defauts = array(); 172 foreach ($contenu as $nom => $saisie) {185 foreach ($contenu as $nom => $saisie) { 173 186 // Si le nom du champ est un tableau indexé, il faut parser ! 174 if (preg_match('/([\w]+)((\[[\w]+\])+)/', $nom, $separe)) {187 if (preg_match('/([\w]+)((\[[\w]+\])+)/', $nom, $separe)) { 175 188 $nom = $separe[1]; 176 189 // Dans ce cas on ne récupère que le nom, la valeur par défaut du tableau devra être renseigné autre part 177 190 $defauts[$nom] = array(); 178 } 179 else{ 191 } else { 180 192 $defauts[$nom] = isset($saisie['options']['defaut']) ? $saisie['options']['defaut'] : ''; 181 193 } 182 194 } 195 183 196 return $defauts; 184 197 } 185 198 186 199 /** 187 * Compare deux tableaux de saisies pour connaitre les différences 188 * @param array $saisies_anciennes Un tableau décrivant des saisies 189 * @param array $saisies_nouvelles Un autre tableau décrivant des saisies 190 * @param bool $avec_conteneur Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets 191 * @param string $tri Comparer selon quel tri ? 'nom' / 'identifiant' 200 * Compare deux tableaux de saisies pour connaitre les différences. 201 * 202 * @param array $saisies_anciennes Un tableau décrivant des saisies 203 * @param array $saisies_nouvelles Un autre tableau décrivant des saisies 204 * @param bool $avec_conteneur Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets 205 * @param string $tri Comparer selon quel tri ? 'nom' / 'identifiant' 206 * 192 207 * @return array Retourne le tableau des saisies supprimées, ajoutées et modifiées 193 208 */ 194 function saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur =true, $tri = 'nom') {209 function saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true, $tri = 'nom') { 195 210 $trier = "saisies_lister_par_$tri"; 196 211 $saisies_anciennes = $trier($saisies_anciennes, $avec_conteneur); 197 212 $saisies_nouvelles = $trier($saisies_nouvelles, $avec_conteneur); 198 213 199 214 // Les saisies supprimées sont celles qui restent dans les anciennes quand on a enlevé toutes les nouvelles 200 215 $saisies_supprimees = array_diff_key($saisies_anciennes, $saisies_nouvelles); … … 208 223 // Et enfin les saisies qui ont le même nom et la même valeur 209 224 $saisies_identiques = array_diff_key($saisies_restantes, $saisies_modifiees); 210 225 211 226 return array( 212 227 'supprimees' => $saisies_supprimees, 213 228 'ajoutees' => $saisies_ajoutees, 214 229 'modifiees' => $saisies_modifiees, 215 'identiques' => $saisies_identiques 230 'identiques' => $saisies_identiques, 216 231 ); 217 232 } 218 233 219 234 /** 220 * Compare deux saisies et indique si elles sont égales ou pas 235 * Compare deux saisies et indique si elles sont égales ou pas. 221 236 * 222 237 * @param array $a Une description de saisie 223 238 * @param array $b Une autre description de saisie 239 * 224 240 * @return int Retourne 0 si les saisies sont identiques, 1 sinon. 225 241 */ 226 function saisies_comparer_rappel($a, $b){ 227 if ($a === $b) return 0; 228 else return 1; 242 function saisies_comparer_rappel($a, $b) { 243 if ($a === $b) { 244 return 0; 245 } else { 246 return 1; 247 } 229 248 } 230 249 231 250 /** 232 251 * Compare deux tableaux de saisies pour connaitre les différences 233 * en s'appuyant sur les identifiants de saisies 252 * en s'appuyant sur les identifiants de saisies. 234 253 * 235 254 * @see saisies_comparer() 255 * 236 256 * @param array $saisies_anciennes Un tableau décrivant des saisies 237 257 * @param array $saisies_nouvelles Un autre tableau décrivant des saisies 238 * @param bool $avec_conteneur Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets 258 * @param bool $avec_conteneur Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets 259 * 239 260 * @return array Retourne le tableau des saisies supprimées, ajoutées et modifiées 240 261 */ 241 function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles, $avec_conteneur =true) {262 function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true) { 242 263 return saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur, $tri = 'identifiant'); 243 264 } 244 265 245 266 /** 246 * Liste toutes les saisies configurables (ayant une description) 267 * Liste toutes les saisies configurables (ayant une description). 247 268 * 248 269 * @return array Un tableau listant des saisies et leurs options 249 270 */ 250 function saisies_lister_disponibles() {271 function saisies_lister_disponibles() { 251 272 static $saisies = null; 252 253 if (is_null($saisies)) {273 274 if (is_null($saisies)) { 254 275 $saisies = array(); 255 276 $liste = find_all_in_path('saisies/', '.+[.]yaml$'); 256 257 if (count($liste)) {258 foreach ($liste as $fichier =>$chemin){277 278 if (count($liste)) { 279 foreach ($liste as $fichier => $chemin) { 259 280 $type_saisie = preg_replace(',[.]yaml$,i', '', $fichier); 260 281 $dossier = str_replace($fichier, '', $chemin); … … 264 285 is_array($saisie = saisies_charger_infos($type_saisie)) 265 286 ) 266 ) {287 ) { 267 288 $saisies[$type_saisie] = $saisie; 268 289 } … … 270 291 } 271 292 } 272 273 return $saisies; 274 } 275 276 /** 277 * Lister les saisies existantes ayant une définition SQL 293 294 return $saisies; 295 } 296 297 /** 298 * Lister les saisies existantes ayant une définition SQL. 278 299 * 279 300 * @return array Un tableau listant des saisies et leurs options … … 282 303 $saisies = array(); 283 304 $saisies_disponibles = saisies_lister_disponibles(); 284 foreach ($saisies_disponibles as $type =>$saisie) {305 foreach ($saisies_disponibles as $type => $saisie) { 285 306 if (isset($saisie['defaut']['options']['sql']) and $saisie['defaut']['options']['sql']) { 286 307 $saisies[$type] = $saisie; 287 308 } 288 309 } 289 return $saisies; 290 } 291 292 /** 293 * Charger les informations contenues dans le YAML d'une saisie 310 311 return $saisies; 312 } 313 314 /** 315 * Charger les informations contenues dans le YAML d'une saisie. 294 316 * 295 317 * @param string $type_saisie Le type de la saisie 318 * 296 319 * @return array Un tableau contenant le YAML décodé 297 320 */ 298 function saisies_charger_infos($type_saisie) {299 if (defined('_DIR_PLUGIN_YAML')){321 function saisies_charger_infos($type_saisie) { 322 if (defined('_DIR_PLUGIN_YAML')) { 300 323 include_spip('inc/yaml'); 301 324 $fichier = find_in_path("saisies/$type_saisie.yaml"); 302 325 $saisie = yaml_decode_file($fichier); 303 if (is_array($saisie)) {304 $saisie['titre'] = (isset($saisie['titre']) AND$saisie['titre'])326 if (is_array($saisie)) { 327 $saisie['titre'] = (isset($saisie['titre']) and $saisie['titre']) 305 328 ? _T_ou_typo($saisie['titre']) : $type_saisie; 306 $saisie['description'] = (isset($saisie['description']) AND$saisie['description'])329 $saisie['description'] = (isset($saisie['description']) and $saisie['description']) 307 330 ? _T_ou_typo($saisie['description']) : ''; 308 $saisie['icone'] = (isset($saisie['icone']) AND$saisie['icone'])331 $saisie['icone'] = (isset($saisie['icone']) and $saisie['icone']) 309 332 ? find_in_path($saisie['icone']) : ''; 310 333 } 311 } else334 } else { 312 335 $saisie = array(); 336 } 337 313 338 return $saisie; 314 339 } 315 340 316 341 /** 317 * Quelles sont les saisies qui se débrouillent toutes seules, sans le _base commun 342 * Quelles sont les saisies qui se débrouillent toutes seules, sans le _base commun. 318 343 * 319 344 * @return array Retourne un tableau contenant les types de saisies qui ne doivent pas utiliser le _base.html commun 320 345 */ 321 function saisies_autonomes() {346 function saisies_autonomes() { 322 347 $saisies_autonomes = pipeline( 323 348 'saisies_autonomes', … … 325 350 'fieldset', 326 351 'hidden', 327 'destinataires', 328 'explication' 352 'destinataires', 353 'explication', 329 354 ) 330 355 ); 331 356 332 357 return $saisies_autonomes; 333 358 } 334 -
_plugins_/saisies/trunk/inc/saisies_manipuler.php
r87651 r93568 2 2 3 3 /** 4 * Gestion de l'affichage des saisies 4 * Gestion de l'affichage des saisies. 5 5 * 6 6 * @return SPIP\Saisies\Manipuler 7 **/7 **/ 8 8 9 9 // Sécurité 10 if (!defined('_ECRIRE_INC_VERSION')) return; 11 12 /** 13 * Supprimer une saisie dont on donne l'identifiant, le nom ou le chemin 14 * 15 * @param array $saisies 16 * Tableau des descriptions de saisies 10 if (!defined('_ECRIRE_INC_VERSION')) { 11 return; 12 } 13 14 /** 15 * Supprimer une saisie dont on donne l'identifiant, le nom ou le chemin. 16 * 17 * @param array $saisies 18 * Tableau des descriptions de saisies 17 19 * @param string|array $id_ou_nom_ou_chemin 18 * L'identifiant unique 19 * ou le nom de la saisie à supprimer 20 * ou son chemin sous forme d'une liste de clés 20 * L'identifiant unique 21 * ou le nom de la saisie à supprimer 22 * ou son chemin sous forme d'une liste de clés 23 * 21 24 * @return array 22 * Tableau modifié décrivant les saisies23 */ 24 function saisies_supprimer($saisies, $id_ou_nom_ou_chemin) {25 * Tableau modifié décrivant les saisies 26 */ 27 function saisies_supprimer($saisies, $id_ou_nom_ou_chemin) { 25 28 // Si la saisie n'existe pas, on ne fait rien 26 if ($chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true)) {29 if ($chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true)) { 27 30 // La position finale de la saisie 28 31 $position = array_pop($chemin); 29 32 30 33 // On va chercher le parent par référence pour pouvoir le modifier 31 $parent = &$saisies;32 foreach ($chemin as $cle){33 $parent = &$parent[$cle];34 } 35 34 $parent = &$saisies; 35 foreach ($chemin as $cle) { 36 $parent = &$parent[$cle]; 37 } 38 36 39 // On supprime et réordonne 37 40 unset($parent[$position]); 38 41 $parent = array_values($parent); 39 42 } 40 41 return $saisies; 42 } 43 44 /** 45 * Insère une saisie à une position donnée 43 44 return $saisies; 45 } 46 47 /** 48 * Insère une saisie à une position donnée. 46 49 * 47 50 * @param array $saisies 48 * Tableau des descriptions de saisies51 * Tableau des descriptions de saisies 49 52 * @param array $saisie 50 * Description de la saisie à insérer53 * Description de la saisie à insérer 51 54 * @param array $chemin 52 * Position complète où insérer la saisie. 53 * En absence, insère la saisie à la fin. 55 * Position complète où insérer la saisie. 56 * En absence, insère la saisie à la fin. 57 * 54 58 * @return array 55 * Tableau des saisies complété de la saisie insérée56 */ 57 function saisies_inserer($saisies, $saisie, $chemin =array()){59 * Tableau des saisies complété de la saisie insérée 60 */ 61 function saisies_inserer($saisies, $saisie, $chemin = array()) { 58 62 // On vérifie quand même que ce qu'on veut insérer est correct 59 if ($saisie['saisie'] and $saisie['options']['nom']) {63 if ($saisie['saisie'] and $saisie['options']['nom']) { 60 64 // ajouter un identifiant 61 65 $saisie = saisie_identifier($saisie); 62 66 63 67 // Par défaut le parent c'est la racine 64 $parent = &$saisies;68 $parent = &$saisies; 65 69 // S'il n'y a pas de position, on va insérer à la fin du formulaire 66 if (!$chemin) {70 if (!$chemin) { 67 71 $position = count($parent); 68 } 69 elseif (is_array($chemin)){ 72 } elseif (is_array($chemin)) { 70 73 $position = array_pop($chemin); 71 foreach ($chemin as $cle) {74 foreach ($chemin as $cle) { 72 75 // Si la clé est un conteneur de saisies "saisies" et qu'elle n'existe pas encore, on la crée 73 if ($cle == 'saisies' and !isset($parent[$cle])) 76 if ($cle == 'saisies' and !isset($parent[$cle])) { 74 77 $parent[$cle] = array(); 75 $parent =& $parent[$cle]; 78 } 79 $parent = &$parent[$cle]; 76 80 } 77 81 // On vérifie maintenant que la position est cohérente avec le parent 78 if ($position < 0) $position = 0; 79 elseif ($position > count($parent)) $position = count($parent); 82 if ($position < 0) { 83 $position = 0; 84 } elseif ($position > count($parent)) { 85 $position = count($parent); 86 } 80 87 } 81 88 // Et enfin on insère 82 89 array_splice($parent, $position, 0, array($saisie)); 83 90 } 84 91 85 92 return $saisies; 86 93 } … … 89 96 * Duplique une saisie (ou groupe de saisies) 90 97 * en placant la copie à la suite de la saisie d'origine. 91 * Modifie automatiquement les identifiants des saisies 92 * 93 * @param array $saisiesUn tableau décrivant les saisies98 * Modifie automatiquement les identifiants des saisies. 99 * 100 * @param array $saisies Un tableau décrivant les saisies 94 101 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie a dupliquer 102 * 95 103 * @return array Retourne le tableau modifié des saisies 96 104 */ 97 function saisies_dupliquer($saisies, $id_ou_nom_ou_chemin) {105 function saisies_dupliquer($saisies, $id_ou_nom_ou_chemin) { 98 106 // On récupère le contenu de la saisie à déplacer 99 107 $saisie = saisies_chercher($saisies, $id_ou_nom_ou_chemin); … … 103 111 $chemin_validation = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true); 104 112 // 1 de plus pour mettre APRES le champ trouve 105 $chemin_validation[count($chemin_validation)-1]++;113 ++$chemin_validation[count($chemin_validation) - 1]; 106 114 // On ajoute "copie" après le label du champs 107 115 $clone['options']['label'] .= ' '._T('saisies:construire_action_dupliquer_copie'); … … 109 117 // Création de nouveau identifiants pour le clone 110 118 $clone = saisie_identifier($clone, true); 111 119 112 120 $saisies = saisies_inserer($saisies, $clone, $chemin_validation); 113 121 } … … 117 125 118 126 /** 119 * Déplace une saisie existante autre part 120 * 121 * @param array $saisiesUn tableau décrivant les saisies127 * Déplace une saisie existante autre part. 128 * 129 * @param array $saisies Un tableau décrivant les saisies 122 130 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie à déplacer 123 * @param string $ou Le nom de la saisie devant laquelle on déplacera OU le nom d'un conteneur entre crochets [conteneur] 131 * @param string $ou Le nom de la saisie devant laquelle on déplacera OU le nom d'un conteneur entre crochets [conteneur] 132 * 124 133 * @return array Retourne le tableau modifié des saisies 125 134 */ 126 function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou) {135 function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou) { 127 136 // On récupère le contenu de la saisie à déplacer 128 137 $saisie = saisies_chercher($saisies, $id_ou_nom_ou_chemin); 129 138 130 139 // Si on l'a bien trouvé 131 if ($saisie) {140 if ($saisie) { 132 141 // On cherche l'endroit où la déplacer 133 142 // Si $ou est vide, c'est à la fin de la racine 134 if (!$ou) {143 if (!$ou) { 135 144 $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin); 136 145 $chemin = array(count($saisies)); 137 146 } 138 147 // Si l'endroit est entre crochet, c'est un conteneur 139 elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)) {148 elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)) { 140 149 $parent = $match[1]; 141 150 // Si dans les crochets il n'y a rien, on met à la fin du formulaire 142 if (!$parent) {151 if (!$parent) { 143 152 $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin); 144 153 $chemin = array(count($saisies)); 145 154 } 146 155 // Sinon on vérifie que ce conteneur existe 147 elseif (saisies_chercher($saisies, $parent, true)) {156 elseif (saisies_chercher($saisies, $parent, true)) { 148 157 // S'il existe on supprime la saisie et on recherche la nouvelle position 149 158 $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin); 150 159 $parent = saisies_chercher($saisies, $parent, true); 151 160 $chemin = array_merge($parent, array('saisies', 1000000)); 152 } 153 else 161 } else { 154 162 $chemin = false; 163 } 155 164 } 156 165 // Sinon ça sera devant un champ 157 else {166 else { 158 167 // On vérifie que le champ existe 159 if (saisies_chercher($saisies, $ou, true)) {168 if (saisies_chercher($saisies, $ou, true)) { 160 169 // S'il existe on supprime la saisie 161 170 $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin); 162 171 // Et on recherche la nouvelle position qui n'est plus forcément la même maintenant qu'on a supprimé une saisie 163 172 $chemin = saisies_chercher($saisies, $ou, true); 164 } 165 else 173 } else { 166 174 $chemin = false; 167 } 168 175 } 176 } 177 169 178 // Si seulement on a bien trouvé un nouvel endroit où la placer, alors on déplace 170 if ($chemin) 179 if ($chemin) { 171 180 $saisies = saisies_inserer($saisies, $saisie, $chemin); 172 } 173 174 return $saisies; 175 } 176 177 /** 178 * Modifie une saisie 179 * 180 * @param array $saisies Un tableau décrivant les saisies 181 } 182 } 183 184 return $saisies; 185 } 186 187 /** 188 * Modifie une saisie. 189 * 190 * @param array $saisies Un tableau décrivant les saisies 181 191 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie à modifier 182 * @param array $modifs Le tableau des modifications à apporter à la saisie 192 * @param array $modifs Le tableau des modifications à apporter à la saisie 193 * 183 194 * @return Retourne le tableau décrivant les saisies, mais modifié 184 195 */ 185 function saisies_modifier($saisies, $id_ou_nom_ou_chemin, $modifs) {196 function saisies_modifier($saisies, $id_ou_nom_ou_chemin, $modifs) { 186 197 $chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true); 187 198 $position = array_pop($chemin); 188 $parent = &$saisies;189 foreach ($chemin as $cle) {190 $parent = &$parent[$cle];191 } 192 199 $parent = &$saisies; 200 foreach ($chemin as $cle) { 201 $parent = &$parent[$cle]; 202 } 203 193 204 // On récupère le type tel quel 194 205 $modifs['saisie'] = $parent[$position]['saisie']; 195 206 // On récupère le nom s'il n'y est pas 196 if (!isset($modifs['options']['nom'])) {207 if (!isset($modifs['options']['nom'])) { 197 208 $modifs['options']['nom'] = $parent[$position]['options']['nom']; 198 209 } … … 202 213 and isset($parent[$position]['saisies']) 203 214 and is_array($parent[$position]['saisies']) 204 ) {215 ) { 205 216 $modifs['saisies'] = $parent[$position]['saisies']; 206 217 } … … 212 223 unset($modifs['options']['nouveau_type_saisie']); 213 224 } 214 225 215 226 // On remplace tout 216 227 $parent[$position] = $modifs; 217 228 218 229 // Cette méthode ne marche pas trop 219 230 //$parent[$position] = array_replace_recursive($parent[$position], $modifs); 220 221 return $saisies; 222 } 223 224 /** 225 * Transforme tous les noms du formulaire avec un preg_replace 226 * 227 * @param array $saisies228 * Un tableau décrivant les saisies231 232 return $saisies; 233 } 234 235 /** 236 * Transforme tous les noms du formulaire avec un preg_replace. 237 * 238 * @param array $saisies 239 * Un tableau décrivant les saisies 229 240 * @param string $masque 230 * Ce que l'on doit chercher dans le nom241 * Ce que l'on doit chercher dans le nom 231 242 * @param string $remplacement 232 * Ce par quoi on doit remplacer 243 * Ce par quoi on doit remplacer 244 * 233 245 * @return array 234 * Retourne le tableau modifié des saisies 235 */ 236 function saisies_transformer_noms($saisies, $masque, $remplacement){ 237 if (is_array($saisies)){ 238 foreach ($saisies as $cle => $saisie){ 239 $saisies[$cle]['options']['nom'] = preg_replace($masque, $remplacement, $saisie['options']['nom']); 246 * Retourne le tableau modifié des saisies 247 */ 248 function saisies_transformer_noms($saisies, $masque, $remplacement) { 249 if (is_array($saisies)) { 250 foreach ($saisies as $cle => $saisie) { 251 if (isset($saisies[$cle]['options']) and is_array($saisies[$cle]['options'])) { 252 $saisies[$cle]['options']['nom'] = preg_replace($masque, $remplacement, $saisie['options']['nom']); 253 } 240 254 if (isset($saisie['saisies']) and is_array($saisie['saisies'])) { 241 255 $saisies[$cle]['saisies'] = saisies_transformer_noms($saisie['saisies'], $masque, $remplacement); … … 243 257 } 244 258 } 245 259 246 260 return $saisies; 247 261 } … … 252 266 * 253 267 * @param array $formulaire 254 * Le formulaire à analyser268 * Le formulaire à analyser 255 269 * @param array $saisies 256 * Un tableau décrivant les saisies. 270 * Un tableau décrivant les saisies. 271 * 257 272 * @return array 258 * Retourne le tableau modifié des saisies 259 */ 260 function saisies_transformer_noms_auto($formulaire, $saisies){ 261 262 if (is_array($saisies)){ 263 foreach ($saisies as $cle => $saisie){ 264 $saisies[$cle]['options']['nom'] = saisies_generer_nom($formulaire, $saisie['saisie']); 273 * Retourne le tableau modifié des saisies 274 */ 275 function saisies_transformer_noms_auto($formulaire, $saisies) { 276 if (is_array($saisies)) { 277 foreach ($saisies as $cle => $saisie) { 278 if (isset($saisies[$cle]['options']) and is_array($saisies[$cle]['options'])) { 279 $saisies[$cle]['options']['nom'] = saisies_generer_nom($formulaire, $saisie['saisie']); 280 } 265 281 // il faut prendre en compte dans $formulaire les saisies modifiees 266 282 // sinon on aurait potentiellement 2 champs successifs avec le meme nom. … … 269 285 unset($new['saisies']); 270 286 $formulaire[] = $new; 271 272 if (is_array($saisie['saisies'])) 287 288 if (is_array($saisie['saisies'])) { 273 289 $saisies[$cle]['saisies'] = saisies_transformer_noms_auto($formulaire, $saisie['saisies']); 274 } 275 } 276 277 return $saisies; 278 } 279 280 /** 281 * Insère du HTML au début ou à la fin d'une saisie 282 * 283 * @param array $saisie La description d'une seule saisie 290 } 291 } 292 } 293 294 return $saisies; 295 } 296 297 /** 298 * Insère du HTML au début ou à la fin d'une saisie. 299 * 300 * @param array $saisie La description d'une seule saisie 284 301 * @param string $insertion Du code HTML à insérer dans la saisie 285 * @param string $ou L'endroit où insérer le HTML : "debut" ou "fin" 302 * @param string $ou L'endroit où insérer le HTML : "debut" ou "fin" 303 * 286 304 * @return array Retourne la description de la saisie modifiée 287 305 */ 288 function saisies_inserer_html($saisie, $insertion, $ou ='fin'){289 if (!in_array($ou, array('debut', 'fin'))) 306 function saisies_inserer_html($saisie, $insertion, $ou = 'fin') { 307 if (!in_array($ou, array('debut', 'fin'))) { 290 308 $ou = 'fin'; 291 309 } 310 292 311 if ($ou == 'debut') { 293 312 $saisie['options']['inserer_debut'] = 294 $insertion .(isset($saisie['options']['inserer_debut']) ? $saisie['options']['inserer_debut'] : '');313 $insertion.(isset($saisie['options']['inserer_debut']) ? $saisie['options']['inserer_debut'] : ''); 295 314 } elseif ($ou == 'fin') { 296 315 $saisie['options']['inserer_fin'] = 297 (isset($saisie['options']['inserer_fin']) ? $saisie['options']['inserer_fin'] : '') .$insertion;298 } 299 316 (isset($saisie['options']['inserer_fin']) ? $saisie['options']['inserer_fin'] : '').$insertion; 317 } 318 300 319 return $saisie; 301 320 } -
_plugins_/saisies/trunk/paquet.xml
r92769 r93568 2 2 prefix="saisies" 3 3 categorie="outil" 4 version="2.5. 19"4 version="2.5.20" 5 5 etat="stable" 6 6 compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset
for help on using the changeset viewer.