Vu que ma langue natal n'est pas l'anglais, je vais développer ici car le sujet et pas aussi simple que cela.
Je vais essayer d'être simple quoi que le sujet reste compliqué et que malgrés que les développeur de joomla ce sont mis d'accord cela pose un soucis.
Pour ceux qui développe sous joomla 3 et qui veulent utiliser jquery.ui cela va pas sans soucis.
joomla intégre une version "custom" du core, donc 2 solution s'offre à vous, et déja là c'est pas génial car il y a déja 2 solutions au minimum. Plus la mienne.
J'ai dis que je reste simple, non?
Bref j'ai essayé les 3 (enfin par déduction) :
Recompiler ma version custom depuis le site jquery.ui
Le problème est que la version généré n'est pas utilisable, de plus il faut vérifié les dépendance. Hum, vous ne les connaissait pas ? alors il faut prendre tous sauf ceux du core intégré dans Joomla 3. Oui mais les quels. voir le code source dans media/jui .....
De plus une instruction bloquera l'utilisation.
enfin bref une bonne galére ...
charge les bibliotéques a la demande
Vous pouvez récupérer tous les widget du core séparement(genre version de développement). Mais il faut charger chaque widget ou dépendance et dans le bonne ordre !
example pour jquery.ui.autocomplet.
bon en vrai il faut ajouter .menu et .autocomplet car joomla intégre le reste.
Mais admettons qu'un autre module/composant/plugin utilise ces dépendances, il va aussi les charger en éspérant qu'il a la même logique! Sinon cela risque d'être pire.
Overide de la class jquery.php dans le composant
Malgrés que cela ne résout pas tous les problèmes dans mon cas oui.
Hum, a quoi ça sert ?
En ajoutant cela dans votre composant(le plus tôt possible) avant que joomla l'appel, la class sera déja déclaré et joomla vas charger cette classe à la place de la class du core de joomla. C'est un peut le même principe que le template overide.
Voici le contenu.
Le changement est dans
, au final on charge jquery.ui complet( pourquoi pas le css adéquat, au cas ou celui de joomla ne convient pas), et on peut enfin travailler avec jqeury.ui avec tous les widgets
Bonne galère a tous
Je vais essayer d'être simple quoi que le sujet reste compliqué et que malgrés que les développeur de joomla ce sont mis d'accord cela pose un soucis.
Pour ceux qui développe sous joomla 3 et qui veulent utiliser jquery.ui cela va pas sans soucis.
joomla intégre une version "custom" du core, donc 2 solution s'offre à vous, et déja là c'est pas génial car il y a déja 2 solutions au minimum. Plus la mienne.
J'ai dis que je reste simple, non?
Bref j'ai essayé les 3 (enfin par déduction) :
Recompiler ma version custom depuis le site jquery.ui
Le problème est que la version généré n'est pas utilisable, de plus il faut vérifié les dépendance. Hum, vous ne les connaissait pas ? alors il faut prendre tous sauf ceux du core intégré dans Joomla 3. Oui mais les quels. voir le code source dans media/jui .....
De plus une instruction bloquera l'utilisation.
Code:
if ( $.ui.version ) { return; }
charge les bibliotéques a la demande
Vous pouvez récupérer tous les widget du core séparement(genre version de développement). Mais il faut charger chaque widget ou dépendance et dans le bonne ordre !
example pour jquery.ui.autocomplet.
jquery.ui.core.js
jquery.ui.widget.js
jquery.ui.position.js
jquery.ui.menu.js
jquery.ui.autocomplete.js
jquery.ui.widget.js
jquery.ui.position.js
jquery.ui.menu.js
jquery.ui.autocomplete.js
Mais admettons qu'un autre module/composant/plugin utilise ces dépendances, il va aussi les charger en éspérant qu'il a la même logique! Sinon cela risque d'être pire.
Overide de la class jquery.php dans le composant
Malgrés que cela ne résout pas tous les problèmes dans mon cas oui.
Code:
JLoader::register('JHtmlJquery', JPATH_COMPONENT.'/html/jquery.php');
En ajoutant cela dans votre composant(le plus tôt possible) avant que joomla l'appel, la class sera déja déclaré et joomla vas charger cette classe à la place de la class du core de joomla. C'est un peut le même principe que le template overide.
Voici le contenu.
Code PHP:
<?php
/**
* @package Joomla.Libraries
* @subpackage HTML
*
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die;
/**
* Utility class for jQuery JavaScript behaviors
*
* @package Joomla.Libraries
* @subpackage HTML
* @since 3.0
*/
abstract class JHtmlJquery
{
/**
* @var array Array containing information for loaded files
* @since 3.0
*/
protected static $loaded = array();
/**
* Method to load the jQuery JavaScript framework into the document head
*
* If debugging mode is on an uncompressed version of jQuery is included for easier debugging.
*
* @param boolean $noConflict True to load jQuery in noConflict mode [optional]
* @param mixed $debug Is debugging mode on? [optional]
*
* @return void
*
* @since 3.0
*/
public static function framework($noConflict = true, $debug = null)
{
// Only load once
if (!empty(self::$loaded[__METHOD__]))
{
return;
}
// If no debugging value is set, use the configuration setting
if ($debug === null)
{
$config = JFactory::getConfig();
$debug = (boolean) $config->get('debug');
}
JHtml::_('script', 'jui/jquery.min.js', false, true, false, false, $debug);
// Check if we are loading in noConflict
if ($noConflict)
{
JHtml::_('script', 'jui/jquery-noconflict.js', false, true, false, false, false);
}
self::$loaded[__METHOD__] = true;
return;
}
/**
* Method to load the jQuery UI JavaScript framework into the document head
*
* If debugging mode is on an uncompressed version of jQuery UI is included for easier debugging.
*
* @param array $components The jQuery UI components to load [optional]
* @param mixed $debug Is debugging mode on? [optional]
*
* @return void
*
* @since 3.0
*/
public static function ui(array $components = array('core'), $debug = null)
{
// Set an array containing the supported jQuery UI components handled by this method
// ICI aucune vérification car on à télécharge la version complête de jquery.ui
//$supported = array('core', 'sortable');
// Include jQuery
self::framework();
// ici on charge jquery-ui.min en version full
JHtml::_('script', 'components/MONCOMPOSANT/assets/js/jquery-ui.min.js', false, false, false, false, null);
// code pour info, car plus utilisé
foreach ($components as $component)
self::$loaded[__METHOD__][$component] = true;
return;
}
}
public static function ui
Bonne galère a tous