PDA

Zobacz pełną wersję : Joomla i użycie MooTools we własnych modułach



fromsoft_pl
16-11-2009, 20:26
Przetestowałem problem w J! 1.5.12 i 1.5.15 na Ff3.5 i IE 8. W obydwu wypadkach doprowadziły mnie do jednakowego wniosku. Otóż Mootools nie działa jeżeli skrypt został zadeklarowany zalecaną metodą w HEAD (kod tylko poglądowy!), czyli mniej więcej tak:


<?php
JHTML::_( 'behavior.mootools' );
$ajax = "/* <![CDATA[ */
var Tips3 = new Tips($$('.Tips3'), {
showDelay: 400,
hideDelay: 400,
fixed: true
});
/* ]]> */
";
$doc = & JFactory::getDocument();
$doc->addScriptDeclaration( $ajax );

bądź importując z zewnątrz za pomocą


$doc->addScript([sciezka_do_pliku_js]);

Natomiast zadziała poprawnie jeżeli zrobię coś w rodzaju:

<?php JHTML::_( 'behavior.mootools' ); ?>

<a href="index.php" class=".Tips3" title="tooltip mootools">Strona główna</a>
<?php echo "<script type='text/javascript'>$ajax</script>";?>

Kod jest tylko poglądowy, chodzi mi o podejście. Jeżeli zadeklaruję skrypty dla mootools w HEAD to mi nie działa (metody mootools są ignorowane/błędnie interpretowane przez browser), natomiast jeżeli dam ten sam skrypt wewnątrz html'u to wtedy działa prawidłowo.
Nie dotyczy to 'zwykłego' javascriptu, bo tam zachowanie jest zgodne z oczekiwaniami.

Spędziłem sporo czasu na próbach rozwiązania problemu, ale nie mam pojęcia dlaczego tak się dzieje. Czy komuś udało się rozwiązać podobny problem?

Jola
16-11-2009, 22:08
Witam,
mogę doradzić tylko wzorowanie się na gotowych rozwiązaniach (działających). Zobacz modules/mod_login/tmpl/default.php od linii 25 i zwróć uwagę na sposób przekazania zmiennej $langScript.

fromsoft_pl
17-11-2009, 08:58
No tak, tyle że źródłowe moduły, o ile w ogóle korzystają z mootools (np. widok panelu administratora dla komponentu com_banners) używają przeważnie JHTML::_('behavior.tooltip'); , co w moich komponentach działa bez najmniejszego problemu, a nie ma tam wykorzystania JHTML::_('behavior.mootools'); co akurat w tym przypadku mnie najbardziej interesuje.
W związku z tym, że nie mam pomysłu na "eleganckie"
umieszczenie javascriptu w HEAD, zdecyduję się na brzydsze, ale działające skrypty wplecione w HTML.

Znalazłem również taki ciekawy artykuł w dokumentacji http://docs.joomla.org/Adding_JavaScript_and_CSS_to_the_page. Ale w rozwiązaniu problemu mi nie pomógł.

fromsoft_pl
17-11-2009, 13:46
Zacząłem od początku korzystając z posta na forum joomla

http://forum.joomla.org/viewtopic.php?f=304&t=262330

Realizując cały request/reponse w kontekście Joomli wszystko poszło gładko :)

Jedyne z czym mam problem to animowany spinner. Nie widać go.



/**
* This empties the log and shows the spinning indicator
*/
var log = $('log_res').empty().addClass('ajax-loading');

Użycie $('log_res').empty().setHTML('jakis tekst') działa, natomiast powyższy kod niestety już nie.