Changeset 113302 in spip-zone


Ignore:
Timestamp:
Jan 9, 2019, 2:31:14 PM (2 months ago)
Author:
bystrano@…
Message:

permet de modifier les options des saisies en dernière minute

Au chargement d'un formulaire, on peut modifier les options des saisies générées
par la saisie liste en ajoutant une variable "ma_liste_options_saisies" dans le
contexte du formulaire, où "ma_liste" est le nom de la saisie liste en question.

voir le formulaire de configuration de logos_roles pour un exemple
d'utilisation.

Location:
_plugins_/saisie_liste/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisie_liste/trunk/paquet.xml

    r113287 r113302  
    22        prefix="saisie_liste"
    33        categorie="outil"
    4         version="1.4.13"
     4        version="1.4.14"
    55        etat="stable"
    66        compatibilite="[3.0.10;3.2.*]"
  • _plugins_/saisie_liste/trunk/saisie_liste_fonctions.php

    r109983 r113302  
    135135        return $tableau_saisie;
    136136}
     137
     138/**
     139 * Fusionner une saisie avec des options passées en argument.
     140 *
     141 * Les options sont un tableau de saisies, dont on peut omettre tous les
     142 * paramètres sauf le nom. Les paramètres des options prennent le pas sur les
     143 * options définies dans la saisie de base.
     144 *
     145 * @param array $tableau_saisie
     146 *     Un tableau de saisies au format de #GENERER_SAISIES représentant
     147 *     un objet de la saisie liste.
     148 * @param array $options_saisies
     149 *     Des options à remplacer.
     150 * @return array
     151 *     Un tableau de saisies correspondant au $tableau_saisie, dans lequel les
     152 *     options définies dans $options_saisies ont remplacé les valeurs de
     153 *     départ.
     154 *
     155 * @example
     156
     157var_dump(fusionner_options_saisies(
     158        array(
     159                array(
     160                        'saisie' => 'input',
     161                        'options' => array(
     162                                'nom' => 'test1',
     163                                'label' => 'test1',
     164                        ),
     165                ),
     166                array(
     167                        'saisie' => 'select',
     168                        'options' => array(
     169                                'nom' => 'test2',
     170                                'label' => 'test222',
     171                        ),
     172                ),
     173                array(
     174                        'saisie' => 'select',
     175                        'options' => array(
     176                                'nom' => 'test3',
     177                                'label' => 'test3',
     178                        ),
     179                ),
     180        ),
     181        array(
     182                array(
     183                        'options' => array(
     184                                'nom' => 'test2',
     185                                'label' => 'test2'
     186                        ),
     187                ),
     188                array(
     189                        'saisie' => 'textarea',
     190                        'options' => array(
     191                                'nom' => 'test3',
     192                        ),
     193                ),
     194        )
     195));
     196
     197/** ==>
     198
     199array(
     200        array(
     201                'saisie' => 'input',
     202                'options' => array(
     203                        'nom' => 'test1',
     204                        'label' => 'test1',
     205                ),
     206        ),
     207        array(
     208                'saisie' => 'select',
     209                'options' => array(
     210                        'nom' => 'test2',
     211                        'label' => 'test2',
     212                ),
     213        ),
     214        array(
     215                'saisie' => 'textarea',
     216                'options' => array(
     217                        'nom' => 'test3',
     218                        'label' => 'test3',
     219                ),
     220        ),
     221)
     222**/
     223function fusionner_options_saisies($tableau_saisie, $options_saisies) {
     224
     225        if (is_array($options_saisies)) {
     226                foreach ($options_saisies as $options) {
     227                        $nom_option = $options['options']['nom'];
     228                        foreach ($tableau_saisie as $i => $saisie) {
     229                                if ($saisie['options']['nom'] === $nom_option) {
     230                                        if (isset($options['saisie'])) {
     231                                                $tableau_saisie[$i]['saisie'] = $options['saisie'];
     232                                        }
     233                                        foreach ($options['options'] as $cle => $val) {
     234                                                $tableau_saisie[$i]['options'][$cle] = $val;
     235                                        }
     236                                        if (isset($options['saisies'])) {
     237                                                $tableau_saisie[$i]['saisies'] = fusionner_options_saisies(
     238                                                        $tableau_saisie[$i]['saisies'],
     239                                                        $options['saisies']
     240                                                );
     241                                        }
     242                                }
     243                        }
     244                }
     245        }
     246
     247        return $tableau_saisie;
     248}
     249
    137250
    138251/**
  • _plugins_/saisie_liste/trunk/saisies/liste.html

    r109706 r113302  
    5151        <div class="objet td">
    5252          <div class="liste-saisies">
    53             <BOUCLE_saisies_objet(DATA) {source table, #ENV{saisies}}>
     53            <BOUCLE_saisies_objet(DATA)
     54               {source table, #ENV{saisies}|fusionner_options_saisies{
     55                 #ENV{#ENV{nom}_options_saisies}|table_valeur{#GET{compteur_objets}}}}>
    5456
    5557              #SET{saisie, #VALEUR}
Note: See TracChangeset for help on using the changeset viewer.