Browse Source

Pb #95.

Pouvoir avoir des variantes pour la présentation des étapes, chaque variante étant dans un squelette spécifique.
Pour l'instant on a
  - 'defaut', qui est ce qui est proposé actuellement
  - 'courante', pour n'afficher que l'étape courante + le nb total
  d'étapes.

== Mode defaut
- Ne pas renvoyer les étapes passées masquées par afficher_si
- Passage des boutons de `<input>` à `<button name="aller_a_etape">`

== Mode courante
Je reprend le code de @nicod_, aux adaptations suivantes :
  - utiliser les mêmes conventions de nommage css que pour le modèle
  `defaut`
  - utiliser une chaine de langue à laquelle on passe :
    - le numéro de l'étape courante (déjà encapsulé)
    - le nbre totale d'étape (déjà encapsulé)
    - le nom de l'étape courante
  - on peut ainsi suivre plus facilement les conventions par langue;

Concernant la gestion des `afficher_si` :
  - le numéro de l'étape courante est calculé côté squelette en tenant
  compte des étapes passées qui sont masquées (vu que normalement une
  saisie dans l'étape actuellement ne peut pas changer le masquage des
  étapes masquées)
  - le nbr totale d'étape
    - n'inclut pas les étapes passées masquées par afficher_si
    - inclut toutes les étapes futures
    - est ajusté en JS au chargement + à chaque modification d'un champ
    en fonction des afficher_si
pull/112/head
Maïeul 1 year ago
parent
commit
59683c8999
  1. 37
      formulaires/inc-saisies-cvt-etapes-courante.html
  2. 17
      formulaires/inc-saisies-cvt-etapes-defaut.html
  3. 16
      formulaires/inc-saisies-cvt-etapes.html
  4. 2
      formulaires/inc-saisies-cvt.html
  5. 2
      inc/saisies_afficher.php
  6. 2
      javascript/saisies.js
  7. 19
      javascript/saisies_afficher_si.js
  8. 1
      lang/saisies_fr.php

37
formulaires/inc-saisies-cvt-etapes-courante.html

@ -0,0 +1,37 @@
#SET{afficher_si,#ARRAY}
#SET{etapes_max,0}[(#REM) nombre d'étape max, en tenant compte du fait que certaines étapes passées ont deja été masquées par afficher_si]
#SET{etape_a_afficher,0}
#SET{saisies_afficher_si_masquees,#VAL{get}|saisies_afficher_si_liste_masquees}
<BOUCLE_etapes(DATA){source table, #ENV{etapes}}>
#SET{etape_courante,#CLE|replace{'etape_',''}}
[(#REM) mettre uniquement les étapes passées qui ont réussi le test d'afficher_si]
[(#GET{etape_courante}|<{#ENV{_etape}}|oui)
[(#VALEUR|in_any{#GET{saisies_afficher_si_masquees}}|non)
#SET{etape_a_afficher,#GET{etape_a_afficher}|plus{1}}
#SET{etapes_max,#GET{etapes_max}|plus{1}}
]
]
[(#REM) Mettre systématiquement l'étape courante]
[(#ENV{_etape}|=={#GET{etape_courante}}|oui)
#SET{etape_a_afficher,#GET{etape_a_afficher}|plus{1}}
#SET{etapes_max,#GET{etapes_max}|plus{1}}
#SET{etape_a_afficher_label,#VALEUR{options/label}}
]
[(#REM) Mettre toutes les étapes futures]
[(#GET{etape_courante}|>{#ENV{_etape}}|oui)
[(#VALEUR{options/afficher_si}|oui)
#SET{afficher_si,#GET{afficher_si}|array_merge{#ARRAY{#CLE,#VAL{&quot;}|str_replace{'"',#VALEUR{options/afficher_si}|saisies_afficher_si_js{#ENV{etapes}}}}}}
]
#SET{etapes_max,#GET{etapes_max}|plus{1}}
]
</BOUCLE_etapes>
#SET{params, #ARRAY{
'etape',<span class="formulaire_spip_etape__courante">#GET{etape_a_afficher}</span>,
'etapes', <span class="formulaire_spip_etape__total">#GET{etapes_max}</span>,
'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}">
[(#VAL{saisies:cvt_etapes_courante}|_T{#GET{params}})]
</div>
</B_etapes>

17
formulaires/inc-saisies-cvt-etapes-defaut.html

@ -0,0 +1,17 @@
#SET{afficher_si_masquees,#VAL{'get'}|saisies_afficher_si_liste_masquees}
<B_etapes>
<nav class="formulaire_spip__etapes etapes" aria-label="<:saisies:etapes_formulaire:>">
<ol class="etapes__items">
<BOUCLE_etapes(DATA){source table, #ENV{etapes}}>
[(#VALEUR|in_any{#GET{afficher_si_masquees}}|non)
#SET{etape,#CLE|replace{etape_,''}}
<li [data-afficher_si="(#VALEUR{options/afficher_si}|saisies_afficher_si_js{#ENV{etapes}})"] class="etapes__item"[(#ENV{_etape}|=={#GET{etape}}|oui) aria-current="step"]>
[(#ENV{_etape}|=={#GET{etape}}|oui)<em>#VALEUR{options/label}</em>]
[(#ENV{_etape}|>{#GET{etape}}|oui)<input type="submit" class="submit" name="_retour_etape_#GET{etape}" value="#VALEUR{options/label}" />]
[(#ENV{_etape}|<{#GET{etape}}|oui)<span>#VALEUR{options/label}</span>]
</li>
]
</BOUCLE_etapes>
</ol>
</nav>
</B_etapes>

16
formulaires/inc-saisies-cvt-etapes.html

@ -1,14 +1,2 @@
<B_etapes>
<nav class="formulaire_spip__etapes etapes" aria-label="<:saisies:etapes_formulaire:>">
<ol class="etapes__items">
<BOUCLE_etapes(DATA){source table, #ENV{etapes}}>
#SET{etape,#CLE|replace{etape_,''}}
<li [data-afficher_si="(#VALEUR{options/afficher_si}|saisies_afficher_si_js{#ENV{etapes}})"] class="etapes__item"[(#ENV{_etape}|=={#GET{etape}}|oui) aria-current="step"]>
[(#ENV{_etape}|=={#GET{etape}}|oui)<em>#VALEUR{options/label}</em>]
[(#ENV{_etape}|>{#GET{etape}}|oui)<input type="submit" class="submit" name="_retour_etape_#GET{etape}" value="#VALEUR{options/label}" />]
[(#ENV{_etape}|<{#GET{etape}}|oui)<span>#VALEUR{options/label}</span>]
</li>
</BOUCLE_etapes>
</ol>
</nav>
</B_etapes>
[(#REM) squelette gardé pour compatibilité historique, mais ne devrait plus être appelé, préferez un appel à la variante)]
<INCLURE{fond=formulaires/inc-saisies-cvt-etapes-#ENV{_saisies/options/etapes_presentation,defaut}, etapes=#ENV{_saisies_par_etapes}, env} />

2
formulaires/inc-saisies-cvt.html

@ -10,7 +10,7 @@
#ACTION_FORMULAIRE{#ENV{action}}
[(#ENV{_etape}|oui)
<INCLURE{fond=formulaires/inc-saisies-cvt-etapes, etapes=#GET{etapes}, env} />
<INCLURE{fond=formulaires/inc-saisies-cvt-etapes-#ENV{_saisies/options/etapes_presentation,defaut}, etapes=#ENV{_saisies_par_etapes}, env} />
]
<[(#DIV|sinon{ul})] class="editer-groupe">

2
inc/saisies_afficher.php

@ -123,7 +123,7 @@ function saisies_generer_html($champ, $env = array()) {
} elseif (isset($env['_saisies_par_etapes'])) {
$contexte['_saisies'] = $env['_saisies_par_etapes'];
} else {
isset($env['saisies']) ? saisies_lister_par_etapes($env['saisies']) : array();
$contexte['_saisies'] = isset($env['saisies']) ? saisies_lister_par_etapes($env['saisies']) : array();
}
} else {
$contexte['_saisies'] = isset($env['saisies']) ? $env['saisies'] : array();

2
javascript/saisies.js

@ -261,7 +261,7 @@ function saisies_date_jour_mois_annee_changer_date(me, datetime) {
/** Ne pas valider lors des retours arrières sur multiétape **/
function saisies_multi_novalidate() {
$('[name^="_retour_etape"]').click(function() {
$('[name^="_retour_etape"],[name="aller_a_etape"]').click(function() {
$(this).parents('form').attr('novalidate', 'novalidate');
});
}

19
javascript/saisies_afficher_si.js

@ -17,6 +17,7 @@ function afficher_si_init() {
animer_afficher_si($(this), condition, true);
}
);
afficher_si_set_etapes_presentation_courante(form);
$(this).find('textarea, input, select').change(function(){
form = $(this).parents('form');
name = $(this).attr('name').replace('[]', '');
@ -25,6 +26,7 @@ function afficher_si_init() {
condition = verifier_afficher_si($(this));
animer_afficher_si($(this), condition);
})
afficher_si_set_etapes_presentation_courante(form, name);
});
$(this).attr('data-afficher_si-init', true);
})
@ -75,6 +77,23 @@ function animer_afficher_si(saisie, condition, chargement){
}
}
}
//Pour l'affichage des étapes selon la présentation "étape courante" seulement
function afficher_si_set_etapes_presentation_courante(form, name='') {
form.find('.formulaire_spip__etapes--courante[data-afficher_si-etapes-futures]').each(function() {
afficher_si_etapes = JSON.parse($(this).attr('data-afficher_si-etapes-futures'));
etape_total = $(this).attr('data-etapes_max');
for (etape in afficher_si_etapes) {
condition = afficher_si_etapes[etape];
if (!name || condition.includes(name)) {
$(this).attr('data-' + etape, eval(condition));
}
if (condition && !eval($(this).attr('data-' + etape))) {
etape_total--;
}
}
$(this).find('.formulaire_spip_etape__total').text(etape_total);
});
}
function afficher_si(args) {
valeur_champ = afficher_si_current_data[args['champ']];

1
lang/saisies_fr.php

@ -48,6 +48,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'construire_reinitialiser_confirmer' => 'Vous allez perdre toutes vos modifications. Êtes-vous sûr de vouloir revenir au formulaire initial ?',
'construire_verifications_aucune' => 'Aucune',
'construire_verifications_label' => 'Type de vérification à effectuer',
'cvt_etapes_courante' => 'Étape @etape@ / @etapes@ : @label_etape@',
// D
'data_cols_label' => 'Réponses possibles (en colonne)',

Loading…
Cancel
Save