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