Categories > TinyButStrong general (FR) >

multi FieldMerge

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: ioguix
Date: 2006-02-20
Time: 17:25

multi FieldMerge

Bonjour,

J'ai fait un petit hack rapide afin de pouvoir passer plusieur nom de champs à MergeField comme on peu déjà le faire avec MergeBlock.

Je ne suis pas certain de mon code pour ce qui est du comportement si une fonction utilisateur est spécifiée (ModeFonction) car je ne l'utilise pas. Pour ce qui est d'un MergeField classique, aucun problème ne semble se poser. Comme je n'ai pas énormément de temps à consacrer pour bien faire les choses, j'hésite à poser ici mes modifs (ma foi trés courtes et simple). Cependant, pensez vous intégrer ce type de comportement dans une futur version de TBS ?

en attendant la petite réponse, merci encore pour TBS ;)

++
By: Skrol29
Date: 2006-02-20
Time: 17:36

Re: multi FieldMerge

Ca pourrait être facilement intégrable dans la version 3.0.
Je vais étudier le truc et si ça ne pose pas de problèmes secondaire, je vais l'intégrer.
By: ioguix
Date: 2006-02-20
Time: 17:40

Re: multi FieldMerge

Merci,

Bon courrage et bonne continuation ;)
By: ioguix
Date: 2006-02-20
Time: 18:37

Re: multi FieldMerge

Bon, ben voici mon code finalement. Au mieux ça marche sans pb, au pire, il y aura un peu de débogage ou alors tu jette tout :p.

function MergeField($Name,$Value,$IsUserFct=false) {
    $FieldLst = explode(',',$Name); //
    if ($IsUserFct) {
        $FctInfo = $Value;
        $ErrMsg = false;
        if ($this->meth_Misc_UserFctCheck($FctInfo,$ErrMsg)) {
            $FctPrm = array('','');
            foreach ($FieldLst as $Field) {
                $PosBeg = 0;
                while ($Loc = $this->meth_Locator_FindTbs($this->Source,$Name,$PosBeg,'.')) {
                    $FctPrm[0] =& $Loc->SubName; $FctPrm[1] =& $Loc->PrmLst;
                    $x = call_user_func_array($FctInfo,$FctPrm);
                    $PosBeg = $this->meth_Locator_Replace($this->Source,$Loc,$x,false);
                }
            }
        } else {
            $this->meth_Misc_Alert('MergeField Method',$ErrMsg);
        }
    } else {
        foreach ($FieldLst as $Field) {
            $PosBeg = 0;
            while ($Loc = $this->meth_Locator_FindTbs($this->Source,$Field,$PosBeg,'.')) {
                print "<br>Merge Field $Field " . count ($FieldLst);
                $PosBeg = $this->meth_Locator_Replace($this->Source,$Loc,$Value,true);
            }
        }
    }
}
Voilà, je sais pas si je te ferais gagner un peu de temps, mais bon, si je peux contribuer un peu hein...ça coûte rien de le faire ;)

++
By: ioguix
Date: 2006-02-20
Time: 18:42

Re: multi FieldMerge

Oops !

Il y a un petit print de debug à retirer :
print "<br>Merge Field $Field " . count ($FieldLst);
Effectivement, j'avais un petit bug si le champs apparaissait plusieurs fois dans la page ne connaissant pas le fonctionnant de meth_Locator_FindTbs.

Bref, Domage que l'on puisse pas éditer ses précédents messages ça éviterait que je post à tout va ;)

(mais il faudrait gérer des comptes sur le forum et j'ai bien conscience que ça prend du temps de dev ;))

++