Fork me on GitHub

Rapport de message :*
 

Re: aChat 0.23: pas de refresh automatique?

Titre du sujet : Re: aChat 0.23: pas de refresh automatique?
par Niluge sur 30/10/2007 13:57:17

Effectivement on a trouvé un problème de compatibilité avec MultiMenu, et en général, avec tout module qui utilise javascript et windows.onload.

Après avoir regardé un peu le code javascript de MultiMenu, il y a un script start.js appelé dès le début, qui serait très utile s'il était dans xoops.js, et si ce dernier était le 1er javascript chargé de la page.
En effet il permet d'utiliser plusieurs fois windows.onload, en mettant dans un tableau les fonctions à exécuter au chargement de la page, et, au chargement de la page, il parcourt le tableau en exécutant 1 à 1 les fonctions qui devaient l'être.

Bref c'est exactement ce qu'il faudrait, mais géré par le core xoops, et pas par un module.
Et je ne vois pas comment on pourrait faire autrement...

Il faudrait aussi que le xoops.js soit appelé en 1er dans le head html.
Pour les anciennes version de xoops, il fallait utiliser
$xoopsTpl->assign('xoops_module_header'$achat_module_header);

qui met toujours le code avant l'appel de xoops.js...

Et pour les dernières versions de xoops, il faut quelque chose comme ça :
$xoTheme->addScript$aChat_url.'/include/js/XHRConnection.js' );
      
$xoTheme->addScript$aChat_url.'/include/js/aChat_functions.js' );
      
$xoTheme->addStylesheet$aChat_url.'/templates/aChat.css' );

Là ça se met bien après l'appel de xoops.js, quand on est sur la page du module.
Mais quand on exécute ça dans un bloc, l'appel de xoops.js se situe après les autres scripts (mais quand même avant le css...).
Donc logiquement, les blocs sont rendus avant que header.php ( du core xoops) inclue xoops.js.

Bref le problème se situe dans le header.php, ligne 63 :
$xoTheme =& $xoopsThemeFactory->createInstance( array(

        
'contentTemplate' => @$xoopsOption['template_main'],

    ) );

    
$xoopsTpl =& $xoTheme->template;



    
$xoTheme->addScript'/include/xoops.js', array( 'type' => 'text/javascript' ) );

En ayant fait des tests avec des echo, et un compteur, il s'avère que les blocs sont rendus lors de la création de l'objet $xoTheme. Ce qui pose pas mal de problèmes pour réussir à appeler le xoops.js avant de rendre les blocs....

Bref je suis perdu...
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

33 Personne(s) en ligne (28 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 33 | Plus ...