Changeset 83529 in spip-zone


Ignore:
Timestamp:
Jul 2, 2014, 5:07:06 PM (7 years ago)
Author:
rastapopoulos@…
Message:

Une nouvelle balise qui sera peut-être utile à celleux qui veulent afficher leurs réponses enregistrées.

#VOIR_REPONSE{champ} à utiliser dans une boucle (FORMULAIRES_REPONSES).

Par défaut ça afficher la même chose que #VOIR_SAISIE. Mais on peut faire des variantes pour ne sortir que la valeur (en HTML mais sans le label et l'entourage) ou que la valeur brute dans la base.

#VOIR_REPONSE{selection_1, brut}
#VOIR_REPONSE{selection_1, valeur_uniquement}

En troisième argument on peut aussi passer la chaîne qu'on veut afficher pour les champs qui n'ont pas de réponse (champ vide). Sinon c'est le truc par défaut "Sans réponse". On peut y mettre la chaîne vide si on ne veut rien.

Location:
_plugins_/formidable/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formidable/trunk/formidable_fonctions.php

    r65580 r83529  
    99include_spip('inc/formidable');
    1010include_spip('public/formidable_criteres');
     11
     12/**
     13 * #VOIR_REPONSE{checkbox_2} dans une boucle (FORMULAIRES_REPONSES)
     14 *
     15 * @param Pile $p
     16 * @return Pile
     17 */
     18function balise_VOIR_REPONSE_dist($p) {
     19        $nom = interprete_argument_balise(1, $p);
     20        if (!$type_retour = interprete_argument_balise(2, $p)) { $type_retour = 'null'; }
     21        if (!$sans_reponse = interprete_argument_balise(3, $p)) { $sans_reponse = 'null'; }
     22        $id_formulaires_reponse = champ_sql('id_formulaires_reponse', $p);
     23        $id_formulaire = champ_sql('id_formulaire', $p);
     24        $p->code = "calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $type_retour, $sans_reponse)";
     25        return $p;
     26}
     27
     28function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $type_retour=null, $sans_reponse=null){
     29        static $formulaires_saisies = array();
     30        static $reponses_valeurs = array();
     31        $tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/');
     32       
     33        // Si pas déjà présent, on cherche les saisies de ce formulaire
     34        if (is_null($formulaires_saisies[$id_formulaire])) {
     35                $formulaires_saisies[$id_formulaire] = unserialize(sql_getfetsel('saisies', 'spip_formulaires', 'id_formulaire = '.intval($id_formulaire)));
     36        }
     37        // Si pas déjà présent, on cherche les valeurs de cette réponse
     38        if (is_null($reponses_valeurs[$id_formulaires_reponse])) {
     39                if ($champs = sql_allfetsel('nom,valeur', 'spip_formulaires_reponses_champs', 'id_formulaires_reponse = '.intval($id_formulaires_reponse))) {
     40                        foreach ($champs as $champ) {
     41                                $reponses_valeurs[$id_formulaires_reponse][$champ['nom']] = $tenter_unserialize($champ['valeur']);
     42                        }
     43                }
     44        }
     45       
     46        // Si on demande la valeur brute, on ne génère rien, on renvoie telle quelle
     47        if ($type_retour == 'brut') {
     48                return $reponses_valeurs[$id_formulaires_reponse][$nom];
     49        }
     50       
     51        // Si on trouve bien la saisie demandée
     52        if ($saisie = saisies_chercher($formulaires_saisies[$id_formulaire], $nom)) {
     53                // On génère la vue de cette saisie avec la valeur trouvée précédemment
     54                return recuperer_fond(
     55                        'saisies-vues/_base',
     56                        array_merge(
     57                                array(
     58                                        'type_saisie' => $saisie['saisie'],
     59                                        'valeur' => $reponses_valeurs[$id_formulaires_reponse][$nom],
     60                                        'valeur_uniquement' => ($type_retour == 'valeur_uniquement' ? 'oui' : 'non'),
     61                                        'sans_reponse' => $sans_reponse,
     62                                ),
     63                                $saisie['options']
     64                        )
     65                );
     66        }
     67}
  • _plugins_/formidable/trunk/paquet.xml

    r82461 r83529  
    22        prefix="formidable"
    33        categorie="communication"
    4         version="2.5.14"
     4        version="2.6.0"
    55        etat="test"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.