En fait je viens de voir que ça a été intégré à la dernière version
de lightbox.js (2.03.3) la nouvelle methode s'appelle updateImageList
et permet de re-scanner les liens @rel="lightbox" sans réécrire le
code html nécessaire à la box.
Je l'intègre de suite et publie la nouvelle release (1.1.0) du plugin
dans la foulée (attention elle sera en beta car il y a du neuf dans
modalbox.js aussi), dès que c'est fait j'envoie un message ici.
Le 23 mai 07 à 15:40, obalais a écrit :
>
> Bonjour,
> Après un coup d'oeil plus approfondi sur le forum de symfony, j'ai
> effectivement trouvé comment résoudre mon problème.
> En fait il faut faire un rappel de la fonction initLightbox dans le
> template chargé par l'appel ajax.
> Cependant cette solution présentant un gros problème (duplication de
> l'intégralité du code HTML correspondant à l'aperçu à chaque appel
> ajax), j'ai apporté une ou deux petites modifs au code javascript du
> fichier lightbox.js.
>
> Si cela interresse quelqu'un, voici mes modifs :
>
> Ajout de la méthode reinitialize à la classe lightbox :
>
> reinitialize: function() {
> if (!document.getElementsByTagName){ return; }
> var anchors = document.getElementsByTagName('a');
>
> // loop through all anchor tags
> for (var i=0; i<anchors.length; i++){
> var anchor = anchors[i];
>
> var relAttribute = String(anchor.getAttribute('rel'));
>
> // use the string.match() method to catch 'lightbox'
> references in
> the rel attribute
> if (anchor.getAttribute('href') &&
> (relAttribute.toLowerCase().match('lightbox'))){
> anchor.onclick = function ()
> {myLightbox.start(this); return
> false;}
> }
> }
> },
>
> Ajout de la fonction reInitLightBox en bas du fichier lightbox.js :
>
> reinitialize: function() {
> if (!document.getElementsByTagName){ return; }
> var anchors = document.getElementsByTagName('a');
>
> // loop through all anchor tags
> for (var i=0; i<anchors.length; i++){
> var anchor = anchors[i];
>
> var relAttribute = String(anchor.getAttribute('rel'));
>
> // use the string.match() method to catch 'lightbox'
> references in
> the rel attribute
> if (anchor.getAttribute('href') &&
> (relAttribute.toLowerCase().match('lightbox'))){
> anchor.onclick = function ()
> {myLightbox.start(this); return
> false;}
> }
> }
> },
>
> Ainsi le code suivant n'est pas dupliqué :
>
> <div id="overlay"></div>
> <div id="lightbox">
> <div id="outerImageContainer">
> <div id="imageContainer">
> <img id="lightboxImage">
> <div style="" id="hoverNav">
> <a href="#" id="prevLink"></a>
> <a href="#" id="nextLink"></a>
> </div>
> <div id="loading">
> <a href="#" id="loadingLink">
> <img
> src="/images/lightbox/loading.gif">
> </a>
> </div>
> </div>
> </div>
> <div id="imageDataContainer">
> <div id="imageData">
> <div id="imageDetails">
> <span id="caption"></span>
> <span id="numberDisplay"></span>
> </div>
> <div id="bottomNav">
> <a href="#" id="bottomNavClose">
> <img
> src="/images/lightbox/close.gif">
> </a>
> </div>
> </div>
> </div>
> </div>
>
>
> Merci pour l'indication...
>
> Olivier
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "Symfony-fr"
de Google Groupes.
Pour transmettre des messages à ce groupe, envoyez un e-mail à
l'adresse [email protected]
Pour résilier votre abonnement à ce groupe, envoyez un e-mail à
l'adresse [EMAIL PROTECTED]
Pour afficher d'autres options, visitez ce groupe à l'adresse
http://groups.google.com/group/symfony-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---