Table des matieres (X)

Chut, ca charge ...

Sortie de Mootools 1.0 ! Quoi de neuf ?


Mootools 1.0

Enfin la sortie de la nouvelle mouture de Mootools ! Pour cette occasion le site de Mootools fait fait peau neuve et la documentation aussi d'ailleurs )

Alors quelles sont les nouveautées au programme ? Pour le savoir, clique sur lire la suite ;)

Pour ceux qui debarquent et ne connaissent pas encore Mootools, je vous conseille la lecture de ces billets, en particulier celui-ci.

De nouvelles classes ont fait leur apparition comme Utility.js, Event.js, Common.js, Hash.js ainsi que d'autres que je vais aborder brievement dans la suite. (pour certains des exemples qui suivent je me suis inspiré de cet article en anglais trÚs bien fait)

Exemple commun

On commence par déclarer une variable que je réutiliserais tout au long de la presentation des nouvelles fonctionnalités de Mootools 1.0 .

JavaScript:
  1. //on declare un tableau avec des donnees
  2. var monTableau = {
  3. bombasses: ['Jennifer', 'Lorie', 'Lolita'],
  4. beauxgosses: ['George', 'Sim', 'Carlos'],
  5. };
  6. //on affecte le tableau a notre variable donnees, cette variable sera reutilisé dans d'
  7. var TAB = monTableau ;

Classe Utility

C'est pas vraiment une "vraie" classe, elle regroupe plutot quelques petites fonctions utiles comme $pick,$type, $random , window.xxx , plus d'infos ici.

JavaScript:
  1. //Nouveau window.xxx
  2. //window.ie mis a vrai si le navigateur est n'importe quel Internet Explorer
  3. //window.ie6    mis a vrai si le navigateur est Internet Explorer 6
  4. //window.gecko mis a vrai si le navigateur est Mozilla / Gecko
  5. //...
  6. if(window.ie6){ //si on est sur IE6
  7. //$pick: retourne le premier argument s'il est definit, sinon le deuxieme
  8. var personne = $pick(TAB.caexistepas, TAB.beauxgosses); // Comme TAB.caexistepas n'est pas definie, personne == TAB.beauxgosses
  9. //$type: Retourne le type de la variable
  10. var typePersonne = $type(personne); //on obtient  array (tableau)
  11. var personneAuHasard = TAB.bombasses[$random(0,2)]; //  Choisis une bombasse parmis les 3 au hasard
  12. }

Classe Event

Cette classe pemet de gérer les evenements et c'est vraiment pas mal comme on peut le voir dans l'exemple suivant.

JavaScript:
  1. //capture l evenement on keydown du champ textarea monTextArea
  2. $('monTextArea').onkeydown = function(e){
  3. var evt = new Event(e);
  4. alert(evt.target); // => affiche la cible, donc monTextArea
  5.  
  6. //si on appuie sur echap
  7. if(evt.key == 'esc') {
  8. //on ferme la fenetre par ex
  9. }else if(evt.control && evt.alt && evt.key == 'delete'){
  10. //si on appuie sur ctrl+al+supp , on affiche un gestionnaire de tache par ex
  11. }
  12. };
  13.  
  14. //fonction bindWithEvent , permet d'affecter un evenement a une fonction
  15. function maFonction(event){
  16. alert(event.clientx) //retourne la coordonnees X de la souris
  17. };
  18. monElement.onclick = maFonction.bindWithEvent(monElement);

Classe Hash

Permet de faire un Hash (j'ai pas trouvé de traduction dont je sois sur, alors j'laisse ce nom de drogue ;) ) d'un objet (permet une manipulation plus simple)

JavaScript:
  1. //on creer un Hash de notre objet qu'on avait creer precedemment
  2. var dataHash = new Hash(TAB); //faire $H(TAB) revient au meme
  3. //s'il la cle bombasses existe
  4. if(dataHash.hasKey('bombasses')){
  5. //on recupere les donnees
  6. var bombasses = dataHash.get('bombasses'); // on recupere  ['Jennifer', 'Lorie', 'Lolita']
  7. }
  8.  
  9. //on recupere les cles du Hash
  10. var hashKeys = dataHash.keys(); // => ['bombasses', 'beauxgosses']
  11. //on vide notre hash (pas de jeu de mot malvenu svp)
  12. //on parcourt les cles
  13. for(var key in hashKeys){
  14. key = hashKeys[key];
  15. //mootools etends la classe Array donc il faut
  16. //passer les fonctions
  17. if($type(key) == 'function') break;
  18. dataHash.remove(key);
  19. }
  20. //on verifie que le hash est vide
  21. dataHash.empty();// renvoit vraie
  22.  
  23. //exemple de la doc , pas besoin de traduire je pense
  24. var hash = new Hash({a: 'hi', b: 'world', c: 'howdy'});
  25. hash.remove('b'); // b is removed.
  26. hash.set('c', 'hello');
  27. hash.get('c'); // returns 'hello'
  28. hash.length // returns 2 (a and b)

Classe Color

La classe Color permet tout un tas de fonctions spécifiques à la couleur :

JavaScript:
  1. var noir= new Color('#000');
  2. var violet = new Color([255,0,255]);
  3. // melange du noir avec du blanc(#fff) et violet, avec 10% de la nouvelle couleur a chaque fois
  4. var violetfonce= noir.mix('#fff', violet , 10);
  5. //on affecte la couleur a monDiv
  6. $('monDiv').setStyle('background-color', violetfonce);
  7. //quelques autres fonctions pour la couleur
  8. //invert, setHue, setSaturation, setBrightness ...

Classe Common

La classe Common regroupe quelques fonctions communes. La fonction chain est vraiment cool :

JavaScript:
  1. //on definit un effet d'opacite sur un element
  2. var myFx = new Fx.Style('element', 'opacity');
  3. //on definit une 'chaine' d'actions grace a la fonction chain
  4. myFx.start(1,0).chain(function(){
  5. myFx.start(0,1);
  6. }).chain(function(){
  7. myFx.start(1,0);
  8. }).chain(function(){
  9. myFx.start(0,1);
  10. });
  11. //l'element va apparait et disparaitre trois fois

Classe XHR

Je ne comprend pas trop l'utilitĂ© pour l'instant de cette classe qui fait la mĂȘme chose que la classe Ajax.

JavaScript:
  1. //fonction lorsque la requete est completé
  2. var showSucces = function(request){
  3. alert(request)
  4. };
  5.  
  6. //handler function when something went wrong
  7. var showFailure = function(request){
  8. alert(request)
  9. };
  10.  
  11. //sending a XMLHTTPRequest
  12. var testXHR = new XHR(
  13. {
  14. method: 'get',
  15. onSucces: showSucces,
  16. onFailure: showFailure,
  17. }).send('http://example.com/script.php','mootools=wicked_cool&favorite=solutoire.com'

Classe Asset

Cette classe lĂ , je l'attendais avec impatience ) Elle permet de charger dynamiquement des images, CSS ou fichiers javascripts :

JavaScript:
  1. var imgCpt = 1; //compteur image
  2. //la fonction montreProgression est appelée a chaque fois qu'une image est chargee
  3. var montreProgression = function(){
  4. alert(imgCount + ' image(s) chargées!');
  5. imgCpt++;
  6. };
  7.  
  8. var img = new Array(); //tableau d'image utile pour la fonction
  9. //la fonction chargementTermine est appele lorsque toutes les images sont terminees
  10. var chargementTermine = function(){
  11. //on injecte les images chargées
  12. //on parcourt le tableau d'images
  13. for(var item in img){
  14. if($type(img[item]) == 'function') break; //on verifie que c'est pas une fonction
  15. img[item].injectInside('monElement'); //on affiche les photos ds le div monElement
  16. }
  17. };
  18.  
  19. //va afficher un alert a chaque image chargee
  20. //on lance le prechargement de 2 images : testimg1.jpg et testimg2.jpg
  21. var img = new Asset.images(['testimg1.jpg','testimg2.jpg'],{
  22. onProgress: montreProgression ,
  23. onComplete: chargementTermine
  24. });
  25.  
  26. //on peut faire la meme chose avec une seule image (pas de s  Asset.image)
  27. //new Asset.image('/images/myImage.png', {id: 'myImage', title: 'myImage', onload: myFunction});
  28. //avec les CSS
  29. //new Asset.css('/css/myStyle.css', {id: 'myStyle', title: 'myStyle'});
  30. //avec les JS
  31. //new Asset.javascript('/scripts/myScript.js', {id: 'myScript'});

Les plugins

De nouveaux plugins sont dorénavant integrés avec cette version de Mootools (j'en avais parle ici) comme le slider, le scroller, le smoothscroll . Dommage que le calendrier ne soit pas integré mais ça ne saurait tarder puisque la version 1.1 est déjà sur les rails )

J'en profite pour également vous filez Mootable, plugin qui permet de générer un tableau classable par colonne, redimensionnable ... Puissant mais en cours de developpement.

Conclusion

Voila pour un aperçu rapide de ce nouveau Mootools 1.0, il y a le gros du changement, les details vous les decouvrirez tout seuls, comme des grands.

LĂ  les amis, vous ĂȘtes au top de la Mootools fraicheur ! Alors merci qui ? ;)

Si vous découvrez des trucs chanmé biens sur la nouvelle version de Mootools, hésitez pas à partager dans les commentaires. Vive la Net Solidarité !

PS: J'en chie ai du mal avec mon clavier qwerty alors désolé pour le manque d'accents.

Billets en relation


7 réponses à “Sortie de Mootools 1.0 ! Quoi de neuf ?”

Merci pour les infos )

oakleaf le 31 janvier 2007 21:46 |

Merci pti gars pour l'info je l'attendais avec impatience maintenant il reste a tester un peu tout ca, encore quelques heures de debugage et on commencera a maitriser !

Alas le 1 février 2007 15:00 |

yep sympa comme décortiquage...ça t'interesse un peu de pub sur excargot.net ?

excargot le 2 février 2007 15:05 |

Bien sur, j'en serais honoré ;)

Je vais bientot changer le theme du blog et mettre en place une blogroll et bien entendu tu y es déjà )

Fardeen le 2 février 2007 15:15 |

salut , j'ai un souçis avec cette nouveauté , en fait le tutorial du menu accordéon ne marche plus avec cette version y as il beaucoup de chose a changer par rapport a l'ancienne release ??

gtraxx le 15 février 2007 15:08 |

Merci bien pour ces infos bien sympathique

daweed le 16 février 2007 8:57 |

Pour moi, une des avancées les plus importantes de la 1.0 est la modification de Element.toQueryString(), devenue récursive. Parce que avant elle etait pas trop utilisable.

Boris le 10 mars 2007 13:21 |

Laisser un commentaire