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.
svn/root/tags/v1.4.14
bystrano@gmx.ch 5 years ago
parent b092efa0b3
commit b025579873

@ -1,7 +1,7 @@
<paquet
prefix="saisie_liste"
categorie="outil"
version="1.4.13"
version="1.4.14"
etat="stable"
compatibilite="[3.0.10;3.2.*]"
logo="images/logo_saisie_liste_48.png"

@ -135,6 +135,119 @@ function charger_valeurs($tableau_saisie, $valeurs, $index_objet) {
return $tableau_saisie;
}
/**
* Fusionner une saisie avec des options passées en argument.
*
* Les options sont un tableau de saisies, dont on peut omettre tous les
* paramètres sauf le nom. Les paramètres des options prennent le pas sur les
* options définies dans la saisie de base.
*
* @param array $tableau_saisie
* Un tableau de saisies au format de #GENERER_SAISIES représentant
* un objet de la saisie liste.
* @param array $options_saisies
* Des options à remplacer.
* @return array
* Un tableau de saisies correspondant au $tableau_saisie, dans lequel les
* options définies dans $options_saisies ont remplacé les valeurs de
* départ.
*
* @example
var_dump(fusionner_options_saisies(
array(
array(
'saisie' => 'input',
'options' => array(
'nom' => 'test1',
'label' => 'test1',
),
),
array(
'saisie' => 'select',
'options' => array(
'nom' => 'test2',
'label' => 'test222',
),
),
array(
'saisie' => 'select',
'options' => array(
'nom' => 'test3',
'label' => 'test3',
),
),
),
array(
array(
'options' => array(
'nom' => 'test2',
'label' => 'test2'
),
),
array(
'saisie' => 'textarea',
'options' => array(
'nom' => 'test3',
),
),
)
));
/** ==>
array(
array(
'saisie' => 'input',
'options' => array(
'nom' => 'test1',
'label' => 'test1',
),
),
array(
'saisie' => 'select',
'options' => array(
'nom' => 'test2',
'label' => 'test2',
),
),
array(
'saisie' => 'textarea',
'options' => array(
'nom' => 'test3',
'label' => 'test3',
),
),
)
**/
function fusionner_options_saisies($tableau_saisie, $options_saisies) {
if (is_array($options_saisies)) {
foreach ($options_saisies as $options) {
$nom_option = $options['options']['nom'];
foreach ($tableau_saisie as $i => $saisie) {
if ($saisie['options']['nom'] === $nom_option) {
if (isset($options['saisie'])) {
$tableau_saisie[$i]['saisie'] = $options['saisie'];
}
foreach ($options['options'] as $cle => $val) {
$tableau_saisie[$i]['options'][$cle] = $val;
}
if (isset($options['saisies'])) {
$tableau_saisie[$i]['saisies'] = fusionner_options_saisies(
$tableau_saisie[$i]['saisies'],
$options['saisies']
);
}
}
}
}
}
return $tableau_saisie;
}
/**
* renommer_saisies - renomme les saisies d'un objet d'une saisie liste_objet
* pour en faire des sous-saisies.

@ -50,7 +50,9 @@
<div class="objet td">
<div class="liste-saisies">
<BOUCLE_saisies_objet(DATA) {source table, #ENV{saisies}}>
<BOUCLE_saisies_objet(DATA)
{source table, #ENV{saisies}|fusionner_options_saisies{
#ENV{#ENV{nom}_options_saisies}|table_valeur{#GET{compteur_objets}}}}>
#SET{saisie, #VALEUR}

Loading…
Cancel
Save