Mot clé - Mootools
Sortie officielle de la nouvelle version du framework javascript mootools en version 1.2
mardi, juin 17 2008
Par julien lavault le mardi, juin 17 2008, 13:06 - Ajax
Je n'ai pas encore eu le temps de tester, mais j'ai pu constater que le framework a été totalement repensé, avec une nouvelle architecture:
Mootools à bien évidement pensés à la compatibilité des versions, ainsi les anciennes version de mootools seront compatible avec le nouveau framework 1.2.
Petite parenthèse pour le nouveau site internet mootools qui a accompagné la sortie de ce nouveau framework, je le retrouve vraiment moins agréable que l'ancienne version à tous les niveaux: ergonomie, design, interactivité... Vraiment dommage que le site est perdu sa petite touche mootools que tout le monde appréciait !
Il reste à voir si cette nouvelle version va être suivis, donnez moi votre avis !
Enrichir vos formulaires avec Fx.Styles de Mootools
dimanche, avril 27 2008
Par julien lavault le dimanche, avril 27 2008, 18:53 - Ajax
Rajouter un peu d'interactivité est très abordable avec Mootools et son objet Fx.Styles. Quelques lignes peuvent permettre de rajouter un effet progressif de changement de couleur, ainsi qu'un léger effet élastique d'agrandissement sur les champs du formulaire.
Pour effectuer cette opération, il faut découper notre développement en trois étapes:
- Déclaration et initialisation des variables,
- Initialisation de l'objet Fx.Styles,
- On attribue les gestionnaires d'évènement,
Présentation du code source:
window.addEvent('domready', function(){
////////////////////////////////////////////////////
// On déclare les variables
var type = 'text';
var duree = 2000;
var widthIn = '200px';
var widthOut = '150px';
var colorIn = '#333333';
var colorOut = '#CCCCCC';
var bgIn = '#CCCCCC';
var bgOut = '#1E1E1E';
//////////////////////////////////////
// On boucle sur tout les éléments du formulaire
var input = $$('#formulaire '+type);
input.each(function(element) {
// On initialise l'objet Fx.Styles
var fxInput = new Fx.Styles(element, {
duration:duree,
wait:false,
transition: Fx.Transitions.Back.easeOut
});
// On attache le gestionnaire d'évènement 'focus'
$(element).addEvent('focus', function(e) {
e = new Event(e).stop();
alert('okai');
fxInput.start({
'width': widthIn,
'color': colorIn,
'background-color': bgIn
});
});
// On attache le gestionnaire d'évènement 'blur'
$(element).addEvent('blur', function(e) {
e = new Event(e).stop();
fxInput.start({
'width': widthOut,
'color': colorOut,
'background-color': bgOut
});
});
});
});
Programmation Objet en Javascript
lundi, septembre 3 2007
Par julien lavault le lundi, septembre 3 2007, 16:41 - Ajax
Ce tutoriel vous présente la syntaxe de la programmation Objet en Javascript. Pour la petite histoire, le Javascript était le précurseur des langages orienté Objet pour le Web. Décliner en Action Script pour Flash ou il a connu un très grand succès, il a perdu progressivement de sa notoriété au fil des années, mais heureusement avec le Buzz du Web 2.0 et Ajax, ce langage bénéficie d'une seconde vie !
Voici un exemple qui vous montre comme créer vos propres objet en Javascript et les instancier:
// Object JS
var monObjet = {
// Paramètre
param1: {"x": 0, "y": 0}, // On constate qu'un variable de paramètre peut aussi être un objet
param2: 2,
param3: 333,
// Méthode
maMethode1 : function (var1, var2) {
this['param1'].x = var1; // On pointe sur le paramètre objet avec des crochets comme dans Flash!
this.param2 = var2; // Poitage classique sur un paramètre
alert('Var1: '+var2);
},
maMethode2 : function() {
var var2 = this['param1'].x;
alert('Var2: '+var2);
},
maMethode3 : function() {
var var3 = this['param3'];
alert('Var3: '+var3);
}
}
// Pour instancier un objet 'monObjet' et lui appliquer des méthode
monObjet.maMethode1(100,200);
monObjet.maMethode2();
monObjet.maMethode3();
Comme vous pouvez le constater, ce n'est pas très compliquer, mais il y a beaucoup de mauvaise utilisation du Javascript qui porte souvent à confusion. Mais cet exemple illustre la véritable syntaxe orienté objet du Javascript, couplé avec Mootools, vous allez vraiment avoir un grande liberté d'action un fois ce principe maitrisé !
Faire une requête en Ajax avec Mootools
mardi, août 28 2007
Par julien lavault le mardi, août 28 2007, 16:58 - Ajax
Ce tutoriel vous montre comment faire des requêtes en Ajax avec la librairie Javascript Mootols, c'est à dire comment afficher des données provenant d'une base de données en fonction d'une requête SQL sans rechargement de la page et en apportant une touche d'interactivité. Cette application Ajax se greffera sur un site traditionnel, car comme je l'ai déjà expliqué dans un précédent billet, une application Ajax se greffe sur un site déjà existant afin de bénéficier de son référencement et d'une structure stable dans le cas où le client a désactivé le Javascript de son navigateur.
Avant de commencer, il est important de comprendre deux choses qui sont essentielles dans le développement d'un application Ajax: les conteneurs et les gestionnaires d'évènements (je parle aux non initiés !!!).
Les conteneurs
Les conteneurs vont vous permettre de délimiter les zones d'affichage des données, ce sont des 'div' que l'on identifie grâce à leur 'id'. Il est important de bien les nommer afin de pourvoir les retrouver facilement !
Les gestionnaires d'évènements
Les gestionnaires d'évènements vont vous permettre de récupérer les évènements de la page suivant les actions de l'utilisateur. Exemple: quand l'utilisateur 'click' sur un bouton, quand les données sont chargées avec succès 'onSucces' ...
Mootools dispose de puissants gestionnaires d'évènements qui vont vous permettre de contrôler l'ensemble des actions de l'utilisateur et des différents états de la page.
Dans un premier temps il faut développer le site normalement pour qu'il fonctionne en totale indépendance du Javascript et pour être référencé sous Google. Conservez vos méthodes et outils traditionnels pour concevoir votre site, il faut juste bien définir le nom des 'id' des éléments qui seront utilisés par nos scripts Ajax, par exemple le conteneur qui affiche les données, le menu qui déclenche les requêtes Ajax, etc...
Une fois le site construit, nous allons développer notre applications Ajax, pour se faire nous aurons besoin de:
- Notre page XHTML avec un menu en liste,
- La librairie Javascript Mootools à inclure dans l'entête de la page,
- Un fichier Javascript qui exécute la requête Ajax,
- Un fichier PHP qui traite la requête et retourne les données à afficher.
Comme le développement de l'application Ajax est indépendant de votre site, elle peut être déployée sur un site déjà existant sans nécessité de modification sur la structure du site! Il vous faudra alors uniquement inclure vos librairies Javascript et Mootools et créer vos fichiers PHP qui effectueront vos traitements coté serveur.
Débutons désormais le développement de l'application Ajax, tout d'abord il faut inclure dans l'entête la librairie Mootools que vous pouvez télécharger sur le site de Mootools.net, et le script Javascript que nous allons développer. Le principe de base est de déclencher la requête Ajax lorsque l'on 'click' sur un lien du menu. Voici le code XHTML de notre page, comme vous pouvez le constater, il n'y a aucun script ou gestionnaire d'évènements dans notre document XHTML, juste des balises! Tout le contrôle des évènements va se faire depuis notre script Javascript !
<ul id="myElement">
<li><a href="test/voila1/">Test1</a></li>
<li><a href="test/voila2/">Test2</a></li>
<li><a href="test/voila3/">Test3</a></li>
<li><a href="test/voila4/">Test4</a></li>
<li><a href="test/voila5/">Test5</a></li>
<li><a href="test/voila6/">Test6</a></li>
</ul>
Maintenant, nous allons récupérer l'évènement 'click' avant de déclencher notre requête Ajax, et bloquer le pointage naturel du lien vers la page correspondante avec Event(E).stop()
.
// On applique le gestionnaire d'évènement à tous les liens du menu liste
var list = $$('ul#myElement li a');
list.each(function(element) {
// Gestionnaire d'évènement 'click'
element.addEvent('click', function(e){
// On stoppe le pointage naturel du lien pour ne pas recharger la page
e = new Event(e).stop();
// Ici notre requête Ajax décrite plus bas
});
});
Un fois que l'on a récupéré l'évènement 'click', il est temps de déclencher notre requête en Ajax! Pour ce faire nous allons créer un objet 'Ajax' de Mootools avec comme paramètre l'url du fichier PHP qui va traiter notre requête, la méthode de transfert (post ou get), l'encodage des données (uft-8, iso ...), le cadre du conteneur dans lequel vont être affichées les données transférées (update) qui doit être renseigné par le nom de l'id du conteneur. Et enfin, un gestionnaire d'évènements 'onComplete' qui prend en paramètre une fonction, cela permet par exemple de mettre un effet d'apparition sur le conteneur qui affiche les données. Dans un deuxième temps il faut paramètrer la requête Ajax grâce à la méthode 'request' avec les variable à envoyer au fichier PHP de traitement. Voici le code Javascript de la requête Ajax:
// Requête ajax
var url = 'ajax.php';
var ajaxRequest = new Ajax(url, {
method: 'post',
encoding: 'uft-8',
onComplete: showSucces(),
update: log
});
var requestVar = {
var1: 'voila la variable numéro1',
var2: 'voila la variable numéro1',
var3: 'voila la variavle numéro1',
var4: 'voila la variable numéro1',
var5: 'Tutoriel par JFLAD'
};
ajaxRequest.request(requestVar);
Il faut maintenant traiter la requête Ajax avec un fichier PHP qui va retourner le contenu à afficher:
<?php
// On récupère les données
$var1 = $_POST['var1'];
...
// Traitement des données
// Içi vous effectuez vos requêtes SQL et traitement divers
// On retourne le contenu a affiché
if(isset($_POST['var1'])){
print '<p>Votre contenu à afficher...</p>';
}
?>
Le traitement en PHP doit être développé comme à l'habitude, à la différence près que vous allez envoyer votre contenu à afficher à votre page XHTML plutôt que de l'afficher directement. Néanmoins je vous conseille de sécuriser vos fichiers PHP de traitement avec par exemple une session de tests surtout lorsqu'il exécute des requêtes insert/delete
dans vos bases de données afin d'éviter des injections SQL!
Dans un prochain tutoriel, je vous montrerai comment apporter une touche d'interactivité à vos évènements grâce à Mootools et l'utilisation de sa class Fx
!
Le validator W3C utilise Mootools
mercredi, août 15 2007
Par julien lavault le mercredi, août 15 2007, 20:09 - Ajax
Mootools n'en finit plus de convaincre, je viens en effet de me rendre compte que le nouveau site du validator W3C utilise la librairie Javascript Mootools, encore un exemple de plus qui illustre les performances des ce framework !Les plugins Mootools indispensable
Par julien lavault le mercredi, août 15 2007, 17:25 - Ajax
La communauté de Mootools se développe à vive allure et l'on voit déjà émerger de nombreuses extensions et plugins bien pratiques. J'ai essayé de faire un concentré des meilleurs scripts que j'ai trouvé. Voici une sélection des meilleurs liens dans différents domaines d'utilisation:
- Slimbox : Galerie d'image comme LightBox mais beaucoup plus léger que lightBox pour le même résultat.
- Slimbox_ex: Extension de Slimbox pour ouvrir une page dans un Iframe.
- Moodalbox: Extension de Slimbox pour ouvrir un formulaire en Ajax.
- Slideshow: Galerie d'image en Ajax très sympa et totalement paramétrable.
- Mootable: Création d'un tableau en Ajax avec tri sur les elements et affichage multiple.
- SortableTable: Même principe que Mootable mois complet mais mieux fini.
- Fisheye: Création d'un menu 'dock'.
- Phatfusion: Pour faire des cadres arrondies sans image de background comme Niffty.
- MooTabs: Menu à onglet original et interactif.
- FormValidation: Validation de formulaire en Ajax.
- DraggableTree: Arbre de navigation éditable en glisser déposer.
- DatePicker V2: Insertion d'une date vie un calendrier, interactif et totalement modulable.
Beaucoup d'amalgame dans le mot Ajax
mercredi, août 8 2007
Par julien lavault le mercredi, août 8 2007, 17:45 - Ajax
A force de m'intéresser de très prêt à Ajax, je constate qu'il y énormément d'amalgame de fait à ce sujet! En effet, beaucoup pense que faire une requête en httpRequest au onclickd'un bouton constitue de l'Ajax. Hors la véritable utilisation de Ajax est véritablement ailleurs, la subtilité réside de faire un interface Web dont toute l'interactivité Javascript (dont les transferts asynchrone de donnée) sont Indépendante de l'application principale, c'est à dire que si le site le client ne possède pas Javascript, le site marche quand même normalement. Cela va plus loin, car cette méthode permet également de référencé les contenus des pages même si elles sont chargés de manière asynchrone!
Il faut que le document XHTML ne possède aucun script Javascript dans le body, mais juste l'appelle au librairie utilisées dans le header.
La technique est simple pour faire ceci, il faut utilisé les gestionnaires d'évènements ainsi que les sélecteurs d'éléments. Ainsi un site traditionnel pourra ce voir gréfer un ensemble évènementiel qui permettra de rendre un interface Web interactive. Le seul supplément sera de crée un fichier 'dataTransfert.php' qui transféra les templates de contenu. Autrement tout le reste sera simplement des librairie Javascript qui déclencheront des actions suivant un système évènementiel.
Voici un exemple de ce qu'il ne faut pas faire (gestionnaire d'évènement directement dans le document XHTML):
<p id="monBouton" onclick="maFoncitonJs();">Cliquez moi</p>
Voici le même exemple, mais correcte cette fois ci (fichier javascript inclus dans le header):
$'(monBouton').addEvent('click', function(){
// Contenu de ma fonction
});
Ce principe est la base, à partir de découle tout le reste, le Blog JFLAD vous présentera ultérieurement d'autres techniques pour faire des transferts asynchrone de données depuis une page traditionnelle en gardant une lisibilité dans les moteurs de recherche!
Je vous conseil fortement l'utilisation du framework Mootools dont j'ai déjà fait l'éloge dans de précédent billet, ce framework est vraiment sur-puissant, et possède toutes les fonctionnalités imaginable pour faire de l'Ajax et rendre une application Web riche version Web 2.0.
Derniers commentaires