Bonjour.
Voulant utilisé rv_Maps dans un style Gally je me trouve confronté au problème dèjà bien connu de la compatibilité des fonctions javascript
Dans le cas evoqué c'est bien sur la fonction element = $(element); qui pose problème, étant déclaré dans jquery.js et dans protoype.js de rvelices
Existe il une solution simple pour contourner ce problème?
A+
Hors ligne
repie38 a écrit:
pour info : http://fr.piwigo.org/forum/viewtopic.ph … 70#p125070
jQuery dispose d'un mode anti incompatibilité efficace lorsque on a sur le meme site plusieurs framework js.
(a mettre en place en dernier, c'est assez simple)
Ensuite il faut écrire jquery(... au lieu de $(....
noConflict
Hors ligne
Oui je vois bien ce que je peux faire mais dans ce cas il faut que je modifie le programme de prototype.js de rv_maps ?
Hors ligne
Je n'ai pas regardé en détail mais qui fait du jQuery?
prototype.js de rv_maps
ou Gally?
Hors ligne
Gally utilise
{known_script id="jquery" src=$ROOT_URL|cat:"template-common/lib/jquery.packed.js"}
rv_maps utilise protype.js
les deux sript utilise $();
Exemple dans rv_maps on utilise la fonction suivante:
function observe(element, eventName, handler) {
element = $(element);
pour que la fonction fonctionne avec jquery.packed.js il faut que j'ecrive :
element = $(element)[0];
La structure retournée jquery.packed.js et protype.js
étant différente.
Mon proplème est comment faire pour assurer la compatibilité entre les deux script sans avoir à modifier les fichiers tpl de gally ni de rv_maps.
Existe il une solution? ou est ce la quadrature du cercle?
Hors ligne
On ne va pas réécrire ni l'un ni l'autre.
Dans rv_maps on laisse l'appel en $(
Maintenant, toi tu as besoin en jQuery de coder:
element = $(element)[0];
mais comme le script est commun...
element = jquery(element)[0];
Pour comprendre: http://docs.jquery.com/Using_jQuery_wit … _Libraries
Pour cela, l'inclusion de jquery doit être modifiée...
{known_script id="jquery" src=$ROOT_URL|@cat:"template-common/lib/jquery.packed.js"}
{html_head}
{literal}
<script type="text/javascript">
jQuery.noConflict();
</script>
{known_script id="jquery.ui" src=$ROOT_URL|@cat:"template-common/lib/ui/ui.core.packed.js"}
{/literal}
{/html_head}
{known_script id="gally" src=$ROOT_URL|@cat:".........."}
Je n'ai pas testé mais cela doit fonctionner.
Ajout de {html_head}
Dernière modification par VDigital (2009-12-22 11:52:58)
Hors ligne
Merci.
Le problème c'est ou je met ce bout de code?
Si je le met dans le fichier picture_map_content.tpl c'est ok.
mais cela me force à modifier les fichers de rv_maps.
D'ou ma question existe t il un template par défaut systématiquement chargé s'il est présent?
Hors ligne
Par exemple:
add_event_handler('loc_after_page_header', 'cljosse_handler');
function cljosse_handler() {
global $template;
$template->set_filenames(array('cljosse' => '......../..../cljosse.tpl'));
$template->parse('cljosse');
}
Tu deviens indépendant de l'existant (dont des template-extensions) et tu génères bien tout ce que tu veux générer en plus dans les pages.
Hors ligne
Merci encore pour tes réponses et le temps passé.
Je commence a y voir un peu plus clair.
:-)
Hors ligne
Le problème a déjà été référencé pour Gally [Bugtracker] ticket 1307.
C'est juste que, pour l'instant, me suis pas encore décidé à résoudre le problème. Pour ma part, je considère que faire cohabiter plusieurs framework ensemble çà n'est pas forcément une bonne idée... je reconnais par contre que çà peut être néanmoins pratique, certaines fonctionnalités n'étant servies qu'au travers de frameworks autres que jQuery...
Hors ligne