Categories > TinyButStrong general >

HTML plugin Select

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: garonica
Date: 2010-05-11
Time: 16:38

HTML plugin Select

Bonjour,

Je n'arrive pas a faire fonctionner le plugin HTML:

HTML:
    <div id="detail_frais" class="[var.~securite.detail;if [val]='frais';then 'affiche';else 'cache']">
        <div class="corps">
            <form method="post" action="./index.php" id="bk_frais_[bk_frais.#;block=form]">
                <p>
                    <span class="petit">
                        <input id="valider_frais_[bk_frais.#]" class="[var.~facture.existe_frais([bk_frais.ID_FRAIS]); if [val]=0; then 'petitbouton'; else 'cache';noerr]" type="image" name="action" value="affecter_frais" src="./images/statut_mission_0.png" alt="Affecter ce frais à la facture" title="Affecter ce frais à la facture" />
                        <input id="supprimer_frais_[bk_frais.#]" class="[var.~facture.existe_frais([bk_frais.ID_FRAIS]); if [val]=0; then 'cache'; else 'petitbouton';noerr]" type="image" name="action" value="liberer_frais" src="./images/statut_mission_1.png" alt="Supprimer ce frais de la facture" title="Supprimer ce frais de la facture" />                   
                        <input class="cache" type="hidden" name="id_frais" value="[bk_frais.ID_FRAIS]" title="" />
                    </span>
                  
                    <input class="a250" name="observations" type="text" id="observations_[bk_frais.#]" value="[bk_frais.OBSERVATIONS]" />
                    <select class="a150" name="id_type_frais" id="id_type_frais_[bk_frais.#]">
                        <option value="[bk_type_frais_[bk_frais.#].ID_TYPE_FRAIS]">[bk_type_frais_[bk_frais.#].NOM;block=option]</option>
                        <option>[[bk_frais.ID_TYPE_FRAIS];ope=html;select]</option>
                    </select>

                   
                </p>
            </form>
        </div>
    </div>


PHP:
            case FRAIS:
                $liste=$securite->facture->liste_frais_facturables();
                $tbs->MergeBlock('bk_frais','array',$liste);
               
               
                $types = $securite->type_frais();
                $n = sizeof($liste);
                for ($i = 1; $i <= $n; $i++)
                {
                    $tbs->MergeBlock("bk_type_frais_$i",'array',$types);
                }
               
                break;

Les blocs se fusionnent bien mais la sélection de l'item ne se fait pas

si je passe le bloc bk_frais arpès le foreach le select n'est pas fusionné

Je ne vois pas ce que je peux faire.

La version de TBS est 3.5.3 et le plugin HTML: 1.07

Merci de votre aide
By: garonica
Date: 2010-05-11
Time: 16:44

Re: HTML plugin Select

j'ai corrigé la ligne
<option>[[bk_frais.ID_TYPE_FRAIS];ope=html;select]</option>

en

<option>[bk_frais.ID_TYPE_FRAIS;ope=html;select]</option>

ca ne change rien
By: Skrol29
Date: 2010-05-11
Time: 17:46

Re: HTML plugin Select

Salut Garonica,

Oui, ça semble normal.
Tu fusionnes d'abord le bloc "bk_frais", et puis après "bk_type_frais_". Donc quand ce champ [bk_frais.ID_TYPE_FRAIS] est fusionné, le liste des items possible n'est pas encore injectée dans le template, il ne reconnait ton aucun item.

Essaye cette astuce qui est un contournement pas très propre (je ne l'ai pas testé)
[var;if 1=1;then [bk_frais.ID_TYPE_FRAIS];ope=html;select]

Sinon une autre manière de s'en sortir, plus élégante et plus rapide, c'est de remplacer
<option value="[bk_type_frais_[bk_frais.#].ID_TYPE_FRAIS]">[bk_type_frais_[bk_frais.#].NOM;block=option]</option>
<option>[bk_frais.ID_TYPE_FRAIS;ope=html;select]</option>
par
<option value="[bk_type_frais_[bk_frais.#].ID_TYPE_FRAIS]" [bk_type_frais_[bk_frais.#].ID_TYPE_FRAIS;if [val]=[bk_frais.ID_TYPE_FRAIS];then 'selected="selected"';else '']>[bk_type_frais_[bk_frais.#].NOM;block=option]</option>
By: garonica
Date: 2010-05-11
Time: 19:20

Re: HTML plugin Select

J'ai testé la dernière proposition, elle fonctionne.

pour info je m'étais rabattu sur du javascript (jquery):
$(document).ready(function(){
  $('#id_type_frais_[bk_frais.#]').val([bk_frais.ID_TYPE_FRAIS]);
});

Merci beaucoup du coup de main.