[SPIP Zone] Pipeline AfficheGauche

Cette partie peut-être considérée comme un bug :frowning:

La fonction devrait faire un return de son message d'erreur, pour qu'il soit
repris par la fonction appelante dans le $flux['data'].

Aucun écho dans les pipelines. Tout doit passer par un "return $flux" et une
modification de $flux['data'] ou directement $flux (ça, ça dépend de quel
pipeline il s'agit).

C'est le principe même du pipeline, Spip appelle le plugin en lui donnant le
flux actuel afin que ce dernier puisse ajouter ou remplacer du contenu. Spip
récupère ce flux modifié et continue son traitement puis affiche la page (le
flux final une fois tous les traitements faits, et les différents pipelines
appelés).

Du coup, si tu fais un echo, Spip ne récupère pas ton contenu (car tu l'envoies
directement au navigateur en faisant le echo). D'où des problèmes d'affichage
probables dans le cas suivant:
Spip a une variable $flux ; il appelle ton plugin et tu fais un echo (contenu
envoyé au navigateur) ; Spip continue son traitement et fait à la fin un "echo
$flux;" => ton contenu se retrouve avant le contenu de la page.

C'est assez technique, mais j'espère avoir été relativement clair.

A ton écoute pour tout complément d'info.

Cédric D.

-----Message d'origine-----
De : Olivier Gautier [mailto:olivier.gautier@ac-rouen.fr]
Envoyé : jeudi 5 juillet 2007 13:42
À : cdespres69@free.fr
Cc : spip-zone@rezo.net
Objet : Re: [SPIP Zone] Pipeline AfficheGauche

cdespres69@free.fr a écrit :

Le plugin est dispo à cette adresse :
Connexion · GitLab

Bonjour,

Je viens de regarder et je vois ça dans la fonction du pipeline
affiche_gauche :

if ($res == '') create_GestionMetasTable($GestionMetasTable);

puis plusieurs echo plus bas dans cette fonction create_GestionMetasTable.

J'avoue alors que je n'y comprend plus rien : on peut mettre du echo
dans une fonction si on l'inclu dans le flux['data'] ou non ?

Cordialement, Olivier Gautier.

A ton écoute pour toute information supplémentaire.

Cédric D.

Bonjour,

cdespres69@free.fr a écrit :

Bonjour,

Si tu veux un exemple simple d'utilisation du pipeline affiche_gauche,
il y a le plugin "_stable_\gestion_metas"

Peux-tu me dire où il se trouve ? Je ne l'ai pas vu sur spip-zone, ni sur
spip-contrib.

Merci. Olivier Gautier.

Je te confirme qu'il ne faut pas faire de echo dans ta fonction, mais
bien un "return $flux" (dont tu modifies le "$flux['data']").

Si tu fais un echo, le code ne va pas s'afficher au bon endroit (en
fin de colonne gauche), mais tout au début de la page, d'où des
problèmes de design et peut-être même de fonctionnement.

A ton écoute pour tout complément d'information.

Cédric D.

-----Message d'origine-----
De : spip-zone-bounces@rezo.net [mailto:spip-zone-bounces@rezo.net] De
la part de Olivier Gautier Envoyé : mardi 3 juillet 2007 20:00 À :
spip-zone@rezo.net Objet : Re: [SPIP Zone] Pipeline AfficheGauche

cedric.morin@yterium.com a écrit :

Olivier Gautier a écrit :

Olivier Gautier a écrit :

Bonjour,

dans un fichier pipeline, j'ai écrit ça :

function evafiche_AfficheGauche($flux) {
   $exec = $flux['args']['exec'];
   if ($exec=='articles_edit') {
   include_spip('inc/evafiche_GestionArticle');
   evafiche_blocgauche_article();
       }
}

Après plusieurs tests, il s'avère que le test if
($exec=='articles_edit') ne soit pas correctement interprété alors
qu'il fonctionne parfaitement pour un autre plugin que j'ai déjà créé.
Quelques peut-il me dire ce qui ne va pas ?

Je me répond à moi-même : il semble qu'il faille écrire un return
$flux; en fin de fonction.
Quelqu'un peut-il confirmer ?

et surtout il ne faut pas faire d'echo mais un $flux['data'] .=
mafonctionquiretournecequelleveutafficher();
return $flux;

Merci Cédric pour ta réponse... qui va me donner beaucoup de travail...
car j'ai déjà créé quelques plugin pleins de echo par ci par là.
Ces plugins fonctionnent convenablement et ne semblent pas
destabiliser l'espace privé pour l'instant mais ça risque de changer
avec les futures versions de SPIP, non ?

Encore merci

Cedric

cdespres69@free.fr a écrit :

Cette partie peut-être considérée comme un bug :frowning:

La fonction devrait faire un return de son message d'erreur, pour qu'il soit
repris par la fonction appelante dans le $flux['data'].

Aucun écho dans les pipelines. Tout doit passer par un "return $flux" et une
modification de $flux['data'] ou directement $flux (ça, ça dépend de quel
pipeline il s'agit).

C'est le principe même du pipeline, Spip appelle le plugin en lui donnant le
flux actuel afin que ce dernier puisse ajouter ou remplacer du contenu. Spip
récupère ce flux modifié et continue son traitement puis affiche la page (le
flux final une fois tous les traitements faits, et les différents pipelines
appelés).

Du coup, si tu fais un echo, Spip ne récupère pas ton contenu (car tu l'envoies
directement au navigateur en faisant le echo). D'où des problèmes d'affichage
probables dans le cas suivant:
Spip a une variable $flux ; il appelle ton plugin et tu fais un echo (contenu
envoyé au navigateur) ; Spip continue son traitement et fait à la fin un "echo
$flux;" => ton contenu se retrouve avant le contenu de la page.
  
Ben, à regarder les plugins que j'ai créé, ça fonctionne tout de même, voilà ce que j'ai fait :
- j'ai mon fichier pipeline qui contient ma fonction AfficheGauche avec un test pour l'affichage uniquement dans articles_edit. Dans cette fonction, j'ai fait $flux['data'] .= MaFonctionAInclure(); puis return $flux;
- dans MaFonctionAInclure, j'ai tout un tas d'echo, de debut_cadre_relief(...); et fin_cadre_relief(); ou des trucs du même genre.
Et c'est au bon endroit, les formulaires fonctionnent impec...

Bon j'ai compris que c'est pas dans l'esprit et que j'aurai des problèmes dans l'avenir, donc j'ai essayé le truc suivant qui m'a mis un bazard... :
- dans mon fichier pipeline, j'ai écrit ça : $flux['data'] .=evafiche_blocgauche_article($flux); return $flux;
- dans la fonction evafiche_blocgauche_article, j'ai écrit par exemple ça : $flux['data'] .= debut_cadre_relief(....); et cette syntaxe ne fonctionne pas, alors que si je conserve tous les echo et le debut_cadre_relief(....); seul sans gérer le $flux, le résultat est impeccable, d'où ma question : quelle syntaxe pour utiliser les fonctions debut_cadre_relief(....) dans le flux.

Merci par avance,
Cordialement, Olivier Gautier.

C'est assez technique, mais j'espère avoir été relativement clair.

A ton écoute pour tout complément d'info.

Cédric D.

-----Message d'origine-----
De : Olivier Gautier [mailto:olivier.gautier@ac-rouen.fr]
Envoyé : jeudi 5 juillet 2007 13:42
À : cdespres69@free.fr
Cc : spip-zone@rezo.net
Objet : Re: [SPIP Zone] Pipeline AfficheGauche

cdespres69@free.fr a écrit :
  

Le plugin est dispo à cette adresse :
Connexion · GitLab

Bonjour,

Je viens de regarder et je vois ça dans la fonction du pipeline
affiche_gauche :

if ($res == '') create_GestionMetasTable($GestionMetasTable);

puis plusieurs echo plus bas dans cette fonction create_GestionMetasTable.

J'avoue alors que je n'y comprend plus rien : on peut mettre du echo
dans une fonction si on l'inclu dans le flux['data'] ou non ?

Cordialement, Olivier Gautier.

A ton écoute pour toute information supplémentaire.

Cédric D.

Bonjour,

cdespres69@free.fr a écrit :

Bonjour,

Si tu veux un exemple simple d'utilisation du pipeline affiche_gauche,
il y a le plugin "_stable_\gestion_metas"

Peux-tu me dire où il se trouve ? Je ne l'ai pas vu sur spip-zone, ni sur
spip-contrib.

Merci. Olivier Gautier.

Je te confirme qu'il ne faut pas faire de echo dans ta fonction, mais
bien un "return $flux" (dont tu modifies le "$flux['data']").

Si tu fais un echo, le code ne va pas s'afficher au bon endroit (en
fin de colonne gauche), mais tout au début de la page, d'où des
problèmes de design et peut-être même de fonctionnement.

A ton écoute pour tout complément d'information.

Cédric D.

-----Message d'origine-----
De : spip-zone-bounces@rezo.net [mailto:spip-zone-bounces@rezo.net] De
la part de Olivier Gautier Envoyé : mardi 3 juillet 2007 20:00 À :
spip-zone@rezo.net Objet : Re: [SPIP Zone] Pipeline AfficheGauche

cedric.morin@yterium.com a écrit :

Olivier Gautier a écrit :

Olivier Gautier a écrit :

Bonjour,

dans un fichier pipeline, j'ai écrit ça :

function evafiche_AfficheGauche($flux) {
   $exec = $flux['args']['exec'];
   if ($exec=='articles_edit') {
   include_spip('inc/evafiche_GestionArticle');
   evafiche_blocgauche_article();
       }
}

Après plusieurs tests, il s'avère que le test if
($exec=='articles_edit') ne soit pas correctement interprété alors
qu'il fonctionne parfaitement pour un autre plugin que j'ai déjà créé.
Quelques peut-il me dire ce qui ne va pas ?

Je me répond à moi-même : il semble qu'il faille écrire un return
$flux; en fin de fonction.
Quelqu'un peut-il confirmer ?

et surtout il ne faut pas faire d'echo mais un $flux['data'] .=
mafonctionquiretournecequelleveutafficher();
return $flux;

Merci Cédric pour ta réponse... qui va me donner beaucoup de travail...
car j'ai déjà créé quelques plugin pleins de echo par ci par là.
Ces plugins fonctionnent convenablement et ne semblent pas
destabiliser l'espace privé pour l'instant mais ça risque de changer
avec les futures versions de SPIP, non ?

Encore merci

Cedric