Annonce

  •  » Plugins
  •  » [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

#16 2011-01-23 21:33:03

arno
Membre
2011-01-14
64

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

@Luc : ooookkkkk, c'est vachement plus clair !
Serieusement, merci pour l'explication, je comprend un peu mieux l'interaction entre smarty et php
par contre, ca ne m'aide pas beaucoup pour l'instant :

Je ne comprend toujours pas comment je peux récuperer l'url de l'image dans mon plugin :(
(alors que c'etait si simple de bidouiller les templates !)

ddtddt : yep, ca marche en effet pour récuperer la variable du template, mais c'est trop tard pour la setter puisque j'arrive apres la definition de <img (si j'ai bien tout compris , ce qui est loin d 'etre certain!)

Je me suis donc dis :
bon, ok reprenons tout depuis le départ.

Quand trigger_action('loc_begin_picture'); est appelé, en fait si je suis bien le déroulé de picture.php, le template n'est pas encore défini.
Qu'a cela ne tienne, modifions la valeur d'origine avant de la saisir dans le template !
Sauf que je n'ai pas acces à $element_info, je n'arrive pas à voir ou il est défini.

Ha, et log_begin_picture ne me permet pas de l'avoir en parametre.

Bon, qu'a cela ne tienne, hookons  la fonction default_picture_content !
et là, ho miracle,  j'arrive à recuperer correctement $element_info et a manipuler l'url.

Sauf que le parametre est passé par valeur, pas par référence .. donc impossible de le modifier :(

Alors certes je pourrais surcharger $content, mais c'est quand meme un peu un marteau-pilon pour ecraser une mouche que de modifier tout $content alors que je souhaite juste modifier $element_info['image_url'] ...

bon, décidément, ce n'est pas faute de chercher, mais je sèche, si quelqu'un veut bien m'aiguiller ca sera avec plaisir, sinon je fournis mes templates et je laisse quelqu'un avec plus de compétences php que moi le réaliser ..

Merci !

- Arno

Hors ligne

#17 2011-01-23 21:48:05

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

arno a écrit:

@Luc : ooookkkkk, c'est vachement plus clair !
Serieusement, merci pour l'explication, je comprend un peu mieux l'interaction entre smarty et php

Cool, merci :-) .

arno a écrit:

par contre, ca ne m'aide pas beaucoup pour l'instant

Mince, pasdbol :-(

Mais le sage a dit de pas filer des cannes à pêche, mais des explications pour s'en fabriquer une ^^

Non sérieusement je n'ai vraiment pas la possibilité de rentrer plus profondément dans ton plugin, je suis vraiment désolé :-/ . Mais peut-être n'est-ce pas le cas de tout le monde ? Éventuellement, essaye de poster ici certains contenus de tes fichiers pour te les faire corriger ?

Bon courage ; bonne chance !

Hors ligne

#18 2011-01-23 22:01:43

Gotcha
Ex Equipe Piwigo
Pierrelatte (26)
2007-03-14
13331

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

arno a écrit:

Je ne comprend toujours pas comment je peux récuperer l'url de l'image dans mon plugin :(
(alors que c'etait si simple de bidouiller les templates !)

Regarde du coté de [extension by Gotcha] PiwiShack

Ne pose pas de question par contre dessus puisque j'ai fait un bricolage monstre en récupérant du code à droite et à gauche -_-;
Pour te dire, les triggers je sais pas où ça se trouve !
;-)


Ayez comme premier réflexe de consulter le wiki.
Ensuite, veuillez effectuer une recherche sur le forum avant de poser votre question.

LE FAIRE EST LE REVELATEUR DE L'ETRE

Hors ligne

#19 2011-01-23 22:08:25

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

Gotcha a écrit:

arno a écrit:

Je ne comprend toujours pas comment je peux récuperer l'url de l'image dans mon plugin :(
(alors que c'etait si simple de bidouiller les templates !)

Regarde du coté de [extension by Gotcha] PiwiShack

Ah oui tiens bonne idée j'aurais dû y penser.

Hors ligne

#20 2011-01-23 23:46:58

arno
Membre
2011-01-14
64

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

@Gotcha : wow, En effet, faut 2 cachets d'aspirine pour plonger dedans :P

Par contre, c'est de la triche, tout est récupéré en base !
Alors que moi j'ai l'url  sous la main, dans picture.php ..
snif

A part tout recopier le content dans le trigger render_element_content , je vois vraiment pas ..
(c'est quand meme dommage ..)

Merci quand meme pour vos tuyaux !

@Luc : rien a partager comme code pour l'instant ..... Je n'en suis meme pas là
Je ne sais meme pas par quel bout prendre le probleme.
Le but est tout simple, modifier l'url de l'image dans un plugin.
Pour ça, avec tes explications, j'essaye pour l'instant d'implanter les appels aux triggers qu'il faut (loc_begin_picture ou loc_end_picture ou render_element_content ) et d'essayer de modifier l'url de l'image qui se trouve dans
$element_info['image_url']

J'arrive à la lire correctement dans loc_end_picture via le template :$template->get_template_vars('SRC_IMG')

, ou dans les parametres de render_element_content  : $element_info['image_url']
Mais pas a la setter avant qu'elle soit utilisée .

Il n'y a personne qui sache comment au fait ?

- Arno

Hors ligne

#21 2011-01-24 00:04:23

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

arno a écrit:

@Gotcha : wow, En effet, faut 2 cachets d'aspirine pour plonger dedans :P

Par contre, c'est de la triche, tout est récupéré en base !

Ah non, quand ça fonctionne, on ne dit pas que c'est de la triche, mais que c'est intelligent !!

^^

arno a écrit:

Le but est tout simple, modifier l'url de l'image dans un plugin.
Pour ça, avec tes explications, j'essaye pour l'instant d'implanter les appels aux triggers qu'il faut (loc_begin_picture ou loc_end_picture ou render_element_content ) et d'essayer de modifier l'url de l'image qui se trouve dans
$element_info['image_url']

J'arrive à la lire correctement dans loc_end_picture via le template :$template->get_template_vars('SRC_IMG')

, ou dans les parametres de render_element_content  : $element_info['image_url']
Mais pas a la setter avant qu'elle soit utilisée .

Si je comprends bien, $element_info['image_url'] permet de fixer sa valeur à SRC_IMG entre loc_begin_picture et loc_end_picture ? Si c'est cela, est-ce que tu ne peux pas construire l'URL qui t'intéresse en utilisant $element_info['image_url'] sur le trigger loc_end_picture , puis modifier la valeur de SRC_IMG en la surchargeant, donc en définissant à nouveau $template->assign('SRC_IMG', <nouvelle valeur>); ?

Hors ligne

#22 2011-01-24 00:15:35

Gotcha
Ex Equipe Piwigo
Pierrelatte (26)
2007-03-14
13331

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

LucMorizur a écrit:

arno a écrit:

@Gotcha : wow, En effet, faut 2 cachets d'aspirine pour plonger dedans :P

Par contre, c'est de la triche, tout est récupéré en base !

Ah non, quand ça fonctionne, on ne dit pas que c'est de la triche, mais que c'est intelligent !!

^^

:-D


Ayez comme premier réflexe de consulter le wiki.
Ensuite, veuillez effectuer une recherche sur le forum avant de poser votre question.

LE FAIRE EST LE REVELATEUR DE L'ETRE

Hors ligne

#23 2011-01-24 15:01:01

cljosse
Former Piwigo Team
2006-11-12
1167

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

ddtddt a écrit:

as tu essayé avec
add_event_handler('loc_end_picture','dynamic_resize_picture_content');

Un petit rappel sur l'ordre d'apparition des triggers dans la page "picture":
et validité de la variable $SRC_IMG

loc_end_section_init 
loc_begin_picture
render_element_content   -->.$template->get_template_vars('SRC_IMG')
loc_begin_page_header    -->.$template->get_template_vars('SRC_IMG')
loc_end_page_header       -->.$template->get_template_vars('SRC_IMG')
loc_end_picture                -->.$template->get_template_vars('SRC_IMG')

-------------   Affichage de l'image  -----------------

loc_begin_page_tail  -->.$template->get_template_vars('SRC_IMG')
loc_end_page_tail -->.$template->get_template_vars('SRC_IMG')




tu peux assayer:
add_event_handler('render_element_content','dynamic_resize_picture_content',  EVENT_HANDLER_PRIORITY_NEUTRAL ,  2);   
function dynamic_resize_picture_content($content, $element_info)
{

 
return $content;
}
Les deux arguments contiennent:
$element_info ->  toutes les informations concernant l' element a afficher.
$content  -> le template à afficher

Note:
  Pour voir les triggers tu peux utilser le plugin "event tracer"
A+

Hors ligne

#24 2011-01-24 16:31:26

arno
Membre
2011-01-14
64

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

@cljosse, merci pour les précisions, ca devient presque clair tout ça ;)
ca vaudrait presque un petit post sur le wiki, ca !

Malheureusement, meme avec tes explications, je n'arrive toujours pas à faire ce que je veux :(

J'ai essayé:
1)
add_event_handler('render_element_content','dynamic_resize_picture_content',EVENT_HANDLER_PRIORITY_NEUTRAL ,2);

// this is the custom  handler that generates the display for the element
function dynamic_resize_picture_content($content, $element_info){
global $template;
$srcimg = $template->get_template_vars('SRC_IMG');
$srcimg = '/plugins/dynamicResize/resize.php?picture_url='.$srcimg;
echo 'var SRC_IMG interecepted from template:'.$srcimg.'<br/>';
$template->assign('SRC_IMG', $srcimg);

mais la variable SRC_IMG n'est pas récupérée , $srcimg est vide
Ce que je ne comprend pas bien, vu que tu me confirmes que SRC_IMG est censé etre accessible à ce moment.

2)
add_event_handler('render_element_content','dynamic_resize_picture_content',EVENT_HANDLER_PRIORITY_NEUTRAL ,2);

// this is the custom  handler that generates the display for the element
function dynamic_resize_picture_content($content, $element_info){
global $template;
$srcimg=$element_info['image_url'];
echo 'var SRC_IMG interecepted from template:'.$srcimg.'<br/>';
$srcimg = '/plugins/dynamicResize/resize.php?picture_url='.$srcimg;
$element_info['image_url']=$srcimg

là je recupere bien la valeur, mais la réaffection ne marche pas.
Ce que j'interprete comme etant normal, puisque $element_info est passé par valeur et pas par référence.

3)
Dans le doute,j'essaie ça aussi : add_event_handler('render_element_content','dynamic_resize_picture_content',EVENT_HANDLER_PRIORITY_NEUTRAL ,2);

// this is the custom  handler that generates the display for the element
function dynamic_resize_picture_content($content, $element_info){
global $template;
$srcimg=$element_info['image_url'];
echo 'var SRC_IMG interecepted from template:'.$srcimg.'<br/>';
$srcimg = '/plugins/dynamicResize/resize.php?picture_url='.$srcimg;
$template->assign('SRC_IMG', $srcimg);

Mais ca ne marche pas, là je ne sais pas pourquoi.

4)
Je n'ai pas essayé, mais je suis quasiment sur que ta solution marcherait :
function dynamic_resize_picture_content($content, $element_info){
et reconstruction de tout le content
return $content;

Mais un peu 'overkill', puisque il faudrait faire evoluer le content a chaque evolution de piwigo , ca ne me plait pas beaucoup
Il doit y avoir quand meme un moyen de modifier simplement juste l'url avec un plugin, bachibouzouk !
Non ?
cljosse : cela dit, ta méthode est sans doute le seul moyen possible pour y inclure ce dont on a parlé sur le topic autosize.
Mais rien que pour la compréhension du systeme, j'aurai bien aimé savoir comment modifier l'url sans redefinir tout le content ..

A+
- Arno

Hors ligne

#25 2011-01-24 17:11:58

Gotcha
Ex Equipe Piwigo
Pierrelatte (26)
2007-03-14
13331

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

arno a écrit:

ca vaudrait presque un petit post sur le wiki, ca !

Ha oui oui oui.

N'hésitez pas à documenter le wiki !!!

:-D


Ayez comme premier réflexe de consulter le wiki.
Ensuite, veuillez effectuer une recherche sur le forum avant de poser votre question.

LE FAIRE EST LE REVELATEUR DE L'ETRE

Hors ligne

#26 2011-01-24 17:15:28

cljosse
Former Piwigo Team
2006-11-12
1167

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

J'ai oublié de préciser la fonction de 'EVENT_HANDLER_PRIORITY_NEUTRAL'
  c'est une valeur numérique qui doit etre fixé 40 si mes souvenirs sont bons, qui fixe l'ordre de d'utilisation des triggers
si tu écris
EVENT_HANDLER_PRIORITY_NEUTRAL+30 ta fonction sera activée après les fonctions du niveau  EVENT_HANDLER_PRIORITY_NEUTRAL

EVENT_HANDLER_PRIORITY_NEUTRAL - 30 ta fonction sera activée avant les fonctions du niveau  EVENT_HANDLER_PRIORITY_NEUTRAL

Donc dans l'exemple que je t'ai donné précédemment ta fonction doit être appelée avant que SRC_IMG soit fixée en mettant une valeur supérieure(+20) tu devrais récupèrer SRC_IMG

Hors ligne

#27 2011-01-24 17:27:21

cljosse
Former Piwigo Team
2006-11-12
1167

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

Suite...

Ensuite

function dynamic_resize_picture_content($content, $element_info){

global $template ;

$srcimg = $template->get_template_vars('SRC_IMG');
$srcimg = '/plugins/dynamicResize/resize.php?picture_url='.$srcimg;

$template->assign('SRC_IMG', $srcimg);

$template->assign( array('default_content'=> $content) );
return $template->parse( 'default_content', true);
}


J'ai pas testé mais cela devrait être bon ou pas très loin de la vérité.




A+

Hors ligne

#28 2011-01-24 22:45:32

arno
Membre
2011-01-14
64

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

Ok, ca marche !!!!

Un grand merci cljosse

Je t'avoue platement que je n'ai pas encore tout compris , et il me restera plein de questions existentielles,

( a quoi servent par exemple les 2 fonctions
$template->assign( array('default_content'=> $content) );
return $template->parse( 'default_content', true);
?
Pourquoi est ce que si on les omet picture.php ne va pas utiliser tout seul son content par défaut, avec la variable qu'on a assigné dans le template ?
pourquoi la 1ere ligne, si je l'enleve, ca fonctionne quand meme ?
pourquoi la vie est apparue sur terre ?
)

mais le principal est que ca fonctionne

Quelques questions en + :
- je testerai bien ta méthode de chargement asynchrone, voire ce que ca donnerait au niveau performances.
Est ce que l'evenement dont tu parles

Code:

jQuery("#ret_autosize").live('ON', function (e) {
  h = img_h; Hauteur de l'image
  w = img_w; Largeur de l'image
  i = src_img; Adresse de l'image
}

est déja accessible , ou est-ce que c'etait une proposition pour une future version ?

- pour ajouter un js, j'ai vu la méthode $template->append('head_elements'
mais comment faire pour que l'appel soit fait *apres* le chargement de jquery ?

- voilà, on va s'arreter là pour aujourd'hui

Merci, a+

- Arno

Hors ligne

#29 2011-01-24 22:54:19

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

arno a écrit:

Ok, ca marche !!!!

Un grand merci cljosse

+1 ^^

arno a écrit:

Je t'avoue platement que je n'ai pas encore tout compris , et il me restera plein de questions existentielles,

( (...)
pourquoi la vie est apparue sur terre ?
)

Parce que le Verbe était,
Et le Verbe était Mot
Et le Mot était Double Octet
Et l'Octet était Bit
Et Dieu vit que cela était bon
Il y eut un Soir,
Il y eut un Matin,
C'était le Premier Jour !

Hors ligne

#30 2011-01-25 12:50:12

cljosse
Former Piwigo Team
2006-11-12
1167

Re: [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

arno a écrit:

Ok, ca marche !!!!
Un grand merci cljosse
Je t'avoue platement que je n'ai pas encore tout compris , et il me restera plein de questions existentielles,
( a quoi servent par exemple les 2 fonctions
$template->assign( array('default_content'=> $content) );
return $template->parse( 'default_content', true);
?
Pourquoi est ce que si on les omet picture.php ne va pas utiliser tout seul son content par défaut, avec la variable qu'on a assigné dans le template ?

D'après mes déductions:
  C'est la valeur retounée par la fonction qui est prise en compte.
     - parse : Charge et compile 'default_content'.
        - si l'option est true la fonction retourne le résutat, sinon l'ajoute a 'output'.

arno a écrit:

pourquoi la 1ere ligne, si je l'enleve, ca fonctionne quand meme ?
pourquoi la vie est apparue sur terre ?
)

A) $content a été initialisé avec "picture_content.tpl" dans picture.php
Et effectivement dans mon exemple il est inutile de le réaffecté.

B) je pense que luc est assez explicite.

arno a écrit:

mais le principal est que ca fonctionne

Quelques questions en + :
- je testerai bien ta méthode de chargement asynchrone, voire ce que ca donnerait au niveau performances.
Est ce que l'evenement dont tu parles

Code:

jQuery("#ret_autosize").live('ON', function (e) {
  h = img_h; Hauteur de l'image
  w = img_w; Largeur de l'image
  i = src_img; Adresse de l'image
}

est déja accessible , ou est-ce que c'etait une proposition pour une future version ?
    avec subversion(SVN)
http://piwigo.org/svn/extensions/Autosize

arno a écrit:

- pour ajouter un js, j'ai vu la méthode $template->append('head_elements'
mais comment faire pour que l'appel soit fait *apres* le chargement de jquery ?
- voilà, on va s'arreter là pour aujourd'hui
Merci, a+
- Arno

Je ne pense pas que pour ce cas se soit une bonne méthode que de charger en brut les scipts,
il vaut mieux utiliser les bonbons "smarty" en créant  un fichier tpl, pour eviter de surcharger les scripts.
exemple :

Code:

{html_head}
     {known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js" now=1} 
     {known_script id="trucmuche" src=$MYPATH|@cat:"trucmuche.js"  } 
{/html_head}

$ROOT_URL étant une variable contenant le chemin relatif de piwigo.
A définir si elle n'est pas présente.

$MYPATH  étant une variable contenant le chemin relatif de du répertoire contenant le fichier script.

J'espère que mes explications sont limpides(ce que je doute, ce n'est pas mon fort) et ne soulevent pas trop de question supplémentaires.

A+

Hors ligne

  •  » Plugins
  •  » [DynamicSize] Nouveau plugin, besoin d'un coup de main ..!

Pied de page des forums

Propulsé par FluxBB

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