Skip to content
Extraits de code Groupes Projets
Valider 112c82ae rédigé par Maïeul's avatar Maïeul
Parcourir les fichiers

feat: une fonction `saisies_afficher_si_js_etapes_futures()`

Sera utilisée pour résoudre #331
parent b14182fb
Aucune branche associée trouvée
Aucune étiquette associée trouvée
2 requêtes de fusion!332# 331 à la dernière vraie étape en tenant compte des `afficher_si`, avoir un bouton `Valider` et pas `Etape suivante`,!339Issue 331 : libellé des boutons d'étape et afficher_si
...@@ -25,19 +25,17 @@ ...@@ -25,19 +25,17 @@
] ]
[(#REM) Mettre toutes les étapes futures] [(#REM) Mettre toutes les étapes futures]
[(#GET{etape_courante}|>{#ENV{_etape}}|oui) [(#GET{etape_courante}|>{#ENV{_etape}}|oui)
[(#VALEUR{options/afficher_si}|oui)
#SET{afficher_si,#GET{afficher_si}|array_merge{#ARRAY{#CLE,#VAL{"}|str_replace{'"',#VALEUR{options/afficher_si}|saisies_afficher_si_js{#ENV{etapes}}}}}}
]
#SET{etapes_max,#GET{etapes_max}|plus{1}} #SET{etapes_max,#GET{etapes_max}|plus{1}}
] ]
</BOUCLE_etapes> </BOUCLE_etapes>
#SET{params, #ARRAY{ #SET{params, #ARRAY{
'etape',<span class="formulaire_spip_etape__courante">#GET{etape_a_afficher}</span>, 'etape',<span class="formulaire_spip_etape__courante">#GET{etape_a_afficher}</span>,
'etapes', <span class="formulaire_spip_etape__total">#GET{etapes_max}</span>, 'etapes', <span class="formulaire_spip_etape__total">#GET{etapes_max}</span>,
'label_etape',#GET{etape_a_afficher_label} 'label_etape',#GET{etape_a_afficher_label}
} }
} }
<div class="formulaire_spip__etapes etapes formulaire_spip__etapes--courante" [data-afficher_si-etapes-futures="(#VAL{'"'}|str_replace{'&quot;', #GET{afficher_si}|json_encode})"] data-etapes_max="#GET{etapes_max}"> <div class="formulaire_spip__etapes etapes formulaire_spip__etapes--courante" [data-afficher_si-etapes-futures="(#VAL{'"'}|str_replace{'&quot;', #ENV{etapes}|saisies_afficher_si_js_etapes_futures{#ENV{_etape}}|json_encode})"] data-etapes_max="#GET{etapes_max}">
[(#VAL{saisies:cvt_etapes_courante}|_T{#GET{params}})] [(#VAL{saisies:cvt_etapes_courante}|_T{#GET{params}})]
</div> </div>
</B_etapes> </B_etapes>
...@@ -114,3 +114,21 @@ function saisies_afficher_si_js_est_statique($test) { ...@@ -114,3 +114,21 @@ function saisies_afficher_si_js_est_statique($test) {
return true; return true;
} }
} }
/**
* Retourne les afficher_si des étapes futures
* @param array $etapes liste des étapes (sous forme de tableau de saisies)
* @param int $etape etape courante
* @return array liste des afficher_si format js pour les étapes futures
**/
function saisies_afficher_si_js_etapes_futures(array $etapes, int $etape): array {
$afficher_si = [];
foreach ($etapes as $saisie => $description) {
$numero_etape = intval(str_replace('etape_', '', $saisie));
if ($numero_etape > $etape && isset($description['options']['afficher_si'])) {
$afficher_si[$saisie] = str_replace('&quot;', '"', saisies_afficher_si_js($description['options']['afficher_si'], $etapes));
}
}
return $afficher_si;
}
...@@ -7,6 +7,7 @@ use PHPUnit\Framework\TestCase; ...@@ -7,6 +7,7 @@ use PHPUnit\Framework\TestCase;
/** /**
* @covers saisies_afficher_si_js_est_statique() * @covers saisies_afficher_si_js_est_statique()
* @covers saisies_afficher_si_js() * @covers saisies_afficher_si_js()
* @covers saisies_afficher_si_js_etapes_futures()
* @internal * @internal
*/ */
...@@ -287,4 +288,62 @@ class AfficherSiJsTest extends TestCase { ...@@ -287,4 +288,62 @@ class AfficherSiJsTest extends TestCase {
$this->assertEquals($expected, $actual); $this->assertEquals($expected, $actual);
} }
static public function dataAfficherSiJsEtapesFutures(): array {
return [
[
// Expected
[
'etape_3' => 'false',
'etape_4' => 'true',
],
// Etapes
[
'etape_1' => [
'options' => [
'nom' => 'etape 1',
'afficher_si' => 'false',
],
'saisies' => []
],
'etape_2' => [
'options' => [
'nom' => 'etape 2',
'afficher_si' => 'true',
],
'saisies' => []
],
'etape_3' => [
'options' => [
'nom' => 'etape 3',
'afficher_si' => 'false',
],
'saisies' => []
],
'etape_4' => [
'options' => [
'nom' => 'etape 4',
'afficher_si' => 'true',
],
'saisies' => []
]
],
// Etape
2
]
];
}
/**
* @dataProvider dataAfficherSiJsEtapesFutures
* @uses saisies_afficher_si_evaluer_plugin()
* @uses saisies_afficher_si_secure()
* @uses saisies_afficher_si_verifier_syntaxe()
* @uses saisies_lister_par_nom()
* @uses saisies_parser_condition_afficher_si()
**/
public function testAfficherSiJsEtapesFutures(array $expected, array $etapes, int $etape): void {
$actual = saisies_afficher_si_js_etapes_futures($etapes, $etape);
$this->assertSame($expected, $actual);
}
} }
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter