Pierre FICHES a écrit :
Le 14 juin 06 à 15:15, Olivier GENDRIN a écrit :
spip-bounces@rezo.net wrote:
Ah finalement il y a un test pour REM ?
pas de trace de NOOP dans le code en tous cas.
Ligne 1037 de
Connexion · GitLab balises.php pour
#REM.
faudrait plutot utiliser REM alors si ca simplifie les calculs à la
compilation ...
En gros, il faudrait donc utiliser REM et NOOP en
developpement, mais en prod, supprimer les REM et remplacer NOOP par
REM
Non, il serait préférable de supplier les dev de faire suivre la définition
de REM par celle de NOOP (ça serait plus lisible).
J'explore donc la piste proposée par Stéphane :
Je suis revenu à mon point de départ avec cette méthode différente.
Ce que j'ai fait :
1 - Appel de layer.js dans le header
oui
2 - Collage dans mes_fonctions de la fonction str_cat ainsi que du contenu du fichier layer.php
oui, sinon :
include_ecrire("inc_layer.php3");
3 - La boucle :
<BOUCLE_contactmail(MOTS){id_article}{titre=Contact}
<BOUCLE_2contact(AUTEURS){id_article}>
> <div>
> [(#ENV**{block_visible}|?{
> [(#REM**|str_cat{contact}|md5|bouton_block_visible)],
> [(#REM**|str_cat{contact}|md5|bouton_block_invisible)]})]
> <a href="javascript:swap_couche('$compteur_block',
> '$spip_lang_rtl');" title="test"> #TITRE</a>
c'est quoi ce swap couche ?
squelette = HTML, il risque pas de mettre qqchose à la place de $compteur_block ni $spip_lang_rtl...
> </div>
>
> [(#ENV**{block_visible}|?{
> [(#REM**|str_cat{contact}|md5|debut_block_visible)],
> [(#REM**|str_cat{contact}|md5|debut_block_invisible)]})]
> #FORMULAIRE_ECRIRE_AUTEUR
>
> </div>
> [(#REM**|str_cat{contact}|md5|fin_block)]
>
> </BOUCLE_2contact>
> </BOUCLE_contactmail>
vu la boucle, tu risque d'avoir plusieurs fois les auteurs hors le formulaire lui ne depend que des auteurs (et encore, c'est pas vraiment exploitable vu les variables passées en post)
1- je te conseille de prendre id_mot ET id_auteur pour nommer le bloc, sinon en cliquant, tu risque d'ouvrir plusieurs boites
2- il faut bidouiller un peu le formulaire ecrire_auteur pour avoir une variable de retour exploitable pour identifier la boite à rouvrir
En gros, il faut faire une version à laquelle tu passes un identifiant qui soit ajouter en input hidden.
par exemple, [(#FORMULAIRE_ECRIRE_AUTEUR2{[(#ID_AUTEUR|str_cat{ecrire_auteur}|str_cat{#ID_MOT})]})]
donc copier/coller de inc-formulaire_ecrire_auteur.php3 et formulaire_ecrire_auteur.html dans /squelettes et renommage en ecrire_auteur2
renommage de tout ce qui est ECRIRE_AUTEUR en ECRIRE_AUTEUR2
la fonction stat recupere cette valeur dans le filtre, la passe à la fonction dyn (qui recoit donc maintenant 4 parametres):
function balise_FORMULAIRE_ECRIRE_AUTEUR2_dyn($id_auteur, $id_article, $mail,$retour) {
qui l'ajoute au tableau :
return
array('formulaire_ecrire_auteur', 0,
array(
'retour' => $retour,
'id' => $id,
'mailko' => $mailko ? $puce : '',
'mail' => $adres,
'sujetko' => ($texte && !$sujet) ? $puce : '',
'sujet' => $sujet,
'texte' => $texte,
'valide' => ($validable ? $id : ''),
'bouton' => (_T('form_prop_envoyer')),
'boutonconfirmation' => ($validable ?
_T('form_prop_confirmer_envoi') :
'')
)
);
dans formulaire_ecrire_auteur.html :
[<input type="hidden" name="retour" value="(#ENV{retour})"/>]
et donc au final, ta boucle devient :
<BOUCLE_contactmail(MOTS){id_article}{titre=Contact}
<div>
#TITRE
<BOUCLE_2contact(AUTEURS){id_article}>
<div>
<div>
[(#ENV{retour}|tester_retour_ecrire_auteur{#ID_AUTEUR,#ID_MOT}|?{
[(#ID_AUTEUR**|str_cat{ecrire_auteur}|str_cat{#ID_MOT}|md5|bouton_block_visible)],
[(#ID_AUTEUR**|str_cat{ecrire_auteur}|str_cat{#ID_MOT}|md5|bouton_block_invisible)]})]
#TITRE
</div>
[(#ENV{retour}|tester_retour_ecrire_auteur{#ID_AUTEUR,#ID_MOT}|?{
[(#ID_AUTEUR**|str_cat{ecrire_auteur}|str_cat{#ID_MOT}|md5|debut_block_visible)],
[(#ID_AUTEUR**|str_cat{ecrire_auteur}|str_cat{#ID_MOT}|md5|debut_block_invisible)]})]
#FORMULAIRE_ECRIRE_AUTEUR
</div>
</BOUCLE_2contact>
</div>
</BOUCLE_contactmail>
avec dans mes_fonction :
function tester_retour_ecrire_auteur($retour,$id_auteur,$id_mot){
if ($retour==$id_auteur."ecrire_auteur".$id_mot) return " ";
else return "";
}
4 - Le problème est qu'à chaque validation du formulaire, la couche se referme. Je devrais surement faire des tests pour indiquer au js qu'il toujours dans la couche visible mais je bloque et ne vois pas quoi tester. Pourriez-vous m'éclairer ?
Y vois tu plus clair maintenant ?
@++