#1 2005-12-06 01:07:11

rvelices
Invité

[Evolution] Plugins

J'aimerais savoir ce que la communaute pense de la possibilite de rajouter des plugins dans phpwg. Je pense que c'est une fonctionnalite qui manque cruellement.
Cette possibilite permettra l'integration facile de pas mal des mod et requetes qui passent sur le forum (comme bb code dans les commentaires ou utilisation de mod_rewrite etc ...)...

Coppermine et wordpress ont un mecanisme assez simple et puissant des plugins. Gallery2 utilise un systeme pousse a l'extreme (a mon avis) ou on peut tout faire mais pour rentrer dans le code et le comprendre... il faut etre un superexpert php et gallery2 (et cette flexibilite a un cout sur le modele de la base de donnees qui est incomprehensible) . Neanmoins pour le user final c'est genial.

Quelqu'un d'autre pense qu'un systeme de plugins avec un bon equilibre simplicite/flexibilite serait util ?

#2 2005-12-06 08:26:03

flipflip
Membre
Lyon
2005-03-19
2316

Re: [Evolution] Plugins

Salut, c'est sur qu'un système de gestion de plugins serait pas mal, surtout si cela pourrait éviter de toucher au fichier d'origine.


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#3 2005-12-06 09:47:36

MBt
Invité

Re: [Evolution] Plugins

Bonjour,
C'est certain, les modules sont généralement un plus pour faire adopter un outil par les utilisateurs.

Un système qui me parait simple serait de permettre l'appel d'un fichier php modifiable par l'utilisateur et qui pourrait appeler les modules souhaités.

En détail voici une réalisation envisageable :
* Aujourd'hui le fichier category.php se compose "grossièrement" des parties suivantes :

Code:

   - Contrôle et initialisation de l'environnement [if ( isset(...))]
   - Définition des variables [$template->assign_block_vars(...)]
   - Affichage du template [$template->parse('category')]

Juste avant l'affichage du template il faudrait faire un include d'un fichier .php customisé par l'utilisateur. Dans le cas général ce fichier reste vide mais si un utilisateur veux ajouter des fonctionnalités à la page category il lui suffit de définir de nouveaux block_vars. Ce que j'ai suggéré  dans un post c'est de l'appeler /template/template_name/category.php ainsi la customisation de la page est liée au template et pas au coeur de pwg. De cette page on peut même appeler des modules.

on obtient donc :
* /category.php  :

Code:

   - Contrôle et initialisation de l'environnement [if ( isset(...))]
   - Définition des variables [$template->assign_block_vars(...)]
   - Appel de la customisation de la page [include ('/template/template_name/category.php')]
   - Affichage du template [$template->parse('category')]

* /template/template_name/category.php

Code:

   - Définition des variables customisées [$template->assign_block_vars('custom',array)]
   - Appel d'un module [include ('/modules/module_name.php')] 
   - ...

* /modules/module_name.php

Code:

   - Définition des variables du module [$template->assign_block_vars('module.module_name',array)]

* /template/template_name/category.tpl

Code:

   - Appel de la variable customisée [ {custom.myVar} ]
   - Appel de la variable des modules [ {module.module_name.moduleVar} ]
   - ...

J'espère que je n'ai pas écrit de conneries et que c'est réalisable. Si ça l'est ça ne me parait pas fastidieux pour les développeurs de pwg (juste un appel à un fichier situé dans le répertoire /template) et ça ouvre la porte à tous les délires de développeurs.

A+
MBt

#4 2005-12-06 13:21:47

chrisaga
Former Piwigo Team
France (92)
2005-08-10
566

Re: [Evolution] Plugins

MBt a écrit:

J'espère que je n'ai pas écrit de conneries et que c'est réalisable.

Je trouve que ça ne ressemble pas trop à des conneries ;-) et présenté comme ça, c'est même une piste assez séduisante. Cette approche me convainc plus que le fait de prendre ça par le côté "template".
Il reste que même si ça ne semble pas demander beaucoup de code dans PWG, ça peut avoir un fort impact sur son évolution, ça vaut donc le coup d'en discuter 5 minutes avant de se lancer.


Utilisateur depuis la version 1.3, Impliqué depuis la 1.4, Responsable du template des 1.5 et 1.6  ... et en (in)disponibilité sur la 1.7

Hors ligne

#5 2005-12-06 14:17:25

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Evolution] Plugins

Oui, je conviens bien que l'idée est excellente. Sauf que je n'attacherai pas les plugins dans les templates.
Un plugin se doit d'être disponible sur l'ensemble des templates.
Je conseillerai un répertoire spécifique comme /plugins/ par exemple.


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#6 2005-12-06 15:37:33

MBt
Membre
Paris
2005-12-06
45

Re: [Evolution] Plugins

VDigital a écrit:

Un plugin se doit d'être disponible sur l'ensemble des templates.

Je suis 100% de ton avis c'est pour ça que j'ai parlé du répertoire "/modules/module_name.php" (que tu peux appeler plugin ou autre à vous de voir ce qui est le mieux) et pas de "/template/module/...".

Par contre je suggère d'appeler les modules via le template car un module peut être appelé dans un template et pas dans un autre. Si tous les modules sont chargés quelque soit le template ça va couter cher en CPU et mémoire si le template affiché n'en utilise aucun.

Prenons un exemple :

Code:

 + modules
 |    + mod_calendar (affiche un calendrier)
 |    + mod_randomize (affiche 5 photos aléatoires)
 |    + mod_unTrucSuper (Le meilleur mod qui existe aujourd'hui)
 |
 + templates
       + simplissime
       |       + category.tpl (ne fait appel à aucun mod)
       |       + category.php (vide)
       |
       + trescharge
                + category.tpl (contient {module.mod_calendar.xxx} {module.mod_randomize.xxx} et {module.mod_unTrucSuper.xxx})
                 + category.php (mod_include('calendar'); mod_include('randomize'); mod_include('unTrucSUper') )

Le template "simplissime" ne sera pas forcément plus moche/beau que "trescharge". Il sera certainement plus rapide à afficher mais ne présentera pas les mêmes fonctionnalités.
Je n'ai  pas parlé ici des thèmes qui sont évoqués en détail dans ce thread.

MBt

Hors ligne

#7 2005-12-06 21:49:25

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Evolution] Plugins

Pour moi: C'est bon, mais je laisse Chris regardez ça.
Il a du taf pour un moment avec toutes ces excellentes idées qui débarquent.   
Il va falloir trouver du temps et le moyer de l'aider. (Pas moi, Chris...). 
8-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#8 2005-12-06 22:13:05

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12671

Re: [Evolution] Plugins

rvelices, tu sembles avoir l'expérience du sujet pour l'avoir rencontré sur d'autres applications (Wordpress, Coppermine, Gallery2). Pourrais-tu nous présenter grossièrement les différents modes de fonctionnement proposés, ou des liens vers des pages l'expliquant. Quels sont selon toi les avantages, les inconvénients de chaque solution ?

Je trouve l'idée des plugins intéressante, mais j'ai du mal à comprendre comment une galerie avec plugins peut migrer d'une version à une autre sans que les évolutions (du modèle de données) ne soient un frein. Pour faire de vrais plugin sans impacts sur le code officiel et le modèle de données officiel, cela suppose certainement des constructions non optimales, surtout en terme de performances. Certes l'utilsateur final s'en moque, mais je voudrais creuser un peu.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#9 2005-12-06 22:45:28

chrisaga
Former Piwigo Team
France (92)
2005-08-10
566

Re: [Evolution] Plugins

Merci Vincent pour tes encouragement,
mais effectivement, je pense que je ne vais pas pouvoir me tapper tout le boulot,
ou alors on va mettre du temps ;-)

Vu du côté "template", ça m'a l'air pas mal.
Vu du côté "moteur", j'ai un peu les mêmes questions que Pierrick, c'est pourquoi je voulais qu'on prenne la peine d'en parler avant de se lancer.
Je pense que l'on ne va pas couper à gérer des compatibilité de version entre les plugins et PWG.


Utilisateur depuis la version 1.3, Impliqué depuis la 1.4, Responsable du template des 1.5 et 1.6  ... et en (in)disponibilité sur la 1.7

Hors ligne

#10 2005-12-07 03:34:06

rvelices
Invité

Re: [Evolution] Plugins

Il y a un certain nombre de choses qui sont importantes dans la gestion des plugins

1. installation/desintallation et configuration par l'utilisateur
C'est un probleme relativement simple qui est gere de la meme maniere dans la plupart de produits:
- l'install va etendre le modele de la base / fichiers de config d'une maniere transparente pour l'utilisateur. C'est au plugin de creer les tables/colonnes/fichiers de s'assurer de la compatibilite avec pwg etc....La desinstallation doit cleaner tout.
- la configuration est accessible par une page php avec un nom standard dans le repertoire du plugin qui est invoque dans le menu admin (par une espece de plugin manager)
- l'activation/desactivation est tres utile (toutes les donnees du plugin sont la, mais aucune utilisation au runtime) - ca permet de tester vite l'integration/nouvelle versions... Etc sans avoir besoin d'une gallerie de test

2. Comment invoquer les plugins?
Coppermine et Wordpress utilisent un systeme semblable:
- au tout debut, chaque plugin enregistre une fonction a appeler a un certain moment (example: add_action('get_category_comment', 'my_get_category_comment') (ceci par inclusion d'un fichier comme plugins/myPlugin/codebase.php)
- le noyau doit invoquer le plugin manager chaque fois qu'une customization est possible (example: au moment ou le noyau a besoin du commentaire, le plugin manager va invoquer toutes les fonctions enregistres pour 'get_category_comment')

Gallery2 est tres complexe (on peut lire la doc la dessus sur le site gallery) car en fait tout est un plugin. Les plugins sont de 2 types: theme (un objet qui gere la presentation et qui contient des templates comme phpwebgallery) et module (qui rajoute une nouvelle fonctionalite). Cette distinction tres claire est necessaire. Absolument tout est oriente objet avec des interfaces ce qui permet un passage de parametres et invocations standard (je pense que cette solution pour pwg necessite beaucoup de travail et complication du code). Quelques infos sur l'archi gallery2: http://gallery.menalto.com/node/36885#comment-134279

3. Interaction des plugin avec le noyau/template
Si on arrive a bien structurer ceci, je pense qu'on a resolu pas mal de problemes.

Il ya 2 types de plugins
a. ceux qui modifient le comportement, mais pas la structure (examples: url rewrite - reecriture de chaque lien, bbcode - parser les commentaire avec bbcode) - je vais pas m'attarder car facilement gerable avec un system a la wordpress

b. rajout de fonctionalites: example news, download zip, print with shutterfly etc...
- la problematique ici est l'interaction entre noyau, plugin et template et ca ce n'est pas facile car de mon point de vue, idealement le plugin ne devrait pas necessiter la modification du noyau ou du template - c'est tout l'interet du plugin.

Dans Coppermine: le noyau invoque le plugin au fur et a mesure et c'est le plugin qui modifie directement le 'html' (example: ajouter une icone pour chaque vignette ou ajouter des news ...). L'avantage - ce n'est pas tres complique; Desavantage: le html rajoute n'est pas toujours compatible avec le template courant. Mais pourquoi pas des templates a l'interieur du plugin ?

#11 2005-12-07 07:23:44

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Evolution] Plugins

chrisaga a écrit:

Merci Vincent .

De rien, ce sujet n'était rien à coté de l'autre. Dure! Dure!

chrisaga a écrit:

Je pense que l'on ne va pas couper à gérer des compatibilité de version entre les plugins et PWG.

Je suis d'accord avec ta conclusion.
Je vois une table toute bête (administrable).

Comme ceci (c'est une idée):

Code:

CREATE TABLE `pwg_plugcomp` (
`PWG_version` TEXT NOT NULL ,
`cmptblty` BINARY DEFAULT 'false' NOT NULL ,
`plugin_name` VARCHAR( 32 ) NOT NULL ,
PRIMARY KEY ( `plugin_name` ) 
)
) TYPE = MYISAM COMMENT = 'PWG Compatibility with plugins';

Upgrade de PWG: On efface tout... En beta test on valide les plugins compatibles (sur le site uniquement) et chaque plugin chargé insère sa référence compatible 1.6/1.7 (deux lignes dans ce cas). La table n'a pas besoin de la version du plugin, le plugin Resizer 0.2 est compatible 1.6 il insère 1.6...    Resizer 0.3 est compatible 1.7 il insère 1.7... la version de PWG sait lesquels elle peut activer.


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#12 2005-12-07 07:30:24

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Evolution] Plugins

rvelices a écrit:

Mais pourquoi pas des templates a l'interieur du plugin ?

S'il te plait, Non. Je ne suis vraiment pas pour. Les templates c'est autre chose.
Si le template Truc n'intègre pas Bidule, bein c'est comme ça.
L'auteur de Truc peut fournir son template.
Sinon ça devient trop compliqué, c'est aux auteurs de template de savoir gérer les infos renvoyées par les templates/ou activant les templates.


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#13 2005-12-07 11:26:52

MBt
Membre
Paris
2005-12-06
45

Re: [Evolution] Plugins

rvelices a écrit:

Desavantage: le html rajoute n'est pas toujours compatible avec le template courant. Mais pourquoi pas des templates a l'interieur du plugin ?

C'est d'ailleurs LE problème des plugins. Les développeurs les crééent souvent pour leur besoin perso et en fonction du template qu'ils utilisent pour leur gallerie avant de les partager. Les utilisateurs qui récupèrent un plugin se rendent souvent compte qu'il faut entrer dans le code php pour modifier l'affichage. Lourd!

Question : faut-il allourdir le développement d'un plugin en imposant un système de template ou faut-il encourager la création de plugin au risque que certains développeurs ne pensent pas à la portabilité??
Mon avis : Favoriser la création.

rvelices a écrit:

b. rajout de fonctionalites: example news, download zip, print with shutterfly etc...
- la problematique ici est l'interaction entre noyau, plugin et template et ca ce n'est pas facile car de mon point de vue, idealement le plugin ne devrait pas necessiter la modification du noyau ou du template - c'est tout l'interet du plugin.

Le plugin ne doit pas modifier le noyau c'est certain. Par contre, à mon avis, le template doit être modifié pour prendre en compte (ou non) un plugin.
Pour ne pas toucher au template, il faudrait alors définir des zones dans les templates dans lesquelles les plugins pourront s'insérer sans que le designer du template n'en connaisse l'existance desdits plugins : {Z_MENU_PLUGIN} qui définit un menu dans lequel les plugins pourront ajouter des entrées pour ouvrir des pages particulières (zipDownload par exemple).
Se qui risque de manquer d'ailleurs c'est une page spécifique (plugin.php?page=mon_plugin) équivalente à picture.php ou category.php qui serait appelée pour afficher une fonctionnalité : formulaire de zipDownload qui invite l'utilisateur à uploader un fichier zip dans une catégorie et affiche les images extraites du zip dans la catégorie. De même /admin/plugin.php?page=mon_plugin permettra de configurer un plugin.

Question : Faut-il laisser le soin au designer du template de contrôler même l'intégration des plugins au risque de devoir modifier les tpl à chaque ajout de plugin ou faut-il faciliter la portabilité des templates en proposant aux plugins de s'y intégrer de manière transparente au risque que le designeur ne contrôle plus son template??
Mon avis : Il ne faut pas laisser les développeurs de plugins devenir maître du template, ce n'est pas leur rôle. Le designer doit garder la main.

Mbt

Hors ligne

#14 2005-12-07 13:54:18

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: [Evolution] Plugins

Sans rentrer dans les détails techniques pour le moment, je suis pour une gestion de plugin qui permettra ainsi de mettre en place des trucs facilement...
Par contre, il faut pousser assez loin l'analyse pour qu'on puisse faire des plugins sans modification du source PWG.

Hors ligne

#15 2005-12-07 16:02:58

rvelices
Invité

Re: [Evolution] Plugins

VDigital a écrit:

rvelices a écrit:

Mais pourquoi pas des templates a l'interieur du plugin ?

S'il te plait, Non. Je ne suis vraiment pas pour. Les templates c'est autre chose.
Si le template Truc n'intègre pas Bidule, bein c'est comme ça.
L'auteur de Truc peut fournir son template.
Sinon ça devient trop compliqué, c'est aux auteurs de template de savoir gérer les infos renvoyées par les templates/ou activant les templates.

Je m'explique: le developpeur des plugins peut decider d'avoir ses templates a lui a l'interieur du repertoire plugin. De cette maniere:
- il a le controle sur ses templates independament des templates du noyau.
- pas de probleme d'integration avec les templates orignales
- pas de probleme de sources a mettre a jour et a patcher
- si quelqu'un n'aime pas - facile a savoir qu'est ce qu'il faut modifier ou encore il desactive le plugin

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact