(1) $num=$picture['current']['id'];
(2) $url='plugins/PersonalPlugin/index.php?idimg='.$num;
(3) $js='"#" onClick="window.open($url)" width="50" height="50" border="0" return false';
(4) $template->assign( 'U_METADATA', $js);
(1) Ok
(2) pourquoi pas => admettons...
(3) comment $url peut être résolu?
$js='"#" onClick="window.open(\'' . $url . '\')" width="50" height="50" border="0" return false';
(4) Ok
(2) est-ce que tu ne veux pas faire plus sûr?
$url = get_root_url() . 'plugins/PersonalPlugin/index.php?idimg='.$num;
Pas certain que cela fonctionne, je ne connais pas PersonalPlugin/index.php
Et je ne sais pas dire si idimg est "sanitized".
Mais déjà cela me semble plus logique.
;-)
Hors ligne
Bonjour,
j'ai appliqué tes remarques pour le 2 et le 3. J'obtiens bien la page ''PersonalPlugin/index.php", mais ne prend pas en compte les valeurs : width="50" height="50" border="0".
Pour t'éclairer : ''PersonalPlugin/index.php" interroge simplement la table ""phpwebgallery_image" avec comme filtre le n° d'identification de l'image. Et j'affiche certains champs rajoutés.
Merci de ton aide.
Hors ligne
Peut-être que si tu en disais un peu plus...
Code (3):
$js='"#" onClick="window.open(\'' . $url . '\',\'directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50\'); return false"';
Hors ligne
Rien de changé. Voici le lien que j'obtiens : http://localhost/alo/picture.php?/2261/category/15
Je remet le code complet :
<?php
/*
Plugin Name: Plugin Personnel
Version: 1.0
Description: Plugin Personnel
Plugin URI: http://piwigo.org
Author: P. Villain
Author URI: localhost/alo
*/
/* empêche l'accès direct au fichier main.inc.php */
if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
Add_event_handler( 'loc_end_picture','personal_replace_tpl_code');
/* Remplace une partie du code par une autre dans un template */
function personal_replace_tpl_code()
{
global $template, $lang, $num, $picture, $url, $js ;
$num=$picture['current']['id'];
$url = get_root_url() . 'plugins/PersonalPlugin/index.php?idimg='.$num;
$js='"#" onClick="window.open(\'' . $url . '\',\'directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50\'); return false"';
/* Assigner dans 'U_METADATA' la nouvelle valeur */
$template->assign( 'U_METADATA', $js);
/* Changer le titre du bouton de meta-données */
$lang['Show file metadata'] = 'Informations complémentaires';
}
?>
Environnement : Linux Mandrake One 10 + Firefox 3.6.3
Apache+PHP+Mysql sur le poste en local.
Hors ligne
Normal.
Prenons le picture.tpl que contient-il?
<a href="{$U_METADATA}" title="{'Sh.... etc...
or {$U_METADATA} sera remplacé par le contenu de $js ce qui va donner:
1 - $url = get_root_url() . 'plugins/PersonalPlugin/index.php?idimg='.$num;
par exemple => $url = ./plugins/PersonalPlugin/index.php?idimg=421
2 - $js='"#" onClick="window.open(\'' . $url . '\',\'directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50\'); return false"';
par exemple => $js = "#" onClick="window.open('./plugins/PersonalPlugin/index.php?idimg=421','directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50'); return false"
et... au final
3 - ce que ça donnera:
<a href=""#" onClick="window.open('./plugins/PersonalPlugin/index.php?idimg=421','directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50'); return false"" title="{'Sh...
href="" ne risque pas de fonctionner.
Que veux-tu obtenir?
<a href="#" onClick="window.open('./plugins/PersonalPlugin/index.php?idimg=421','directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50'); return false" title="{'Sh...
donc $U_METADATA devra contenir
#" onClick="window.open('./plugins/PersonalPlugin/index.php?idimg=421','directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50'); return false
on échappe les 2 double-apostrophes
#\" onClick=\"window.open('./plugins/PersonalPlugin/index.php?idimg=421','directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50'); return false
on remplace l'adresse par " . $url . "
#\" onClick=\"window.open('" . $url . "','directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50'); return false
Ce qui donnera pour $js
$js ="#\" onClick=\"window.open('"
. $url . "','directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50'); return false";
donc
function personal_replace_tpl_code()
{
global $template, $picture;
$url = get_root_url() . 'plugins/PersonalPlugin/index.php?idimg='.$picture['current']['id'];
$js ="#\" onClick=\"window.open('"
. $url . "','directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50'); return false";
$template->assign( 'U_METADATA', $js);
}
[extension by Piwigo Team] LocalFiles Editor
onglet langues, fr_FR, insère:
$lang['Show file metadata'] = 'Informations complémentaires';
Hors ligne
J'obtiens le lien suivant : http://localhost/alo/picture.php?/2265/category/14#
mais : directories=no,location=no,menubar=no,resizable=no,status=no,width=50,height=50
pas pris en compte ; j'ouvre toujours sur une page normale.
En fait ça devrait donner la même chose que le lien pour les images HD :
javascript:phpWGOpenWindow('./images/aff/pwg_high/aff_A3_71.jpg','1865929234c1be3a606544','scrollbars=yes,toolbar=no,status=no,resizable=yes')
sauf qu'on pointe sur 'plugins/PersonalPlugin/index.php'
Hors ligne
Tu as vu comment coder, si tu veux utiliser phpWGOpenWindow
Tu devrais y arriver seul, non?
Hors ligne
bmsenlis a écrit:
Ok
merci
je clos le sujet.
Le sujet est-il donc résolu ?
Hors ligne
Bonsoir,
bingo !
je viens de trouver la syntaxe correct :
<?php
/*
Plugin Name: Plugin Personnel
Version: 1.0
Description: Plugin Personnel
Plugin URI: http://piwigo.org
Author: P. Villain
Author URI: localhost/alo
*/
/* empêche l'accès direct au fichier main.inc.php */
if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
Add_event_handler( 'loc_end_picture','personal_replace_tpl_code');
/* Remplace une partie du code par une autre dans un template */
function personal_replace_tpl_code()
{
global $template, $picture, $lang;
$url = get_root_url().'plugins/PersonalPlugin/index.php?idimg='.$picture['current']['id'];
$js ="#\" onClick=\"window.open('$url','Popup', 'directories=no,
location=no, menubar=no, resizable=no, status=no, width=480, height=430')";
/* Assigner dans 'U_METADATA' la nouvelle valeur */
$template->assign( 'U_METADATA', $js);
/* Changer le titre du bouton de meta-données */
$lang['Show file metadata'] = 'Informations complémentaires';
}
?>
Merci à ceux qui m'ont aidé.
Dernière modification par bmsenlis (2010-06-30 22:13:21)
Hors ligne
Et merci à toi d'avoir bien commenté ton plugin-perso :-)
Hors ligne
Merci de passer le sujet en résolu ;-)
Pourquoi n'as tu pas rajouter une icônes qui correspond plus à ton besoins et différente de celle existante ?
Hors ligne
Bien que n'utilisant pas les metadonnées, le fondement est le même : lier des infos. supplémentaires à des images.
Alors plutôt que de créer une icône supplémentaire sur des barres d'icônes qui sont parfois déjà bien chargées, j'ai préféré utiliser une icône existante dont l'objet est pratiquement le même.
Et cette fois je clôture le sujet pour de bon.
Hors ligne