Changeset 97712 in spip-zone
- Timestamp:
- May 11, 2016, 9:40:24 AM (5 years ago)
- Location:
- _plugins_/saisies/trunk
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/saisies/trunk/action/deplacer_saisie.php
r87651 r97712 6 6 * @package SPIP\Saisies\Action 7 7 */ 8 9 if (!defined("_ECRIRE_INC_VERSION")) return; 8 9 if (!defined('_ECRIRE_INC_VERSION')) { 10 return; 11 } 10 12 11 13 /** … … 25 27 26 28 if (!$formulaire_actuel) { 27 return "";29 return ''; 28 30 } 29 31 30 32 include_spip('inc/saisies'); 31 33 32 34 $saisies_actuelles = saisies_lister_par_identifiant($formulaire_actuel); 33 35 if (!isset($saisies_actuelles[$identifiant])) { 34 return "";36 return ''; 35 37 } 36 38 37 39 // tester @id et [@id] (fieldset) 38 if ($ou and !isset($saisies_actuelles[$ou]) and !isset($saisies_actuelles[ substr($ou, 1,-1) ])) {39 return "";40 if ($ou and !isset($saisies_actuelles[$ou]) and !isset($saisies_actuelles[ substr($ou, 1, -1) ])) { 41 return ''; 40 42 } 41 43 … … 46 48 $formulaire_actuel = session_set($session, $formulaire_actuel); 47 49 } 48 -
_plugins_/saisies/trunk/balise/configurer_saisie.php
r93018 r97712 7 7 8 8 // Sécurité 9 if (!defined("_ECRIRE_INC_VERSION")) return; 9 if (!defined('_ECRIRE_INC_VERSION')) { 10 return; 11 } 10 12 11 13 /** … … 15 17 * @uses Pile::creer_et_ajouter_argument_balise() 16 18 * @see balise_INCLURE_dist() 17 * 19 * 18 20 * @param Champ $p 19 21 * @return Champ 20 22 **/ 21 function balise_CONFIGURER_SAISIE_dist($p) {23 function balise_CONFIGURER_SAISIE_dist($p) { 22 24 23 25 // On recupere le premier argument : le nom de la saisie … … 41 43 42 44 } 43 44 -
_plugins_/saisies/trunk/balise/generer_saisies.php
r93018 r97712 1 <?php 1 <?php 2 2 3 3 /** … … 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 /** … … 25 27 * @uses Pile::creer_et_ajouter_argument_balise() 26 28 * @see balise_INCLURE_dist() 27 * 29 * 28 30 * @param Champ $p 29 31 * Pile au niveau de la balise … … 31 33 * Pile complété du code à générer 32 34 **/ 33 function balise_GENERER_SAISIES_dist($p) {35 function balise_GENERER_SAISIES_dist($p) { 34 36 35 37 // On recupere le premier (et seul) argument : le tableau decrivant ce qu'on veut generer … … 53 55 54 56 } 55 -
_plugins_/saisies/trunk/balise/saisie.php
r93018 r97712 7 7 **/ 8 8 9 if (!defined("_ECRIRE_INC_VERSION")) return; 9 if (!defined('_ECRIRE_INC_VERSION')) { 10 return; 11 } 10 12 11 13 // pour ne pas interferer avec d'eventuelles futures fonctions du core … … 21 23 * déjà existantes. 22 24 * Voir un exemple d'utilisation dans `balise_SAISIE_dist()`. 23 * 25 * 24 26 * @note 25 27 * Les arguments sont stockés sont dans l'entree 0 de la propriété `param` 26 28 * dans l'objet Champ (représenté par `$p`), donc dans `$p->param[0]`. 27 * 29 * 28 30 * `param[0][0]` vaut toujours '' (ou presque ?) 29 31 * … … 35 37 /** 36 38 * Récupère un argument de balise 37 * 39 * 38 40 * @param int $pos 39 41 * @param Champ $p … … 63 65 if (!isset($p->param[0][$pos])) { 64 66 return null; 65 } 67 } 66 68 if ($pos == 0) { 67 69 array_shift($p->param[0]); … … 80 82 * @uses Pile::recuperer_argument_balise() 81 83 * @uses Pile::supprimer_argument_balise() 82 * 84 * 83 85 * @param int $pos 84 86 * @param Champ $p … … 96 98 * 97 99 * Empile l'argument à la suite des arguments déjà existants pour la balise 98 * 100 * 99 101 * @param mixed $element Élément de l'AST représentant l'argument à ajouter 100 102 * @param Champ $p … … 123 125 * $nom = Pile::creer_argument_balise(nom); // {nom} 124 126 * $nom = Pile::creer_argument_balise(nom, 'coucou'); // {nom=coucou} 125 * 127 * 126 128 * $balise = Pile::creer_balise('BALISE'); 127 129 * $nom = Pile::creer_argument_balise(nom, $balise); // {nom=#BALISE} 128 130 * ``` 129 * 131 * 130 132 * @param string $nom 131 133 * Nom de l'argument … … 139 141 $s->texte = $nom; 140 142 $s->ligne=0; 141 143 142 144 // si #BALISE cree avec Pile::creer_balise(), le mettre en array, comme les autres 143 145 if (is_object($valeur)) { 144 146 $valeur = array($valeur); 145 147 } 146 148 147 149 $res = null; 148 150 149 151 // {nom} 150 152 if (is_null($valeur)) { 151 153 $res = array($s); 152 } 153 // {nom=coucou} 154 elseif (is_string($valeur)) { 154 } elseif (is_string($valeur)) { 155 // {nom=coucou} 155 156 $s->texte .= "=$valeur"; 156 157 $res = array($s); 157 } 158 // {nom=#BALISE} 159 elseif (is_array($valeur)) { 160 $s->texte .= "="; // /!\ sans cette toute petite chose, ça ne fait pas d'egalite :) 158 } elseif (is_array($valeur)) { 159 // {nom=#BALISE} 160 $s->texte .= '='; // /!\ sans cette toute petite chose, ça ne fait pas d'egalite :) 161 161 $res = array_merge(array($s), $valeur); 162 162 } … … 171 171 * @uses Pile::creer_argument_balise() 172 172 * @uses Pile::ajouter_argument_balise() 173 * 173 * 174 174 * @param Champ $p 175 175 * @param string $nom … … 180 180 **/ 181 181 static function creer_et_ajouter_argument_balise($p, $nom, $valeur = null) { 182 $new = Pile::creer_argument_balise($nom, $valeur); 182 $new = Pile::creer_argument_balise($nom, $valeur); 183 183 return Pile::ajouter_argument_balise($new, $p); 184 184 } … … 192 192 * ``` 193 193 * // Crée : #ENV*{titre} 194 * $titre = Pile::recuperer_argument_balise(1, $p); // $titre, 1er argument de la balise actuelle 194 * $titre = Pile::recuperer_argument_balise(1, $p); // $titre, 1er argument de la balise actuelle 195 195 * $env = Pile::creer_balise('ENV', array('param' => array($titre), 'etoile' => '*')); 196 196 * ``` 197 * 197 * 198 198 * @param string $nom 199 199 * Nom de la balise … … 206 206 $b = new Champ; 207 207 $b->nom_champ = strtoupper($nom); 208 foreach ($opt as $o =>$val) {209 if (property_exists($b, $o)) {208 foreach ($opt as $o => $val) { 209 if (property_exists($b, $o)) { 210 210 if ($o == 'param') { 211 211 array_unshift($val, ''); … … 230 230 * La balise calcule une série de paramètre récupérer et à transmettre à `#INCLURE`, 231 231 * en fonction des valeurs des 2 premiers paramètres transmis. 232 * 232 * 233 233 * Les autres arguments sont transmis tels quels à la balise `#INCLURE`. 234 234 * … … 271 271 } 272 272 } 273 274 -
_plugins_/saisies/trunk/balise/voir_saisie.php
r93018 r97712 9 9 10 10 // Sécurité 11 if (!defined("_ECRIRE_INC_VERSION")) return; 11 if (!defined('_ECRIRE_INC_VERSION')) { 12 return; 13 } 12 14 13 15 /** … … 15 17 * 16 18 * Cette balise incluera le squelette `saisies-vues/_base.html` et lui-même `saisies-vues/{type}.html` 17 * 19 * 18 20 * @syntaxe `#VOIR_SAISIE{type,nom[,option=valeur,...]}` 19 21 * @uses Pile::recuperer_et_supprimer_argument_balise() … … 21 23 * @uses Pile::creer_balise() 22 24 * @see balise_INCLURE_dist() 23 * 25 * 24 26 * @param Champ $p 25 27 * @return Champ 26 28 */ 27 function balise_VOIR_SAISIE_dist 29 function balise_VOIR_SAISIE_dist($p) { 28 30 29 31 // on recupere les parametres sans les traduire en code d'execution php … … 43 45 // on appelle la balise #INCLURE 44 46 // avec les arguments ajoutes 45 if (function_exists('balise_INCLURE')) {47 if (function_exists('balise_INCLURE')) { 46 48 return balise_INCLURE($p); 47 49 } else { -
_plugins_/saisies/trunk/balise/voir_saisies.php
r93018 r97712 1 <?php 1 <?php 2 2 /** 3 3 * Déclaration de la balise `#VOIR_SAISIES` … … 7 7 8 8 // Sécurité 9 if (!defined("_ECRIRE_INC_VERSION")) return; 9 if (!defined('_ECRIRE_INC_VERSION')) { 10 return; 11 } 10 12 11 13 /** … … 19 21 * - `#VOIR_SAISIES{#TABLEAU_DE_SAISIES}` est équivalent à 20 22 * - `#INCLURE{fond=inclure/voir_saisies,env,saisies=#TABLEAU_DE_SAISIES}` 21 * 23 * 22 24 * @syntaxe `#VOIR_SAISIE{#TABLEAU_DE_SAISIES}` 23 25 * @uses Pile::recuperer_et_supprimer_argument_balise() 24 26 * @uses Pile::creer_et_ajouter_argument_balise() 25 27 * @see balise_INCLURE_dist() 26 * 28 * 27 29 * @param Champ $p 28 30 * Pile au niveau de la balise … … 30 32 * Pile complété du code à générer 31 33 **/ 32 function balise_VOIR_SAISIES_dist($p) {34 function balise_VOIR_SAISIES_dist($p) { 33 35 34 36 // On recupere les arguments : les tableaux decrivant ce qu'on veut generer + les reponses … … 47 49 48 50 // On redirige vers la balise INCLURE 49 if (function_exists('balise_INCLURE')) {51 if (function_exists('balise_INCLURE')) { 50 52 return balise_INCLURE($p); 51 53 } else { -
_plugins_/saisies/trunk/formulaires/construire_formulaire.php
r97268 r97712 2 2 3 3 // Sécurité 4 if (!defined("_ECRIRE_INC_VERSION")) return; 5 6 function formulaires_construire_formulaire_charger($identifiant, $formulaire_initial=array(), $options=array()){ 4 if (!defined('_ECRIRE_INC_VERSION')) { 5 return; 6 } 7 8 function formulaires_construire_formulaire_charger($identifiant, $formulaire_initial = array(), $options = array()) { 7 9 include_spip('inc/saisies'); 8 10 $contexte = array(); 9 11 10 12 // On ajoute un préfixe devant l'identifiant, pour être sûr 11 13 $identifiant = 'constructeur_formulaire_'.$identifiant; 12 14 $contexte['_identifiant_session'] = $identifiant; 13 14 // On vérifie ce qui a été passé en paramètre 15 if (!is_array($formulaire_initial)) $formulaire_initial = array(); 16 15 16 // On vérifie ce qui a été passé en paramètre 17 if (!is_array($formulaire_initial)) { 18 $formulaire_initial = array(); 19 } 20 17 21 // On initialise la session si elle est vide 18 if (is_null($formulaire_actuel = session_get($identifiant))) {22 if (is_null($formulaire_actuel = session_get($identifiant))) { 19 23 session_set($identifiant, $formulaire_initial); 20 24 $formulaire_actuel = $formulaire_initial; 21 25 } 22 26 23 27 // Si le formulaire actuel est différent du formulaire initial on agite un drapeau pour le dire 24 if ($formulaire_actuel != $formulaire_initial) {28 if ($formulaire_actuel != $formulaire_initial) { 25 29 $contexte['formulaire_modifie'] = true; 26 30 } 27 31 $contexte['_message_attention'] = _T('saisies:construire_attention_modifie'); 28 32 29 33 // On passe ça pour l'affichage 30 34 $contexte['_contenu'] = $formulaire_actuel; … … 33 37 $contexte['_saisies_par_nom'] = saisies_lister_par_nom($formulaire_actuel); 34 38 // Pour déclarer les champs modifiables à CVT 35 foreach (array_keys($contexte['_saisies_par_nom']) as $nom){39 foreach (array_keys($contexte['_saisies_par_nom']) as $nom) { 36 40 $contexte["saisie_modifiee_$nom"] = array(); 37 41 } 38 42 39 43 // La liste des saisies 40 44 $saisies_disponibles = saisies_lister_disponibles(); 41 45 $contexte['_saisies_disponibles'] = $saisies_disponibles; 42 46 43 47 // La liste des groupes de saisies 44 $saisies_groupes_disponibles = saisies_groupes_lister_disponibles( "saisies/groupes");48 $saisies_groupes_disponibles = saisies_groupes_lister_disponibles('saisies/groupes'); 45 49 $contexte['_saisies_groupes_disponibles'] = $saisies_groupes_disponibles; 46 50 47 51 $contexte['fond_generer'] = 'formulaires/inc-generer_saisies_configurables'; 48 52 49 53 // On cherche jquery UI pour savoir si on pourra glisser-déplacer 50 54 // SPIP 3.1 - jquery_ui 51 if (find_in_path('javascript/ui/sortable.js') and find_in_path('javascript/ui/draggable.js')) {55 if (find_in_path('javascript/ui/sortable.js') and find_in_path('javascript/ui/draggable.js')) { 52 56 $contexte['_chemin_ui'] = 'javascript/ui/'; 53 } 54 // SPIP 3 - jquery_ui 55 elseif (find_in_path('javascript/ui/jquery.ui.sortable.js') and find_in_path('javascript/ui/jquery.ui.draggable.js')){ 57 } elseif (find_in_path('javascript/ui/jquery.ui.sortable.js') and find_in_path('javascript/ui/jquery.ui.draggable.js')) { 58 // SPIP 3 - jquery_ui 56 59 $contexte['_chemin_ui'] = 'javascript/ui/jquery.ui.'; 57 } 58 else{ 60 } else { 59 61 $contexte['_chemin_ui'] = false; 60 62 } … … 63 65 } 64 66 65 function formulaires_construire_formulaire_verifier($identifiant, $formulaire_initial =array(), $options=array()){67 function formulaires_construire_formulaire_verifier($identifiant, $formulaire_initial = array(), $options = array()) { 66 68 include_spip('inc/saisies'); 67 69 $erreurs = array(); … … 71 73 // Pas d'erreur si l'on ne demande rien 72 74 if (!($nom_ou_id = $configurer_saisie = _request('configurer_saisie') 73 OR$nom_ou_id = $enregistrer_saisie = _request('enregistrer_saisie'))) {75 or $nom_ou_id = $enregistrer_saisie = _request('enregistrer_saisie'))) { 74 76 return $erreurs; 75 77 } … … 94 96 return $erreurs; 95 97 } 96 98 97 99 // La liste des saisies 98 100 $saisies_disponibles = saisies_lister_disponibles(); 99 101 100 102 $saisie = $saisies_actuelles[$nom_ou_id]; 101 103 $formulaire_config = $saisies_disponibles[$saisie['saisie']]['options']; … … 103 105 $formulaire_config = saisie_identifier(array('saisies'=>$formulaire_config)); 104 106 $formulaire_config = $formulaire_config['saisies']; 105 107 106 108 // Si la saisie possede un identifiant, on l'ajoute 107 109 // au formulaire de configuration pour ne pas le perdre en route … … 118 120 ); 119 121 } 120 122 121 123 // S'il y a l'option adéquat, on ajoute le champ pour modifier le nom 122 124 if (isset($options['modifier_nom']) and $options['modifier_nom'] 123 and $chemin_nom = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true)) 124 { 125 and $chemin_nom = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true)) { 125 126 $chemin_nom[] = 'saisies'; 126 127 $chemin_nom[] = '0'; … … 152 153 153 154 // S'il y a un groupe "validation" alors on va construire le formulaire des vérifications 154 if ($chemin_validation = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][validation]", true)) {155 if ($chemin_validation = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][validation]", true)) { 155 156 include_spip('inc/verifier'); 156 157 $liste_verifications = verifier_lister_disponibles(); 157 158 $chemin_validation[] = 'saisies'; 158 159 $chemin_validation[] = 1000000; // à la fin 159 160 160 161 // On construit la saisie à insérer et les fieldset des options 161 162 $saisie_liste_verif = array( … … 170 171 ); 171 172 172 foreach ($liste_verifications as $type_verif => $verif) {173 foreach ($liste_verifications as $type_verif => $verif) { 173 174 $saisie_liste_verif['options']['datas'][$type_verif] = $verif['titre']; 174 175 // Si le type de vérif a des options, on ajoute un fieldset 175 if (isset($verif['options']) and $verif['options'] and is_array($verif['options'])) {176 if (isset($verif['options']) and $verif['options'] and is_array($verif['options'])) { 176 177 $groupe = array( 177 178 'saisie' => 'fieldset', … … 205 206 )); 206 207 207 if ($enregistrer_saisie) {208 if ($enregistrer_saisie) { 208 209 // La saisie modifié 209 210 $saisie_modifiee = _request("saisie_modifiee_${nom}"); … … 212 213 // Si on autorise à modifier le nom ET qu'il doit être unique : on vérifie 213 214 if (isset($options['modifier_nom']) and $options['modifier_nom'] 214 and isset($options['nom_unique']) and $options['nom_unique']) 215 { 215 and isset($options['nom_unique']) and $options['nom_unique']) { 216 216 $nom_modifie = $saisie_modifiee['options']['nom']; 217 if ($nom_modifie != $enregistrer_saisie and saisies_chercher($formulaire_actuel, $nom_modifie)) 217 if ($nom_modifie != $enregistrer_saisie and saisies_chercher($formulaire_actuel, $nom_modifie)) { 218 218 $vraies_erreurs["saisie_modifiee_${nom}[options][nom]"] = _T('saisies:erreur_option_nom_unique'); 219 } 219 220 } 220 221 // On regarde s'il a été demandé un type de vérif 221 222 if (isset($saisie_modifiee['verifier']['type']) 222 and (($type_verif = $saisie_modifiee['verifier']['type']) != '') 223 and $verif_options[$type_verif]) 224 { 223 and (($type_verif = $saisie_modifiee['verifier']['type']) != '') 224 and $verif_options[$type_verif]) { 225 225 // On ne vérifie que les options du type demandé 226 226 $vraies_erreurs = array_merge($vraies_erreurs, saisies_verifier($verif_options[$type_verif]['saisies'])); … … 229 229 230 230 // On insère chaque saisie des options de verification 231 if ($verif_options) {232 foreach ($verif_options as $saisie_verif) {231 if ($verif_options) { 232 foreach ($verif_options as $saisie_verif) { 233 233 $formulaire_config = saisies_inserer($formulaire_config, $saisie_verif, $chemin_validation); 234 234 } … … 251 251 } 252 252 253 function formulaires_construire_formulaire_traiter($identifiant, $formulaire_initial =array(), $options=array()){253 function formulaires_construire_formulaire_traiter($identifiant, $formulaire_initial = array(), $options = array()) { 254 254 include_spip('inc/saisies'); 255 255 $retours = array(); 256 256 $saisies_disponibles = saisies_lister_disponibles(); 257 257 258 258 // On ajoute un préfixe devant l'identifiant 259 259 $identifiant = 'constructeur_formulaire_'.$identifiant; 260 260 // On récupère le formulaire à son état actuel 261 261 $formulaire_actuel = session_get($identifiant); 262 262 263 263 // Si on demande à ajouter un groupe 264 if ($ajouter_saisie = _request('ajouter_groupe_saisie')) {264 if ($ajouter_saisie = _request('ajouter_groupe_saisie')) { 265 265 $formulaire_actuel = saisies_groupe_inserer($formulaire_actuel, $ajouter_saisie); 266 266 } 267 267 268 268 // Si on demande à ajouter une saisie 269 if ($ajouter_saisie = _request('ajouter_saisie')) {269 if ($ajouter_saisie = _request('ajouter_saisie')) { 270 270 $nom = saisies_generer_nom($formulaire_actuel, $ajouter_saisie); 271 271 $saisie = array( … … 276 276 ); 277 277 // S'il y a des valeurs par défaut pour ce type de saisie, on les ajoute 278 if (($defaut = $saisies_disponibles[$ajouter_saisie]['defaut']) and is_array($defaut)) {278 if (($defaut = $saisies_disponibles[$ajouter_saisie]['defaut']) and is_array($defaut)) { 279 279 $defaut = _T_ou_typo($defaut, 'multi'); 280 280 281 //Compatibilite PHP<5.3.0 281 //Compatibilite PHP<5.3.0 282 282 //source : http://www.php.net/manual/en/function.array-replace-recursive.php#92574 283 if (!function_exists('array_replace_recursive')) 284 { 285 function array_replace_recursive($array, $array1) 286 { 287 function recurse($array, $array1) 288 { 289 foreach ($array1 as $key => $value) 290 { 283 if (!function_exists('array_replace_recursive')) { 284 function array_replace_recursive($array, $array1) { 285 function recurse($array, $array1) { 286 foreach ($array1 as $key => $value) { 291 287 // create new key in $array, if it is empty or not an array 292 if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key]))) 293 { 288 if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key]))) { 294 289 $array[$key] = array(); 295 290 } 296 291 // overwrite the value in the base array 297 if (is_array($value)) 298 { 292 if (is_array($value)) { 299 293 $value = recurse($array[$key], $value); 300 294 } … … 303 297 return $array; 304 298 } 305 299 306 300 // handle the arguments, merge one by one 307 301 $args = func_get_args(); 308 302 $array = $args[0]; 309 if (!is_array($array)) 310 { 303 if (!is_array($array)) { 311 304 return $array; 312 305 } 313 for ($i = 1; $i < count($args); $i++) 314 { 315 if (is_array($args[$i])) 316 { 306 for ($i = 1; $i < count($args); $i++) { 307 if (is_array($args[$i])) { 317 308 $array = recurse($array, $args[$i]); 318 309 } 319 310 } 320 311 return $array; 321 312 } 322 313 } … … 328 319 // Si on demande à dupliquer une saisie 329 320 if ($dupliquer_saisie = _request('dupliquer_saisie')) { 330 $formulaire_actuel = saisies_dupliquer($formulaire_actuel, $dupliquer_saisie); 331 } 332 321 $formulaire_actuel = saisies_dupliquer($formulaire_actuel, $dupliquer_saisie); 322 } 323 333 324 // Si on demande à supprimer une saisie 334 if ($supprimer_saisie = _request('supprimer_saisie')) {325 if ($supprimer_saisie = _request('supprimer_saisie')) { 335 326 $formulaire_actuel = saisies_supprimer($formulaire_actuel, $supprimer_saisie); 336 327 } 337 328 338 329 // Si on enregistre la conf d'une saisie 339 if ($nom = _request('enregistrer_saisie')) {330 if ($nom = _request('enregistrer_saisie')) { 340 331 // On récupère ce qui a été modifié 341 332 $saisie_modifiee = _request("saisie_modifiee_$nom"); 342 333 343 334 // On regarde s'il y a une position à modifier 344 if (isset($saisie_modifiee['position'])) {335 if (isset($saisie_modifiee['position'])) { 345 336 $position = $saisie_modifiee['position']; 346 337 unset($saisie_modifiee['position']); 347 338 // On ne déplace que si ce n'est pas la même chose 348 if ($position != $nom) 339 if ($position != $nom) { 349 340 $formulaire_actuel = saisies_deplacer($formulaire_actuel, $nom, $position); 350 } 351 341 } 342 } 343 352 344 // On regarde s'il y a des options de vérification à modifier 353 345 if (isset($saisie_modifiee['verifier']['type']) 354 and ($type_verif = $saisie_modifiee['verifier']['type']) != '') 355 { 346 and ($type_verif = $saisie_modifiee['verifier']['type']) != '') { 356 347 $saisie_modifiee['verifier'] = array( 357 348 'type' => $type_verif, 358 349 'options' => $saisie_modifiee['verifier'][$type_verif] 359 350 ); 360 } 361 else { 351 } else { 362 352 unset($saisie_modifiee['verifier']); 363 353 } … … 368 358 $saisie_modifiee['verifier']['options'] = array_filter($saisie_modifiee['verifier']['options'], 'saisie_option_contenu_vide'); 369 359 } 370 360 371 361 // On désinfecte à la main 372 if (is_array($saisie_modifiee['options'])) 362 if (is_array($saisie_modifiee['options'])) { 373 363 spip_desinfecte($saisie_modifiee['options']); 374 364 } 365 375 366 // On modifie enfin 376 367 $formulaire_actuel = saisies_modifier($formulaire_actuel, $nom, $saisie_modifiee); … … 378 369 379 370 // Si on demande à réinitialiser 380 if (_request('reinitialiser') == 'oui') {371 if (_request('reinitialiser') == 'oui') { 381 372 $formulaire_actuel = $formulaire_initial; 382 373 } … … 393 384 // À utiliser avec un array_walk_recursive() 394 385 // Applique une transformation à la @valeur@ de tous les champs "nom" d'un formulaire, y compris loin dans l'arbo 395 function formidable_transformer_nom(&$valeur, $cle, $transformation) {396 if ($cle == 'nom' and is_string($valeur)) {386 function formidable_transformer_nom(&$valeur, $cle, $transformation) { 387 if ($cle == 'nom' and is_string($valeur)) { 397 388 $valeur = str_replace('@valeur@', $valeur, $transformation); 398 389 } … … 400 391 401 392 // Préparer une saisie pour la transformer en truc configurable 402 function formidable_generer_saisie_configurable($saisie, $env) {393 function formidable_generer_saisie_configurable($saisie, $env) { 403 394 // On récupère le nom 404 395 $nom = $saisie['options']['nom']; 405 $identifiant = isset($saisie['identifiant']) ? $saisie['identifiant'] : "";396 $identifiant = isset($saisie['identifiant']) ? $saisie['identifiant'] : ''; 406 397 // On cherche si ya un formulaire de config 407 $formulaire_config = isset($env['erreurs']['configurer_'.$nom]) ? $env['erreurs']['configurer_'.$nom] : "";398 $formulaire_config = isset($env['erreurs']['configurer_'.$nom]) ? $env['erreurs']['configurer_'.$nom] : ''; 408 399 // On ajoute une classe 409 400 if (!isset($saisie['options']['conteneur_class'])) { … … 412 403 // Compat ancien nom li_class 413 404 if (isset($saisie['options']['li_class'])) { 414 $saisie['options']['conteneur_class'] .= " ". $saisie['options']['li_class']; // initialisation405 $saisie['options']['conteneur_class'] .= ' ' . $saisie['options']['li_class']; // initialisation 415 406 } 416 407 $saisie['options']['conteneur_class'] .= ' configurable'; … … 427 418 array( 428 419 'nom' => $nom, 429 'identifiant' => $identifiant, 420 'identifiant' => $identifiant, 430 421 'formulaire_config' => $formulaire_config, 431 422 'deplacable' => $env['_chemin_ui'] … … 444 435 445 436 // Si ya un form de config on l'ajoute à la fin 446 if (is_array($formulaire_config)) {437 if (is_array($formulaire_config)) { 447 438 // On double l'environnement 448 439 $env2 = $env; … … 452 443 // Si possible on met en readonly 453 444 $saisie['options']['readonly'] = 'oui'; 454 445 455 446 // On vire les sous-saisies s'il y en a 456 if (isset($saisie['saisies']) and $saisie['saisies'] and is_array($saisie['saisies'])) {447 if (isset($saisie['saisies']) and $saisie['saisies'] and is_array($saisie['saisies'])) { 457 448 $nb_champs_masques = count(saisies_lister_champs($saisie['saisies'])); 458 449 $saisie['saisies'] = array( … … 466 457 ); 467 458 } 468 459 469 460 // On va ajouter le champ pour la position 470 if (!($chemin_description = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true))) {461 if (!($chemin_description = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true))) { 471 462 $chemin_description = array(0); 472 463 $formulaire_config = saisies_inserer( … … 499 490 $chemin_description 500 491 ); 501 492 502 493 $env2['saisies'] = $formulaire_config; 503 494 504 495 // Un test pour savoir si on prend le _request ou bien 505 496 $erreurs_test = $env['erreurs']; … … 508 499 unset($erreurs_test['message_erreur']); 509 500 510 if ($erreurs_test) {501 if ($erreurs_test) { 511 502 // Là aussi on désinfecte à la main 512 503 if (isset($env2["saisie_modifiee_$nom"]['options']) and is_array($env2["saisie_modifiee_$nom"]['options'])) { 513 504 spip_desinfecte($env2["saisie_modifiee_$nom"]['options']); 514 505 } 515 } 516 else{ 506 } else { 517 507 $env2["saisie_modifiee_$nom"] = $env2['_saisies_par_nom'][$nom]; 518 508 // il n'y a pas toujours de verification... … … 522 512 } 523 513 } 524 514 525 515 $env2['fond_generer'] = 'inclure/generer_saisies'; 526 516 $saisie = saisies_inserer_html( … … 555 545 function saisie_option_contenu_vide($var) { 556 546 if (!$var) { 557 if (is_string($var) ANDstrlen($var)) {547 if (is_string($var) and strlen($var)) { 558 548 return true; 559 549 } … … 563 553 } 564 554 565 function saisies_groupe_inserer($formulaire_actuel, $saisie) {555 function saisies_groupe_inserer($formulaire_actuel, $saisie) { 566 556 include_spip('inclure/configurer_saisie_fonctions'); 567 557 568 558 //le groupe de saisies 569 $saisies_charger_infos = saisies_charger_infos($saisie, $saisies_repertoire = "saisies/groupes");570 559 $saisies_charger_infos = saisies_charger_infos($saisie, $saisies_repertoire = 'saisies/groupes'); 560 571 561 //le tableau est-il en options ou en saisies ? 572 562 $classique_yaml=count($saisies_charger_infos['options']); 573 563 $formidable_yaml=count($saisies_charger_infos['saisies']); 574 if ($classique_yaml>0) {564 if ($classique_yaml>0) { 575 565 $champ_options = 'options'; 576 566 } 577 if ($formidable_yaml>0) {567 if ($formidable_yaml>0) { 578 568 $champ_options = 'saisies'; 579 569 } 580 581 //les champs du groupe 582 foreach ($saisies_charger_infos[$champ_options] as $info_saisie){570 571 //les champs du groupe 572 foreach ($saisies_charger_infos[$champ_options] as $info_saisie) { 583 573 unset($info_saisie['identifiant']); 584 574 $saisies_disponibles = saisies_lister_disponibles(); 585 575 $construire_nom = $info_saisie[$champ_options]['nom'] ? $info_saisie[$champ_options]['nom'] : $info_saisie['saisie']; 586 $nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel, $construire_nom);587 576 $nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel, $construire_nom); 577 588 578 $formulaire_actuel = saisies_inserer($formulaire_actuel, $info_saisie); 589 579 } -
_plugins_/saisies/trunk/formulaires/saisies_cvt.php
r87651 r97712 2 2 3 3 // Sécurité 4 if (!defined('_ECRIRE_INC_VERSION')) return; 4 if (!defined('_ECRIRE_INC_VERSION')) { 5 return; 6 } 5 7 6 function formulaires_saisies_cvt_saisies_dist() {8 function formulaires_saisies_cvt_saisies_dist() { 7 9 return array( 8 10 array( … … 38 40 ); 39 41 } 40 -
_plugins_/saisies/trunk/inc/saisies.php
r91257 r97712 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 /* … … 48 50 * @return array Retourne les saisies du formulaire sinon false 49 51 */ 50 function saisies_chercher_formulaire($form, $args) {52 function saisies_chercher_formulaire($form, $args) { 51 53 if ($fonction_saisies = charger_fonction('saisies', 'formulaires/'.$form, true) 52 54 and $saisies = call_user_func_array($fonction_saisies, $args) … … 62 64 // Si c'est toujours un tableau après le pipeline 63 65 and is_array($saisies) 64 ) {66 ) { 65 67 return $saisies; 66 } 67 else{ 68 } else { 68 69 return false; 69 70 } … … 78 79 * @return array Retourne soit la saisie, soit son chemin, soit null 79 80 */ 80 function saisies_chercher($saisies, $id_ou_nom_ou_chemin, $retourner_chemin=false){ 81 82 if (is_array($saisies) and $id_ou_nom_ou_chemin){ 83 if (is_string($id_ou_nom_ou_chemin)){ 81 function saisies_chercher($saisies, $id_ou_nom_ou_chemin, $retourner_chemin = false) { 82 if (is_array($saisies) and $id_ou_nom_ou_chemin) { 83 if (is_string($id_ou_nom_ou_chemin)) { 84 84 $nom = $id_ou_nom_ou_chemin; 85 85 // identifiant ? premier caractere @ 86 86 $id = ($nom[0] == '@'); 87 87 88 foreach ($saisies as $cle => $saisie){88 foreach ($saisies as $cle => $saisie) { 89 89 $chemin = array($cle); 90 90 // notre saisie est la bonne ? … … 96 96 return $retourner_chemin ? array_merge($chemin, array('saisies'), $retour) : $retour; 97 97 } 98 99 } 100 } 101 elseif (is_array($id_ou_nom_ou_chemin)){ 98 } 99 } elseif (is_array($id_ou_nom_ou_chemin)) { 102 100 $chemin = $id_ou_nom_ou_chemin; 103 101 $saisie = $saisies; 104 102 // On vérifie l'existence quand même 105 foreach ($chemin as $cle){ 106 if (isset($saisie[$cle])) $saisie = $saisie[$cle]; 107 else return null; 103 foreach ($chemin as $cle) { 104 if (isset($saisie[$cle])) { 105 $saisie = $saisie[$cle]; 106 } else { 107 return null; 108 } 108 109 } 109 110 // Si c'est une vraie saisie 110 if ($saisie['saisie'] and $saisie['options']['nom']) 111 if ($saisie['saisie'] and $saisie['options']['nom']) { 111 112 return $retourner_chemin ? $chemin : $saisie; 112 } 113 } 114 113 } 114 } 115 } 116 115 117 return null; 116 118 } … … 120 122 * 121 123 * @param array $formulaire 122 * Le formulaire à analyser 124 * Le formulaire à analyser 123 125 * @param string $type_saisie 124 * Le type de champ dont on veut un identifiant 126 * Le type de champ dont on veut un identifiant 125 127 * @return string 126 128 * Un nom unique par rapport aux autres champs du formulaire 127 129 */ 128 function saisies_generer_nom($formulaire, $type_saisie) {130 function saisies_generer_nom($formulaire, $type_saisie) { 129 131 $champs = saisies_lister_champs($formulaire); 130 132 131 133 // Tant que type_numero existe, on incrémente le compteur 132 134 $compteur = 1; 133 while (array_search($type_saisie.'_'.$compteur, $champs) !== false) 135 while (array_search($type_saisie.'_'.$compteur, $champs) !== false) { 134 136 $compteur++; 135 137 } 138 136 139 // On a alors un compteur unique pour ce formulaire 137 140 return $type_saisie.'_'.$compteur; … … 140 143 /** 141 144 * Crée un identifiant Unique 142 * pour toutes les saisies donnees qui n'en ont pas 145 * pour toutes les saisies donnees qui n'en ont pas 143 146 * 144 147 * @param Array $saisies Tableau de saisies … … 166 169 **/ 167 170 function saisie_identifier($saisie, $regenerer = false) { 168 if (!isset($saisie['identifiant']) OR!$saisie['identifiant']) {171 if (!isset($saisie['identifiant']) or !$saisie['identifiant']) { 169 172 $saisie['identifiant'] = uniqid('@'); 170 173 } elseif ($regenerer) { 171 174 $saisie['identifiant'] = uniqid('@'); 172 175 } 173 if (isset($saisie['saisies']) ANDis_array($saisie['saisies'])) {176 if (isset($saisie['saisies']) and is_array($saisie['saisies'])) { 174 177 $saisie['saisies'] = saisies_identifier($saisie['saisies'], $regenerer); 175 178 } … … 184 187 * @return array Retourne un tableau d'erreurs 185 188 */ 186 function saisies_verifier($formulaire, $saisies_masquees_nulles =true){189 function saisies_verifier($formulaire, $saisies_masquees_nulles = true) { 187 190 include_spip('inc/verifier'); 188 191 $erreurs = array(); 189 $verif_fonction = charger_fonction('verifier', 'inc',true);190 191 if ($saisies_masquees_nulles) 192 $verif_fonction = charger_fonction('verifier', 'inc', true); 193 194 if ($saisies_masquees_nulles) { 192 195 $formulaire = saisies_verifier_afficher_si($formulaire); 193 196 } 197 194 198 $saisies = saisies_lister_par_nom($formulaire); 195 foreach ($saisies as $saisie) {199 foreach ($saisies as $saisie) { 196 200 $obligatoire = isset($saisie['options']['obligatoire']) ? $saisie['options']['obligatoire'] : ''; 197 201 $champ = $saisie['options']['nom']; … … 200 204 201 205 // Si le nom du champ est un tableau indexé, il faut parser ! 202 if (preg_match('/([\w]+)((\[[\w]+\])+)/', $champ, $separe)) {206 if (preg_match('/([\w]+)((\[[\w]+\])+)/', $champ, $separe)) { 203 207 $valeur = _request($separe[1]); 204 208 preg_match_all('/\[([\w]+)\]/', $separe[2], $index); 205 209 // On va chercher au fond du tableau 206 foreach ($index[1] as $cle){210 foreach ($index[1] as $cle) { 207 211 $valeur = isset($valeur[$cle]) ? $valeur[$cle] : null; 208 212 } 209 } 210 // Sinon la valeur est juste celle du nom 211 else 213 } else { 214 // Sinon la valeur est juste celle du nom 212 215 $valeur = _request($champ); 213 216 } 217 214 218 // Pour la saisie "destinataires" il faut filtrer si jamais on a mis un premier choix vide 215 219 if ($saisie['saisie'] == 'destinataires') { 216 220 $valeur = array_filter($valeur); 217 221 } 218 222 219 223 // On regarde d'abord si le champ est obligatoire 220 224 if ($obligatoire … … 236 240 237 241 // On continue seulement si ya pas d'erreur d'obligation et qu'il y a une demande de verif 238 if ((!isset($erreurs[$champ]) or !$erreurs[$champ]) and is_array($verifier) and $verif_fonction) {242 if ((!isset($erreurs[$champ]) or !$erreurs[$champ]) and is_array($verifier) and $verif_fonction) { 239 243 $normaliser = null; 240 244 // Si le champ n'est pas valide par rapport au test demandé, on ajoute l'erreur … … 248 252 } 249 253 } 250 254 251 255 return $erreurs; 252 256 } … … 257 261 * @return $nouveau_tab 258 262 */ 259 function saisies_aplatir_tableau($tab) {263 function saisies_aplatir_tableau($tab) { 260 264 $nouveau_tab = array(); 261 foreach ($tab as $entree=>$contenu){265 foreach ($tab as $entree => $contenu) { 262 266 if (is_array($contenu)) { 263 267 foreach ($contenu as $cle => $valeur) { … … 276 280 * @return $chaine 277 281 */ 278 function saisies_aplatir_chaine($chaine) {279 return trim(preg_replace("#(?:^|\n)(\*(?:.*)|/\*)\n#i", "\n",$chaine));282 function saisies_aplatir_chaine($chaine) { 283 return trim(preg_replace("#(?:^|\n)(\*(?:.*)|/\*)\n#i", "\n", $chaine)); 280 284 } 281 285 282 286 /** 283 287 * Transforme une chaine en tableau avec comme principe : 284 * 288 * 285 289 * - une ligne devient une case 286 290 * - si la ligne est de la forme truc|bidule alors truc est la clé et bidule la valeur 287 291 * - si la ligne commence par * alors on commence un sous-tableau 288 292 * - si la ligne est égale à /*, alors on fini le sous-tableau 289 * 293 * 290 294 * @param string $chaine Une chaine à transformer 291 295 * @param string $separateur Séparateur utilisé 292 296 * @return array Retourne un tableau PHP 293 297 */ 294 function saisies_chaine2tableau($chaine, $separateur ="\n"){295 if ($chaine and is_string($chaine)) {298 function saisies_chaine2tableau($chaine, $separateur = "\n") { 299 if ($chaine and is_string($chaine)) { 296 300 $tableau = array(); 297 $soustab = False;301 $soustab = false; 298 302 // On découpe d'abord en lignes 299 303 $lignes = explode($separateur, $chaine); 300 foreach ($lignes as $i =>$ligne){304 foreach ($lignes as $i => $ligne) { 301 305 $ligne = trim(trim($ligne), '|'); 302 306 // Si ce n'est pas une ligne sans rien 303 if ($ligne !== '') {307 if ($ligne !== '') { 304 308 // si ca commence par * c'est qu'on va faire un sous tableau 305 if (strpos($ligne, "*")===0) {306 $soustab= True;307 $soustab_cle = _T_ou_typo(substr($ligne,1), 'multi');308 if (!isset($tableau[$soustab_cle])) {309 if (strpos($ligne, '*') === 0) { 310 $soustab=true; 311 $soustab_cle = _T_ou_typo(substr($ligne, 1), 'multi'); 312 if (!isset($tableau[$soustab_cle])) { 309 313 $tableau[$soustab_cle] = array(); 310 314 } 311 } 312 elseif ($ligne=="/*") {//si on finit sous tableau 313 $soustab=False; 314 } 315 else{//sinon c'est une entrée normale 316 // Si on trouve un découpage dans la ligne on fait cle|valeur 315 } elseif ($ligne == '/*') {//si on finit sous tableau 316 $soustab=false; 317 } else { 318 //sinon c'est une entrée normale 319 // Si on trouve un découpage dans la ligne on fait cle|valeur 317 320 if (strpos($ligne, '|') !== false) { 318 321 list($cle,$valeur) = explode('|', $ligne, 2); 319 322 // permettre les traductions de valeurs au passage 320 if ($soustab == True){323 if ($soustab == true) { 321 324 $tableau[$soustab_cle][$cle] = _T_ou_typo($valeur, 'multi'); 322 325 } else { 323 326 $tableau[$cle] = _T_ou_typo($valeur, 'multi'); 324 327 } 325 } 326 // Sinon on génère la clé 327 else{ 328 if ($soustab == True) { 329 $tableau[$soustab_cle][$i] = _T_ou_typo($ligne,'multi'); 328 } else { 329 // Sinon on génère la clé 330 if ($soustab == true) { 331 $tableau[$soustab_cle][$i] = _T_ou_typo($ligne, 'multi'); 330 332 } else { 331 $tableau[$i] = _T_ou_typo($ligne, 'multi');333 $tableau[$i] = _T_ou_typo($ligne, 'multi'); 332 334 } 333 335 } … … 336 338 } 337 339 return $tableau; 338 } 339 // Si c'est déjà un tableau on lui applique _T_ou_typo (qui fonctionne de manière récursive avant de le renvoyer 340 elseif (is_array($chaine)){ 340 } elseif (is_array($chaine)) { 341 // Si c'est déjà un tableau on lui applique _T_ou_typo (qui fonctionne de manière récursive avant de le renvoyer 341 342 return _T_ou_typo($chaine, 'multi'); 342 343 } else { … … 347 348 /** 348 349 * Transforme un tableau en chaine de caractères avec comme principe : 349 * 350 * 350 351 * - une case de vient une ligne de la chaine 351 352 * - chaque ligne est générée avec la forme cle|valeur … … 356 357 * @return string Texte représentant les données du tableau 357 358 */ 358 function saisies_tableau2chaine($tableau) {359 if ($tableau and is_array($tableau)) {359 function saisies_tableau2chaine($tableau) { 360 if ($tableau and is_array($tableau)) { 360 361 $chaine = ''; 361 $avant_est_tableau = False;362 foreach ($tableau as $cle=>$valeur){363 if (is_array($valeur)) {364 $avant_est_tableau = True;362 $avant_est_tableau = false; 363 foreach ($tableau as $cle => $valeur) { 364 if (is_array($valeur)) { 365 $avant_est_tableau = true; 365 366 $ligne=trim("*$cle"); 366 367 $chaine .= "$ligne\n"; 367 368 $chaine .= saisies_tableau2chaine($valeur)."\n"; 369 } else { 370 if ($avant_est_tableau == true) { 371 $avant_est_tableau = false; 372 $chaine.="/*\n"; 368 373 } 369 else{370 if ($avant_est_tableau == True){371 $avant_est_tableau = False;372 $chaine.="/*\n";373 }374 374 $ligne = trim("$cle|$valeur"); 375 375 $chaine .= "$ligne\n"; … … 377 377 } 378 378 $chaine = trim($chaine); 379 379 380 380 return $chaine; 381 } 382 // Si c'est déjà une chaine on la renvoie telle quelle 383 elseif (is_string($tableau)){ 381 } elseif (is_string($tableau)) { 382 // Si c'est déjà une chaine on la renvoie telle quelle 384 383 return $tableau; 385 } 386 else{ 384 } else { 387 385 return ''; 388 386 } 389 387 } 390 391 392 393 388 394 389 /** … … 421 416 } 422 417 423 424 418 /** 425 419 * Pour les saisies multiples (type checkbox) proposant un choix alternatif, … … 432 426 * @return string choix_alternatif 433 427 **/ 434 function saisies_trouver_choix_alternatif($data, $valeur) {428 function saisies_trouver_choix_alternatif($data, $valeur) { 435 429 if (!is_array($valeur)) { 436 430 $valeur = saisies_chaine2tableau($valeur) ; … … 440 434 } 441 435 $choix_theorique = array_keys($data); 442 $choix_alternatif = array_values(array_diff($valeur, $choix_theorique));436 $choix_alternatif = array_values(array_diff($valeur, $choix_theorique)); 443 437 return $choix_alternatif[0];//on suppose que personne ne s'est amusé à proposer deux choix alternatifs 444 438 } … … 449 443 * Retourne le résultat du squelette `inclure/saisies_aide` auquel 450 444 * on a transmis toutes les saisies connues. 451 * 445 * 452 446 * @return string Code HTML 453 447 */ 454 function saisies_generer_aide() {448 function saisies_generer_aide() { 455 449 // On a déjà la liste par saisie 456 450 $saisies = saisies_lister_disponibles(); … … 458 452 // On construit une liste par options 459 453 $options = array(); 460 foreach ($saisies as $type_saisie =>$saisie){454 foreach ($saisies as $type_saisie => $saisie) { 461 455 $options_saisie = saisies_lister_par_nom($saisie['options'], false); 462 foreach ($options_saisie as $nom =>$option){456 foreach ($options_saisie as $nom => $option) { 463 457 // Si l'option n'existe pas encore 464 if (!isset($options[$nom])) {458 if (!isset($options[$nom])) { 465 459 $options[$nom] = _T_ou_typo($option['options']); 466 460 } … … 490 484 491 485 function saisies_afficher_si($saisies) { 492 $saisies = saisies_lister_par_nom($saisies, true);486 $saisies = saisies_lister_par_nom($saisies, true); 493 487 // Dès qu'il y a au moins une option afficher_si, on l'active 494 488 foreach ($saisies as $saisie) { 495 if (isset($saisie['options']['afficher_si'])) 489 if (isset($saisie['options']['afficher_si'])) { 496 490 return true; 491 } 497 492 } 498 493 return false; … … 507 502 */ 508 503 function saisies_afficher_si_remplissage($saisies) { 509 $saisies = saisies_lister_par_nom($saisies, true);504 $saisies = saisies_lister_par_nom($saisies, true); 510 505 // Dès qu'il y a au moins une option afficher_si_remplissage, on l'active 511 506 foreach ($saisies as $saisie) { 512 if (isset($saisie['options']['afficher_si_remplissage'])) 507 if (isset($saisie['options']['afficher_si_remplissage'])) { 513 508 return true; 509 } 514 510 } 515 511 return false; 516 512 } 517 -
_plugins_/saisies/trunk/inc/saisies_afficher.php
r93602 r97712 156 156 157 157 $contexte = array_merge($env, $contexte); 158 } 159 // Sinon on ne sélectionne que quelques éléments importants 160 else { 158 } else { 159 // Sinon on ne sélectionne que quelques éléments importants 161 160 // On récupère la liste des erreurs 162 161 $contexte['erreurs'] = $env['erreurs']; … … 178 177 $contexte['valeur'] = isset($contexte['valeur'][$cle]) ? $contexte['valeur'][$cle] : null; 179 178 } 180 } 181 // Sinon la valeur est juste celle du nom si elle existe 182 elseif (isset($contexte['nom']) and isset($env[$contexte['nom']])) { 179 } elseif (isset($contexte['nom']) and isset($env[$contexte['nom']])) { 180 // Sinon la valeur est juste celle du nom si elle existe 183 181 $contexte['valeur'] = $env[$contexte['nom']]; 184 } 185 // Sinon rien 186 else { 182 } else { 183 // Sinon rien 187 184 $contexte['valeur'] = null; 188 185 } … … 269 266 if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])) { 270 267 $contexte['valeur'] = $env['valeurs'][$contexte['nom']]; 271 } 272 // Si le nom du champ est un tableau indexé, il faut parser ! 273 elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) { 268 } elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) { 269 // Si le nom du champ est un tableau indexé, il faut parser ! 274 270 $contexte['valeur'] = $env[$separe[1]]; 275 271 preg_match_all('/\[([\w]+)\]/', $separe[2], $index); … … 278 274 $contexte['valeur'] = $contexte['valeur'][$cle]; 279 275 } 280 } 281 // Sinon la valeur est juste celle du nom 282 else { 276 } else { 277 // Sinon la valeur est juste celle du nom 283 278 // certains n'ont pas de nom (fieldset) 284 279 $contexte['valeur'] = isset($env[$contexte['nom']]) ? $env[$contexte['nom']] : ''; -
_plugins_/saisies/trunk/inc/saisies_manipuler.php
r93579 r97712 141 141 $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin); 142 142 $chemin = array(count($saisies)); 143 } 144 // Si l'endroit est entre crochet, c'est un conteneur 145 elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)) { 143 } elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)) { 144 // Si l'endroit est entre crochet, c'est un conteneur 146 145 $parent = $match[1]; 147 146 // Si dans les crochets il n'y a rien, on met à la fin du formulaire … … 149 148 $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin); 150 149 $chemin = array(count($saisies)); 151 } 152 // Sinon on vérifie que ce conteneur existe 153 elseif (saisies_chercher($saisies, $parent, true)) { 150 } elseif (saisies_chercher($saisies, $parent, true)) { 151 // Sinon on vérifie que ce conteneur existe 154 152 // S'il existe on supprime la saisie et on recherche la nouvelle position 155 153 $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin); … … 159 157 $chemin = false; 160 158 } 161 } 162 // Sinon ça sera devant un champ 163 else { 159 } else { 160 // Sinon ça sera devant un champ 164 161 // On vérifie que le champ existe 165 162 if (saisies_chercher($saisies, $ou, true)) { … … 206 203 } 207 204 // On récupère les enfants tels quels s'il n'y a pas des enfants dans la modif 208 if ( 209 !isset($modifs['saisies']) 205 if (!isset($modifs['saisies']) 210 206 and isset($parent[$position]['saisies']) 211 207 and is_array($parent[$position]['saisies']) -
_plugins_/saisies/trunk/inclure/configurer_saisie_fonctions.php
r87651 r97712 2 2 3 3 // Sécurité 4 if (!defined("_ECRIRE_INC_VERSION")) return; 4 if (!defined('_ECRIRE_INC_VERSION')) { 5 return; 6 } 5 7 6 function construire_configuration_saisie($saisie, $avec_nom ='non'){8 function construire_configuration_saisie($saisie, $avec_nom = 'non') { 7 9 include_spip('inc/yaml'); 8 10 $configuration_saisie = yaml_decode_file(find_in_path('saisies/'.$saisie.'.yaml')); 9 10 if (is_array($configuration_saisie)) {11 12 if (is_array($configuration_saisie)) { 11 13 $configuration_saisie = $configuration_saisie['options']; 12 14 // On ne met le premier champ permettant de configurer le "name" seulement si on le demande explicitement 13 if ($avec_nom == 'oui') 14 array_unshift($configuration_saisie[0]['contenu'], 15 if ($avec_nom == 'oui') { 16 array_unshift( 17 $configuration_saisie[0]['contenu'], 15 18 array( 16 19 'saisie' => 'input', … … 29 32 ) 30 33 ); 34 } 35 } else { 36 $configuration_saisie = array(); 31 37 } 32 else33 $configuration_saisie = array();34 35 38 return $configuration_saisie; 36 39 } 37 -
_plugins_/saisies/trunk/saisies-vues/selecteur_article_fonctions.php
r90290 r97712 1 1 <?php 2 2 3 if (!defined('_ECRIRE_INC_VERSION')) { 4 return; 5 } 6 3 7 include_spip('prive/formulaires/selecteur/selecteur_fonctions'); -
_plugins_/saisies/trunk/saisies_fonctions.php
r97706 r97712 7 7 **/ 8 8 9 if (!defined('_ECRIRE_INC_VERSION')) return; 9 if (!defined('_ECRIRE_INC_VERSION')) { 10 return; 11 } 10 12 11 13 include_spip('inc/saisies'); … … 23 25 * $tag initial ou div 24 26 */ 25 function saisie_balise_structure_formulaire($tag) {27 function saisie_balise_structure_formulaire($tag) { 26 28 27 29 // Pouvoir forcer l'utilisation de formulaire de type SPIP 3 … … 30 32 } 31 33 32 static $is_div =null;33 if (is_null($is_div)) {34 $version = explode( ".",$GLOBALS['spip_version_branche']);35 if ($version[0] >3 OR ($version[0]==3 AND $version[1]>0))34 static $is_div = null; 35 if (is_null($is_div)) { 36 $version = explode('.', $GLOBALS['spip_version_branche']); 37 if ($version[0] > 3 or ($version[0] == 3 and $version[1] > 0)) { 36 38 $is_div = true; 37 } 38 if ($is_div) return "div"; 39 } 40 } 41 if ($is_div) { 42 return 'div'; 43 } 39 44 return $tag; 40 45 } … … 42 47 // [(#DIV|sinon{ul})] 43 48 if (!function_exists('balise_DIV_dist') 44 and $version = explode(".",$GLOBALS['spip_version_branche'])45 and ($version[0]>3 OR ($version[0]==3 AND $version[1]>0))){46 function balise_DIV_dist($p) {49 and $version = explode('.', $GLOBALS['spip_version_branche']) 50 and ($version[0]>3 or ($version[0]==3 and $version[1] > 0))) { 51 function balise_DIV_dist($p) { 47 52 $p->code = "'div'"; 48 53 $p->interdire_scripts = false; … … 60 65 * @return string 61 66 */ 62 function saisie_traitement_vue($valeur, $env){63 if (is_string($env)) 67 function saisie_traitement_vue($valeur, $env) { 68 if (is_string($env)) { 64 69 $env = unserialize($env); 65 if (!function_exists('propre')) 70 } 71 if (!function_exists('propre')) { 66 72 include_spip('inc/texte'); 73 } 67 74 68 75 $valeur = trim($valeur); … … 74 81 if (in_array($env['type_saisie'], array('textarea'))) { 75 82 $valeur = propre($valeur); 76 } 77 else { 78 $valeur = "<p>" . typo($valeur) . "</p>"; 83 } else { 84 $valeur = '<p>' . typo($valeur) . '</p>'; 79 85 } 80 86 } … … 85 91 /** 86 92 * Passer un nom en une valeur compatible avec une classe css 87 * 93 * 88 94 * - toto => toto, 89 95 * - toto/truc => toto_truc, … … 99 105 /** 100 106 * Passer un nom en une valeur compatible avec un `name` de formulaire 101 * 107 * 102 108 * - toto => toto, 103 109 * - toto/truc => toto[truc], … … 124 130 * #GLOBALS{debut_intertitre} 125 131 * ``` 126 * 132 * 127 133 * @param Champ $p 128 134 * Pile au niveau de la balise … … 131 137 **/ 132 138 function balise_GLOBALS_dist($p) { 133 if (function_exists('balise_ENV')) 139 if (function_exists('balise_ENV')) { 134 140 return balise_ENV($p, '$GLOBALS'); 135 else141 } else { 136 142 return balise_ENV_dist($p, '$GLOBALS'); 143 } 137 144 } 138 145 … … 141 148 * 142 149 * Les éléments sont triés par objets puis par identifiants 143 * 150 * 144 151 * @example 145 152 * L'entrée : … … 179 186 // on remet tout en file 180 187 $liste = array(); 181 foreach ($res as $objet =>$ids) {188 foreach ($res as $objet => $ids) { 182 189 foreach ($ids as $id) { 183 190 $liste[] = array('objet' => $objet, 'id_objet' => $id); … … 198 205 * 'texte_objets' : le nom humain de l'objet éditorial. 199 206 */ 200 function lister_tables_objets_edit() 201 { 202 include_spip('base/abstract_sql'); 203 204 $objets = lister_tables_objets_sql(); 205 $objets_edit = array(); 206 207 foreach ($objets as $objet => $definition) { 208 if (isset($definition['editable']) and isset($definition['url_edit']) and $definition['url_edit'] != '') { 209 $objets_edit[$objet] = array('type' => $definition['type'], 'url_edit' => $definition['url_edit'], 'texte_objets' => $definition['texte_objets']); 210 } 211 } 212 $objets_edit = array_filter($objets_edit); 213 214 return $objets_edit; 215 } 207 function lister_tables_objets_edit() { 208 include_spip('base/abstract_sql'); 209 210 $objets = lister_tables_objets_sql(); 211 $objets_edit = array(); 212 213 foreach ($objets as $objet => $definition) { 214 if (isset($definition['editable']) and isset($definition['url_edit']) and $definition['url_edit'] != '') { 215 $objets_edit[$objet] = array('type' => $definition['type'], 'url_edit' => $definition['url_edit'], 'texte_objets' => $definition['texte_objets']); 216 } 217 } 218 $objets_edit = array_filter($objets_edit); 219 220 return $objets_edit; 221 } -
_plugins_/saisies/trunk/saisies_options.php
r97706 r97712 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 // Pouvoir forcer l'utilisation de formulaire de type SPIP 3 … … 15 17 } 16 18 17 18 if (!function_exists('_T_ou_typo')){ 19 if (!function_exists('_T_ou_typo')) { 19 20 /** 20 21 * une fonction qui regarde si $texte est une chaine de langue … … 30 31 * Retourne la valeur éventuellement modifiée. 31 32 */ 32 function _T_ou_typo($valeur, $mode_typo ='toujours') {33 function _T_ou_typo($valeur, $mode_typo = 'toujours') { 33 34 // Si la valeur est bien une chaine (et pas non plus un entier déguisé) 34 if (is_string($valeur) and !intval($valeur)) {35 if (is_string($valeur) and !intval($valeur)) { 35 36 // Si la chaine est du type <:truc:> on passe à _T() 36 if (preg_match('/^\<:(.*?):\>$/', $valeur, $match)) 37 if (preg_match('/^\<:(.*?):\>$/', $valeur, $match)) { 37 38 $valeur = _T($match[1]); 38 // Sinon on la passe a typo()39 else {40 if (!in_array($mode_typo, array('toujours', 'multi', 'jamais'))) 39 } else { 40 // Sinon on la passe a typo() 41 if (!in_array($mode_typo, array('toujours', 'multi', 'jamais'))) { 41 42 $mode_typo = 'toujours'; 42 43 if ($mode_typo == 'toujours' or ($mode_typo == 'multi' and strpos($valeur, '<multi>') !== false)){ 43 } 44 45 if ($mode_typo == 'toujours' or ($mode_typo == 'multi' and strpos($valeur, '<multi>') !== false)) { 44 46 include_spip('inc/texte'); 45 47 $valeur = typo($valeur); 46 48 } 47 49 } 48 } 49 // Si c'est un tableau, on reapplique la fonction récursivement 50 elseif (is_array($valeur)){ 51 foreach ($valeur as $cle => $valeur2){ 50 } elseif (is_array($valeur)) { 51 // Si c'est un tableau, on reapplique la fonction récursivement 52 foreach ($valeur as $cle => $valeur2) { 52 53 $valeur[$cle] = _T_ou_typo($valeur2, $mode_typo); 53 54 } … … 57 58 } 58 59 } 59 -
_plugins_/saisies/trunk/saisies_pipelines.php
r94665 r97712 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 /** 13 15 * Ajoute les scripts JS et CSS de saisies dans l'espace privé 14 16 * 15 * @param string $flux 17 * @param string $flux 16 18 * @return string 17 19 **/ 18 function saisies_header_prive($flux) {20 function saisies_header_prive($flux) { 19 21 $js = find_in_path('javascript/saisies.js'); 20 22 $flux .= "\n<script type='text/javascript' src='$js'></script>\n"; … … 31 33 * Ajoute également de quoi gérer le datepicker de la saisie date si 32 34 * celle-ci est utilisée dans la page. 33 * 34 * @param string $flux 35 * 36 * @param string $flux 35 37 * @return string 36 38 **/ 37 function saisies_affichage_final($flux){ 38 if ( 39 $GLOBALS['html'] // si c'est bien du HTML 40 and ($p = strpos($flux,"<!--!inserer_saisie_editer-->")) !== false // et qu'on a au moins une saisie 41 and strpos($flux,'<head') !== false // et qu'on a la balise <head> quelque part 42 ){ 39 function saisies_affichage_final($flux) { 40 if ($GLOBALS['html'] // si c'est bien du HTML 41 and ($p = strpos($flux, '<!--!inserer_saisie_editer-->')) !== false // et qu'on a au moins une saisie 42 and strpos($flux, '<head') !== false // et qu'on a la balise <head> quelque part 43 ) { 43 44 // On insère la CSS devant le premier <link> trouvé 44 if (!$pi = strpos($flux, "<link") AND !$pi=strpos($flux, '</head')) {45 if (!$pi = strpos($flux, '<link') and !$pi = strpos($flux, '</head')) { 45 46 $pi = $p; // si pas de <link inserer comme un goret entre 2 <li> de saisies 46 47 } … … 48 49 $ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n"; 49 50 50 if (strpos($flux, "saisie_date")!==false){//si on a une saisie de type date, on va charger les css de jquery_ui51 include_spip("jqueryui_pipelines");52 if (function_exists( "jqueryui_dependances")){53 $ui_plugins = jqueryui_dependances(array( "jquery.ui.datepicker"));54 $theme_css = "jquery.ui.theme";55 $ui_css_dir = "css";51 if (strpos($flux, 'saisie_date') !==false) {//si on a une saisie de type date, on va charger les css de jquery_ui 52 include_spip('jqueryui_pipelines'); 53 if (function_exists('jqueryui_dependances')) { 54 $ui_plugins = jqueryui_dependances(array('jquery.ui.datepicker')); 55 $theme_css = 'jquery.ui.theme'; 56 $ui_css_dir = 'css'; 56 57 // compatibilité SPIP 3.1 et jQuery UI 1.11 57 $version = explode( ".",$GLOBALS['spip_version_branche']);58 if ($version[0] >3 OR ($version[0]==3 AND $version[1]>0)) {59 $theme_css = "theme";60 $ui_css_dir = "css/ui";58 $version = explode('.', $GLOBALS['spip_version_branche']); 59 if ($version[0] > 3 or ($version[0] == 3 and $version[1] > 0)) { 60 $theme_css = 'theme'; 61 $ui_css_dir = 'css/ui'; 61 62 } 62 array_push($ui_plugins, $theme_css);63 foreach ($ui_plugins as $ui_plug) {63 array_push($ui_plugins, $theme_css); 64 foreach ($ui_plugins as $ui_plug) { 64 65 $ui_plug_css = find_in_path("$ui_css_dir/$ui_plug.css"); 65 if (strpos($flux, "$ui_css_dir/$ui_plug.css")===false){// si pas déjà chargé66 if (strpos($flux, "$ui_css_dir/$ui_plug.css") === false) {// si pas déjà chargé 66 67 $ins_css .= "\n<link rel='stylesheet' href='$ui_plug_css' type='text/css' media='all' />\n"; 67 68 } … … 87 88 * est présente. Cette fonction doit retourner une liste de saisies dont on se 88 89 * sert alors pour calculer les champs utilisés dans le formulaire. 89 * 90 * @param array $flux 90 * 91 * @param array $flux 91 92 * @return array 92 93 **/ 93 function saisies_formulaire_charger($flux) {94 function saisies_formulaire_charger($flux) { 94 95 // Si le flux data est inexistant, on quitte : Le CVT d'origine a décidé de ne pas continuer 95 if (!is_array($flux['data'])) {96 if (!is_array($flux['data'])) { 96 97 return $flux; 97 98 } … … 119 120 * alors on utilise le formulaire générique intégré au plugin saisie, qui calculera le HTML 120 121 * à partir de la déclaration des saisies indiquées. 121 * 122 * 122 123 * @see saisies_formulaire_charger() 123 * 124 * 124 125 * @param array $flux 125 126 * @return array 126 127 **/ 127 function saisies_styliser($flux) {128 function saisies_styliser($flux) { 128 129 // Si on cherche un squelette de formulaire 129 if (strncmp($flux['args']['fond'], 'formulaires/',12)==0130 if (strncmp($flux['args']['fond'], 'formulaires/', 12) == 0 130 131 // Et qu'il y a des saisies dans le contexte 131 132 and isset($flux['args']['contexte']['_saisies']) … … 135 136 and lire_fichier($flux['data'].'.'.$ext, $contenu_squelette) 136 137 and !trim($contenu_squelette) 137 ) {138 ) { 138 139 $flux['data'] = preg_replace("/\.$ext$/", '', find_in_path("formulaires/inc-saisies-cvt.$ext")); 139 140 } … … 150 151 * @see saisies_formulaire_charger() 151 152 * @uses saisies_verifier() 152 * 153 * 153 154 * @param array $flux 154 155 * Liste des erreurs du formulaire … … 156 157 * iste des erreurs 157 158 */ 158 function saisies_formulaire_verifier($flux) {159 function saisies_formulaire_verifier($flux) { 159 160 // Il faut que la fonction existe et qu'elle retourne bien un tableau 160 161 include_spip('inc/saisies'); … … 163 164 // On ajoute au contexte les champs à déclarer 164 165 $erreurs = saisies_verifier($saisies); 165 if ($erreurs and !isset($erreurs['message_erreur'])) 166 if ($erreurs and !isset($erreurs['message_erreur'])) { 166 167 $erreurs['message_erreur'] = _T('saisies:erreur_generique'); 168 } 167 169 $flux['data'] = array_merge($erreurs, $flux['data']); 168 170 } … … 170 172 return $flux; 171 173 } 172 173
Note: See TracChangeset
for help on using the changeset viewer.