[SPIP Zone] Pipeline AfficheGauche

Les fonctions "..._cadre_relief" prennent visiblement un paramètre appelé
"return" qui doit être true ou false. Si tu mets true, la fonction de renvoie le
code HTML (que tu peux concaténer à $flux['data']). Si tu mets false, la
fonction fait un echo du code HTML.

Donc normalement, avec un code du genre suivant ça devrait marcher de partout
(article_edit ou autre) sans test particulier :

AfficheGauche($flux) {
   $flux['data'] .= evafiche_blocgauche_article();
   return $flux;
}

function evafiche_blocgauche_article() {
   $retour = '';
   $retour .= debut_cadre_relief('',true);
   $retour .= 'blabla<br />blabla';
   $retour .= fin_cadre_relief(true);
   return $retour;
}

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

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

cdespres69@free.fr a écrit :

Les fonctions "..._cadre_relief" prennent visiblement un paramètre appelé
"return" qui doit être true ou false. Si tu mets true, la fonction de renvoie le
code HTML (que tu peux concaténer à $flux['data']). Si tu mets false, la
fonction fait un echo du code HTML.

Donc normalement, avec un code du genre suivant ça devrait marcher de partout
(article_edit ou autre) sans test particulier :

AfficheGauche($flux) {
   $flux['data'] .= evafiche_blocgauche_article();
   return $flux;
}

function evafiche_blocgauche_article() {
   $retour = '';
   $retour .= debut_cadre_relief('',true);
   $retour .= 'blabla<br />blabla';
   $retour .= fin_cadre_relief(true);
   return $retour;
}
  
Un grand grand merci Cédric. Ca fonctionne impec avec tes indications (je vais avoir maintenant un gros boulot pour revoir l'écriture des pipelines dans d'autres plugins).
Je comprend mieux comment le noyau de Spip fonctionne mais c'est tout de même dur dur : plus on se rapproche du fonctionnement de l'espace privé et moins c'est documenté.
D'ailleurs, il ne doit pas y avoir beaucoup de personnes qui comprennent tout le fonctionnement interne de Spip.

Encore merci.

Olivier Gautier.

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

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

C'est sûr que la doc est loin d'être complète, mais codée très proprement, ça aide.

Si tu t'en sens capable, il ne faut pas hésiter à ouvrir les fichiers de Spip et regarder directement le code des fonctions.

Personnellement, c'est en ouvrant le fichier inc/presentation.php que j'ai vu ce que faisait la fonction debut_cadre_relief (je n'en savais rien il y a quelques heures de ça).

Bon courage à toi pour tes plugins.

Cédric D.

Olivier Gautier a écrit :

cdespres69@free.fr a écrit :

Les fonctions "..._cadre_relief" prennent visiblement un paramètre appelé
"return" qui doit être true ou false. Si tu mets true, la fonction de renvoie le
code HTML (que tu peux concaténer à $flux['data']). Si tu mets false, la
fonction fait un echo du code HTML.

Donc normalement, avec un code du genre suivant ça devrait marcher de partout
(article_edit ou autre) sans test particulier :

AfficheGauche($flux) {
   $flux['data'] .= evafiche_blocgauche_article();
   return $flux;
}

function evafiche_blocgauche_article() {
   $retour = '';
   $retour .= debut_cadre_relief('',true);
   $retour .= 'blabla<br />blabla';
   $retour .= fin_cadre_relief(true);
   return $retour;
}
  
Un grand grand merci Cédric. Ca fonctionne impec avec tes indications (je vais avoir maintenant un gros boulot pour revoir l'écriture des pipelines dans d'autres plugins).
Je comprend mieux comment le noyau de Spip fonctionne mais c'est tout de même dur dur : plus on se rapproche du fonctionnement de l'espace privé et moins c'est documenté.
D'ailleurs, il ne doit pas y avoir beaucoup de personnes qui comprennent tout le fonctionnement interne de Spip.

Encore merci.

Olivier Gautier.

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

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

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone