[spip-dev] Action après l'ajout / modification d'un document joint

Salut. J’aimerais rajouter du code après l’une des étapes suivantes :

  • après l’ajout d’un document joint à un article

  • après la modification d’un document joint à un article

Visiblement aucun pipeline n’est dispo pour m’aider, et je dois donc faire un rajout
de code dans la fonction qui se charge de l’ajout / modification du document joint.

Maintenant est il possible de rajouter moi-même (simplement) un pipeline , ou est il
plus simple de rajouter bêtement mon code aux bons endroits ? (Pas certain d’être très clair).

Question subsidiaire, à quel endroit , quelle méthode faudrait il que je rajoute mon code ?

Merci pr tte aide :slight_smile:

Bonjour

deja repondu sur un fil précedent ::

        - après l'ajout d'un document joint à un article

En natif en 193

km

Merci de ton aide , par contre je sais pas encore comment mettre ça en
application.
si qqu'un peut m'aider.

Je m'attendais plus à une structure
Plugin.xml
Plugin_xxx_fonctions.php
Plugin_xxx_options.php

Mais là c'est pas le cas , il y'a un fichier xml et un php sans vraiment
d'explication ou doc.

Sinon tu dis que c'est en natif en 193. De quoi parles -tu ? 193 ?

-----Message d'origine-----
cam.lafit@azerttyu.net
Envoyé : mardi 26 février 2008 10:45

Sinon tu dis que c'est en natif en 193. De quoi parles -tu ? 193 ?

La version de SPIP en développement.

S'lt

Merci de ton aide , par contre je sais pas encore comment mettre
ça en application.
si qqu'un peut m'aider.

Je m'attendais plus à une structure
Plugin.xml
Plugin_xxx_fonctions.php
Plugin_xxx_options.php
Mais là c'est pas le cas , il y'a un fichier xml et un php sans
vraiment d'explication ou doc.

Le plugin reprend à l'identique la structure de spip. C'est juste un
fork de la fonction inc_ajouter_documents().
Il y a juste une différence principal avec le fichier /inc/ajouter_documents.php

c'est l'ajout du pipeline : post_edition

Donc il suffit d'exploiter ce pipeline dans ton plugin.

Sinon tu dis que c'est en natif en 193. De quoi parles -tu ? 193 ?

La version de SPIP en développement.

Ou une arlésienne :slight_smile: C'est en devenir la prochaine version stable ... un jour.
Par conséquent dans la prochaine version stable, il n'y aura plus
besoin d'utiliser le plugin pipeline_document_192

km

Finalement je vais éviter de me servir des pipelines.
J'ai pas compris comment utiliser ceux-là.
On va y aller à l'ancienne.

J'ai trouvé où me greffer pour l'ajout de documents : dans
/inc/ajout_documents.php.

Par contre pour l'édition et la suppression je ne trouve pas.
Vous ne sauriez pas par hasard ?

J'ai bien trouvé une fonction action_supprimer_document
dans /action/supprimer.php, mais apparemment lors de la suppression d'un doc
cette fonction n'est étrangement pas appelée. Il ne logge pas les traces que
j'ai rajoutées.

-----Message d'origine-----
cam.lafit@azerttyu.net
Envoyé : mardi 26 février 2008 19:00

Slt, y'a-t-il un pti tuto ou une aide disponible pour le rajout
D'un pipelnie / point d'entrée dans le code de Spip ?

J'ai déjà lu les tutos pr le dév des plugins avec ou sans pipeline,
mais là ce qui m'intéresserait c'est de rajouter 2 ou 3 points d'entrée
pour mes besoins.

Merci d'avance :slight_smile:

Slt, y'a-t-il un pti tuto ou une aide disponible pour le rajout
D'un pipelnie / point d'entrée dans le code de Spip ?

S'inspirer des pipelines existants :stuck_out_tongue:
Il n'y a pas une méthode unique, ça dépend des besoins (afficher,
traiter des données, etc)

J'ai déjà lu les tutos pr le dév des plugins avec ou sans pipeline,
mais là ce qui m'intéresserait c'est de rajouter 2 ou 3 points d'entrée
pour mes besoins.

Peux-tu les décrire ? Ca pourrait servir à d'autres.

Bah en supposant qu'un article soit créé. Je veux pouvoir appeler une
procédure
de copie de fichier après avoir joint un document a un article, apres
l'avoir éditer ou supprimer.

On a essayé de m'orienter vers un plugin apparemment déjà fait, mais je n'ai
ni compris
comment ça marchait, ni comment le mettre en place.

Cad , un fichier xml qui contient en fait une page HTML ...hummm

Donc le plus simple c'est que je refasse mon propre plugin mais il faudrait
pour cela que
Je repose 3 pipelines

- apres l'action de joindre un doc
- apres la modification du doc joint
- apres la suppression du doc joint

-----Message d'origine-----

S'lt

Bon je reviens à la charge. Le plugin proposé (/pipeline_document_192)
fait le boulot demandé. Dans la prochaine version de spip il n'y aura
pas besoin du dit plugin vu que le pipeline existe nativement.

Il te suffit de mettre dans ton plugin.xml la déclaration <pipeline>
avec le point d'entré "post_edition"

L'utilisation des pipeline est expliqué
http://doc.spip.org/@Tuto-Se-servir-des-points-d-entree

<pipeline>
<nom>point_entree</nom>
<action>fonction</action>
<inclure>fichier.php</inclure>
</pipeline>

km

A part plonger les mains dans le code et placer les nouveaux pipelines au
bon endroit, je vois pas :slight_smile:

Une fois cela fait, tu peux proposer ces modifs

-----Message d'origine-----

Le fichier php ajouter_documents.php ne contient (faute d'erreur de ma part)
aucune fonction.

On est bien d'accord que pour un plugin "pipeliné"

Il faut :
- Un fichier xml (assez court et non pas une page HTML) qui indique le point
d'entrée, la méthode a appeler,
Les fichiers php a inclure, etc.

- Les fichiers php qui contiennent les fonctions appelées pour le plugin.

Or là dans ce que tu m'as envoyé , je ne vois de tout ça.
C'est pour ca que je comprends pas.

-----Message d'origine-----

S'lt

Si je reprends ta question initiale (enfin ce que j'ai compris) :

Tu demandes comment de ton plugin tu peux ajouter un traitement apres
ajout d'un doc.

De ce postulat, tu fais dans le fichier plugin.xml de TON plugin :

<pipeline>
<nom>post_edition</nom>
<action>fonction</action>
<inclure>fichier.php</inclure>
</pipeline>

Expliqué dans http://doc.spip.org/@Tuto-Se-servir-des-points-d-entree

Or le pipeline dont tu as besoin n'existe qu'à partir de la 193. Pour
pouvoir l'utiliser dans la version stable actuelle (192) tu dois
installer et activer le plugin pipeline_document_192.

Ce plugin ne fait que rajouter le pipeline, ni plus ni moins.
A partir de là c'est dans ton plugin, que tu fais le necessaire pour
exploiter cette entrée.

En resumé :
1/ Tu actives le plugin pipeline_document_192
2/ Tu exploites le pipeline post_edtion dans ton plugin

Km

En installant le plugin dans mon répertoire plugin ca ne marche pas.
Dans la gestion de plugins, il n'est pas reconnu pour une histoire de
syntaxe a priori.

Alors peut etre que je me goure pr la procédure d'install.

Moi ce que j'ai fait c'est que je me suis crée un repertoire plugin_document
dans le répertoire plugin
de spip.

J'y ai mis le fichier pluginx.xml dispo sur le lien que tu m'as passé, et le
fichier ajouter_documents.php

-----Message d'origine-----

S'lt

1/ As tu copié à l'indentique (la structure) du plugin dans plugins/
1.1/ pour info le plugin existe zippé dans http://files.spip.org/spip-zone

2/ si oui essaye de renommer plugin_document en _plugin_document
Ceci pour forcer l'odre de chargement du plugin avant le tien (ordre
alphanumérique)

3/ si tjrs rien qu'elle est l'erreur de syntaxe ?

4/ si non à tous ça il y a peut etre un pb

Km

Merci, en fait la version zippée n'est pas du tout la même que la version
que j'avais trouvé sur le lien qu'on m'avait filé.

Là pas de souci de syntaxe :).

Maintenant me reste a voir comment l'exploiter.

Merci en tt cas pour cette aide, mais je vais surement avoir
besoin encore d'un ptit coup demain :slight_smile:

-----Message d'origine-----

Pr confirmation c'est le point d'entrée post_edition que je dois utiliser
pour mon nouveau plugin (qui doit faire une recopie du fichier joint à un
article) ?

-----Message d'origine-----