intégration jquery ui. no galére ?!

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • intégration jquery ui. no galére ?!

    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.
    Code:
    if ( $.ui.version ) {
    	return;
    }
    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.
    jquery.ui.core.js
    jquery.ui.widget.js
    jquery.ui.position.js
    jquery.ui.menu.js
    jquery.ui.autocomplete.js
    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.

    Code:
    JLoader::register('JHtmlJquery', JPATH_COMPONENT.'/html/jquery.php');
    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.

    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'falsetruefalsefalse$debug);

            
    // Check if we are loading in noConflict
            
    if ($noConflict)
            {
                
    JHtml::_('script''jui/jquery-noconflict.js'falsetruefalsefalsefalse);
            }

            
    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'falsefalsefalsefalsenull);

            
    // code pour info, car plus utilisé
            
    foreach ($components as $component)
                
    self::$loaded[__METHOD__][$component] = true;
                    
            return;
        }
    }
    Le changement est dans
    public static function ui
    , 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
    Dernière édition par electrocity à 08/07/2013, 15h55
    http://www.st42.fr : Astuce et téléchargement d’extension Joomla! et virtuemart
    http://shop.st42.fr Catalogue extentions gratuit et Pro pour Virtuemart et Joomla

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X