Faut pas décoder !

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 11 décembre 2009

jQuery carrousel

Bonjour à toutes et à tous,

Un nouveau plugin carrousel en jQuery vient de sortir.

Une documentation complète est disponible à cette url : http://www.gougouzian.fr/projects/jquery/carrousel/

Les avantages de ce carrousel par rapport aux autres sont sa flexibilité et la diversité des contrôles et effets que l'on peut appliquer.

Vous pouvez vous même en faire.

Des retours, des questions, n'hésitez pas à nous contacter.

lundi 2 novembre 2009

SPIP 2.0.10

Nouvelle version de SPIP disponible :

Téléchargeable à l'adresse suivante : http://www.spip.net/fr

Liste des nouveautés : ici

mercredi 22 avril 2009

Intégrer les résultats Twitter dans Google

C'est possible avec le script Greasemonkey
"It displays the most recent 5 tweets for the query that you are search for, giving both real-time Twitter search results and Google results on the same page:" (source : mt-hacks.com)

script greasemonkey, twitter, google, acti, elise boubault, consultante web marketing

lundi 19 janvier 2009

Création d'un plugin pour jQuery (3/5)

2ème partie : Comment est structuré un plugin ?

A quoi sert un plugin jQuery ?

Un plugin jQuery permet d'ajouter des fonctionnalités sur le DOM que le framework ne permet pas actuellement. Par exemple si vous souhaitez surligner un élément quelconque du DOM, vous aimeriez bien utilisé une fonction du style jQuery('p').hilight();

Ce billet vous permet de comprendre comment faire un plugin pour faire vos propres fonctionnalitées

Squelette

Un plugin jQuery est pratiquement structuré de la même manière. En effet il existe différentes manières d'instancier la fonction qui étend l'objet. jQuery(function($){}); ou (function($){})(jQuery);. La seconde solution étant la plus utilisée.
La suite de cette article est une adaptation d'un tutoriel que vous trouverez ici

Je vais donc vous expliquer comment créer un plugin pour la fonctionnalité hilight()

Tout d'abord : la définition de la fonction
// Definition du plugin
$.fn.hilight = function() {
// on mettra le code du plugin ici
};

L'utilisation du "$" ici est autorisé nous verrons pourquoi par la suite.

Nous allons ajouter la possibilité de gérer des options pour notre fonction.
// Definition du plugin
$.fn.hilight = function(options) {
var defaults = {
foreground: 'red',
background: 'yellow'
};
// la fonction extend() permet d'ajouter la gestion des options par défaut.
var opts = $.extend(defaults, options);
// La suite du code se placera ici
};

Nous avons donc défini deux options par défaut : "foreground" qui permettra de gérer la couleur du texte, et "background" pour la couleur du fond. De plus il nous est possible de modifier les couleurs en les précisant en argument de la fonction. Par exemple :
jQuery('#maDiv').hilight({
foreground: 'blue'
});

Ainsi le texte sera bleu.

Les variables par défaut que nous avons définies ne sont accessibles seulement par la fonction $.fn.hilight().
Nous allons maintenant rendre public ce tableau afin d'accéder rapidement aux variables par défaut pour les modifier avec un minimum de code.
Créons d'abord la variable du tableau :
$fn.hilight.defaults = {
foreground: 'red',
background: 'yellow'
};

Maintenant nous allons modifier la gestion des variables par défaut dans la fonction $fn.hilight()
$.fn.hilight = function(options) {
var opts = $.extend({}, $.fn.hilight.defaluts, options);
};

Grâce à cette méthode, nous pouvons directement modifier les variables par défaut avec $.fn.hilight.defaults.foreground = 'blue';.

Nous allons maintenant passer au développement de la fonction pour agir sur le texte afin de surligner ce que l'on souhaite.
Pour cela, nous allons utiliser la fonction $().css();.
Tout d'abord, il est important de noter l'utilisation de la fonction each(); qui prend en paramètre une fonction. Cette fonction permet d'appliquer notre fonction principale (hilight()) sur notre choix.
Ainsi on obtient le code suivant :
return this.each(function() {
var $this = $(this);
var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
$this.css({
backgroundColor: o.background,
color: o.foreground
});

Passons maintenant à la normalisation en plugin jQuery.
Nous allons mettre le code défini précédemment dans la function (function ($){})(jQuery);.
Ce qui nous donne :
(function ($){
$.fn.hilight = function(options) {
var opts = $.extend({}, $.fn.hilight.defaluts, options);
return this.each(function() {
var $this = $(this);
var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
$this.css({
backgroundColor: o.background,
color: o.foreground
});
};
$fn.hilight.defaults = {
foreground: 'red',
background: 'yellow'
};
})(jQuery);

Améliorations

La principale amélioration que l'on peut apporter est le débogage.
On peut ajouter une fonction dit privée à notre plugin : debug();.
function debug($obj) {
if (window.console && window.console.log)
window.console.log('hilight selection count: ' + $obj.size());
};
Ainsi on peut utiliser au cours du plugin de cette manière :
(function($) {
$.fn.hilight = function(options) {
debug(this);
var opts = $.extend({}, $.fn.hilight.defaults, options);
// iterate and reformat each matched element
return this.each(function() {
$this = $(this);
// build element specific options
var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
// update element styles
$this.css({
backgroundColor: o.background,
color: o.foreground
});
});
};
//
// private function for debugging
//
function debug($obj) {
if (window.console && window.console.log)
window.console.log('hilight selection count: ' + $obj.size());
};
//
// plugin defaults
//
$.fn.hilight.defaults = {
foreground: 'red',
background: 'yellow'
};
})(jQuery);

Dans le prochain article, j'expliquerai le développement d'un plugin Weather qui affiche la météo en temps réel pour une ville donnée.

Création d'un plugin pour jQuery (2/5)

Suite de la création d'un plugin

1ère partie : Qu'est-ce que jQuery ?

jQuery est une librairie JavaScript rapide et efficace éditée par John Resig. De nombreuses fonctionnalités sont disponibles comme Ajax, parcours et modification du DOM. Le site officiel de jQuery est : http://www.jquery.com. A l'heure actuelle de la rédaction de cet article, jQuery en est à la version 1.3 .

Concept de Framework

Pourquoi un framework ? La puissance d'un framework est de proposer de manière simple et facile à mettre en place en ensemble de fonctionnalités. A chaque language informatique, il existe plusieurs frameworks :

  • PHP
    • Zend
    • Cake
    • Symphony
    • ...
  • JavaScript
    • jQuery
    • Prototype + Script.aculo.us
    • Dojo
    • ...
  • JSP
    • Struts
    • ...
  • ...

Pourquoi avoir choisi jQuery ? Ayant expérimenté plusieurs développement sous Dojo et Prototype, je me suis orienté vers cette librairie pour plusieurs raisons :

  • Performance : comparatif disponible sur le site de jQuery
  • Mise en place simple, légèreté
  • Une communauté active
  • Utilisé par les plus grands du web
  • FrameWork utilisé par ACTi

Je pense que ces raisons suffisent pour comprendre l'importance d'un développement avec ce framework plutôt qu'avec un autre.

Fonctionnalités et exemples

jQuery offre un panel de fonctionnalités large grâce aux plugins, mais nativement ce framework embarque une plétore de fonctionnalités pour manipuler le DOM et faire des animations sur nos pages web.
La principale fonction de jQuery est jQuery(args) ;)
Cette fonction renvoit l'objet DOM que l'on veut récupérer. Elle peut également être simplifiée par $(args), cependant elle peut porter à conflit lors d'une utilisation avec le framework Prototype.
Par exemple la page web suivante :
<html>
<body>
<p id="bar" class="foo"><a href="#">Lorem</a> Ipsum dolor sit <span style="text-decoration:underline;">amet</span></p>
<p class="foo">Consectatur icque men</p>
<p>Thea sec niom</p>
</body>
</html>

Quelques exemples de sélections :
jQuery('p') => renvoit un tableau avec les objets DOM des trois paragraphes

jQuery('p.foo') => renvoit un tableau avec les objets DOM des paragraphes dont la classe est "foo"

jQuery('p#bar') => renvoit un tableau avec les objets DOM des paragraphes dont l'id est "bar"

Des sélections plus complexes peuvent être réalisées :
jQuery('a', jQuery('p#bar')) ou jQuery('p#bar a') => renvoit un tableau avec les objets DOM des liens dans les paragraphes dont l'id est "bar"
jQuery('a[href="#]') => renvoit un tableau avec les objets DOM des liens qui ont pour destination "#"
Comme dit précédemment, la fonction jQuery() est la base du framework, cette fonction renvoit un objet DOM étendu, ainsi toutes les fonctions du framework jQuery et de ses plugins étendent cet objet.

Dans la suite de l'article, je présenterais seulement 3 fonctions : css(), attr(), ajax() utilisées par le plugin "Weather". Toutes les fonctionnalités du framework sont disponibles sur le site officiel de jQuery et agrémentées d'exemples. Je vous conseille vivement d'y aller.

La fonction css(arg1, arg2). Celle-ci fonctionne de la manière suivante, si un seul paramètre est précisé, la fonction renvoit la valeur du paramètre css choisi. Si deux sont précisés, la fonction modifie la propriété css selectionnée.
Exemple :

jQuery('p span').css('text-decoration') va renvoyer "underline". Si l'on execute : jQuery('p span').css('text-decoration', 'none'), la page web sera la suivante :
<html>
<body>
<p id="bar" class="foo"><a href="#">Lorem</a> Ipsum dolor sit <span style="text-decoration:none;">amet</span></p>
<p class="foo">Consectatur icque men</p>
<p>Thea sec niom</p>
</body>
</html>

La fonction attr(arg1, arg2). Celle-ci fonctionne de la même manière que css(),ainsi si un seul paramètre est précisé, la fonction renvoit la valeur de l'attribut choisi. Si deux sont précisés, la fonction modifie l'attribut sélectionné.
Exemple :

jQuery('p#bar a').attr('href') va renvoyer "#". Si l'on execute : jQuery('p#bar a').attr('href', 'http://www.acti.fr'), la page web sera la suivante :
<html>
<body>
<p id="bar" class="foo"><a href="http://www.acti.fr">Lorem</a> Ipsum dolor sit <span style="text-decoration:none;">amet</span></p>
<p class="foo">Consectatur icque men</p>
<p>Thea sec niom</p>
</body>
</html>

La fonction ajax() possède un seul argument écrit sous forme de tableau clés-valeurs. Elle renvoit un objet XMLHTTPRequest.
Exemple : $.ajax({ type: "POST", url: "some.php", data: "name=John&location=Boston", success: function(msg){ alert( "Data Saved: " + msg ); } }); Les différentes clés possibles sont :

  • type : POST ou GET
  • url : url pour récupérer l'information (page interne au domaine)
  • data : les informations à passer en GET ou en POST
  • dataType : le type des informations
  • cache : true ou false
  • async : true ou false pour un mode asynchrone ou non
  • success : la valeur est forcément une fonction dont le premier argument est la réponse xml
  • error : la valeur est forcément une fonction dont l'argument est l'erreur sous un format textuel
  • ...

La suite dans le prochain billet

Création d'un plugin pour jQuery (1/5)

Ce tutoriel a pour but de présenter le développement d'un plugin "Weather (en cours de développement)" avec le framework jQuery 1.3 (fonctionne également avec 1.2.6).
Ce plugin permet de voir plusieurs fonctionnalités de jQuery comme css(), ajax(), attr(), ...

Ce tutoriel est composé de 5 articles se décomposant de la manière suivante :

1er billet : ''Introduction"
2ème billet : "Présentation de jQuery''
3ème billet : "Comment commencer un plugin ?"
4ème billet : "Développement d'un plugin exemple : Weather"
5ème billet : "Evolutions et téléchargement"

Le sommaire de ce tutorial est le suivant :

  1. Qu'est-ce que jQuery ?
    1. Concept de Framework
    2. Fonctionnalités et Exemples
  2. Comment est structuré un plugin ?
    1. Squelette
    2. Améliorations
  3. Le plugin Weather
    1. Fonctionnalités
    2. Fichiers
    3. Dépendances
    4. Fonction principale
    5. Flux RSS
      1. Récupération
      2. Parsing
    6. Fonctions annexes
      1. makeWeather()
      2. makeDayNight()
      3. Les classes Cloud, Fog, Rain, Hail
  4. Evolutions futures
    1. Thunder
    2. Sound :)
  5. Liens et téléchargement

La suite dans le prochain billet...

lundi 5 janvier 2009

Agile Carrousel

Ca fait quelques temps que je cherchais un carrousel simple et funky, voilà c'est fait. AGILE CARROUSEL.

jeudi 3 juillet 2008

Pour les non flasheurs et autres action scripteurs

Utiliser un programme d’animation flash n’est pas toujours facile pour qui s’initie.

The Effect Generator est un petit logiciel gratuit en ligne qui va vous permettre, sans connaissance préalable si ce n’est votre imagination, d’en créer par simple glisser-déposer.

The Effect Generator vous offre la possibilité de choisir différents outils de transformation et d’animations. Vous avez également la possibilité de démarrer via des modèles proposés classés par thème et de les transformer à votre guise, ce qui pourrait être une base afin d’en comprendre ces outils.

Une fois terminé, vous pouvez l’enregistrer et vous l’envoyer par mail. Seul inconvénient, c’est que le champs mail ne semble pas reconnaitre l’arobase et le point, procédez donc au simple copier/coller.

Une fois votre fichier envoyé, vérifiez votre messagerie. Dans le mail que vous recevrez, vous trouverez un lien vers votre animation un lien pour l’éditer le code qui va vous permettre d’insérer directement l’animation sur votre page le code javascript à insérer directement sur votre page le code javascript à insérer dans votre html

via

mercredi 26 mars 2008

SearchMe : moteur de recherche visuel

Marre des interface de recherche textuel et sans âme ?
Un nouveau moteur de recherche verra bientôt le jour. Son nom ? searchMe
http://www.searchme.com/

SearchMe présente depuis quelques semaines une version de test de son moteur, comptant déjà plus d'un milliard de pages.
Ce moteur de recherche est basé sur une présentation visuel des résultats, rappelant le très à la mode Cover Flow d'Apple.

Le rendu du moteur est basé sur la technologie en plein essor : Flex.

Pour se faire un idée, le plus simple est encore d'aller voir la vidéo de présentation directement sur le site, ou de s'inscrire pour recevoir les codes d'accès à la version Béta de l'outil.

Gageons que ce moteur, après avoir levé 31 millions de dollars à des sociétés comme Sequoia Capital (qui en son temps injecta de l'argent dans des projets prometteur comme Google ou Yahoo!), saura nous surprendre.

lundi 10 mars 2008

Les navigateurs : passé et futur

Depuis ces dernières années, de nombreuses évolutions ont vu le jour, techniquement, ergonomiquement, avec l'arrivée de sites plus dynamiques, plus interactifs, la prise de conscience de l'importance du respect des normes.

Malheureusement, les différentes versions de navigateurs, notamment les plus répendues, celles de Microsoft Internet Explorer, n'ont jusqu'à présent pas fait preuve d'efforts suffisants pour se mettre en conformité avec ces normes, pourtant essentielles à un Web propre, facilitant l'accès à l'information pour les moteurs de recherche, les personnes handicapées, réduisant les bandes passantes nécessaires, ...

En ce moment même, la version Bêta 1 d'IE 8 est en test par les développeurs en technologie Microsoft.
Cette version intègrera deux moteurs de rendu, celui d'IE 6 et 7, et un nouveau, qui a passé avec succès le test Acid 2 du Web Standards Project (WASP). Cette nouvelle version devrait notamment prendre en charge intégralement les CSS 2.1.

Nous devrions dans les toutes prochaines années pouvoir enfin dire adieu aux "hack IE" tant appréciés !

Affaire à suivre...

Face à Internet Explorer, Firefox, gagne du terrain. Très apprécié pour ses fonctionnalités avancées et ses nombreux plugins, celui-ci a atteint récemment les 500 millions de téléchargement, avec une croissance toujours plus rapide.
La prochaine version prévue pour le premier semestre 2008 apportera son lot d'améliorations, visibles ou invisibles pour l'utilisateur, en plus de son actuelle excellente compatibilité avec les normes en vigueur du Web.

jeudi 21 février 2008

Firefox et ses plugins

Devenu incontournable, le navigateur internet Firefox n'est plus simplement cet outil qui vous permet d'aller surfer sur les sites.
En effet, grâce à de nombreux modules, vous pouvez enrichir son interface et même vous en servir comme un outil de développement.

Petit aperçu des plugins qui peuvent vous être utiles dans vos développements !

Web Developer
Un des plugins de référence, une fois installé une nouvelle barre d'outils se met en place.
A votre disposition, de nombreuses fonctionnalités s'organisent en catégories : gestion des scripts, des cookies, du css, des images ou bien encore l'accès direct à la validation accessibilité.

Firebug
Tout autant utile, Firebug vous permet de visualiser et même d'intervenir directement dans le code de vos pages générées.
Au rendez-vous, possibilité d'appliquer et de debuger vos codes javascript, de visualiser le HTML de vos pages sous forme d'arborescence en y incluant directement l'accès au styles CSS.
A découvrir impérativement pour pouvoir se rendre compte de toutes possibilités.

IE Tab
Beaucoup plus simple que les deux plugins précédents, IE Tab vous permet d'alterner entre le moteur du navigateur Firefox et celui de Internet Explorer.
Ce module peut se révéler très utile pour tester les compatibilités d'affichages.

ColorZilla et MeasureIt
Je regroupe ces deux plugins étant donnée leur complémentarité lors de l'intervention sur la feuille de style.
En effet, ColorZilla vous permet de capturer n'importe quelle couleur sur une page internet et MeasureIt va vous permettre simplement d'obtenir, en pixel, la taille d'une zone à l'écran.

FireShot
Très pratique lors de la création de document (spéciation, formation, etc), Fireshot met à votre disposition un outil complet de capture d'écran.
Sa particularité est de pouvoir sélectionner une partie ou la totalité de la page web et la possibilité d'éditer et d'annoter directement ses images.

PicLens
Pour terminer, même si Piclens ne rentre pas dans la catégorie "développement", c'est une très bonne expérience à mettre en place.
L'extension transforme votre navigateur en galerie d'images 3 dimensions.
La présentation très fluide vous permet de visualiser les images issues de Flickr, Smugmug, DeviantArt, Photobucket, Picasa, Facebook, MySpace, Bebo, Hi5, Friendster, Google, Yahoo, Ask, Live, AOL et certains flux rss dans une interface d'une efficacité surprenante.
A découvrir !

mercredi 6 février 2008

Javascript et l'e-accessibilité

Il est important lors de la réalisation d'un site de prendre en compte l'e-accessiblité, pour permettre au plus grand nombre d'utiliser le site, y compris sur différentes configurations d'ordinateurs.
Prenons le cas de Javascript. Celui-ci permet d'offrir une grande interaction avec l'internaute (le Web 2.0 comme beaucoup disent, en partie à tord). Toutefois, une personne n'ayant pas javascript d'activé doit pouvoir naviguer librement sur le site et bénéficier des mêmes services, mêmes si ceux-ci peuvent parfois être moins ergonomiques, attrayants, ...
Voyez ces deux visuels, issus du site www.spit.fr, le premier sur une configuration avec Javascript, le deuxième sans Javascript.

Visuel 1 :


Visuel 2:


Le principe est simple. Le premier formulaire à créer est le formulaire "normal". On vient ensuite greffer du Javascript, qui, s'il est activé, masquera les listes déroulantes, affichera à la place de belles listes graphiques, scrollables, ... et sélectionnera le bon élément dans la liste déroulante masquée lors du clic sur l'image.
Les fonctionnalités sont donc strictement identique. Seule l'ergonomie et le graphisme de la page change.
Résultat : une interface agréable, des utilisateurs "classiques" satisfaits, les autres utilisateurs ... satisfaits également !

vendredi 14 décembre 2007

PSPad et les include PHP

Une info importante concernant l’outil PSpad, très utilisé par les développeurs pour éditer les pages PHP. Il est NECESSAIRE de configurer ce dernier pour ne pas engendrer de problème. Un fichier php doit normalement commencer par « <?php » et finir par « ?> » sans aucun caractère à l’extérieur de ces balises.
Le problème est que pspad rajoute par défaut un retour chariot en fin de fichier (donc après le « ?> »).
Ceci peut engendrer des problèmes si l’on souhaite utiliser la fonction « header » de php car un caractère aura déjà été envoyé au navigateur (le retour chariot !), d’où une erreur « headers already sent ».

Pour empêcher ça, aller dans le menu Options -> Options du programme, onglet « Editeur – fonctionnement » et décocher la case « Ajouter CR+LF ».


Regardez également les autres options, il y en a des sympa, notamment dans l’onglet « Integration au système » (visualiseur du code source de IE), ça permet au moins d’avoir un peu de couleur !

jeudi 29 novembre 2007

TinyMCE et les onglets

Bon à savoir aussi, lorsque l'on utilise le miniword (tinymce) dans des onglets de jquery, il faut initialiser les onglets à la fin du chargement du code pour que le miniword puisse s'initialiser avant. Sinon, le miniword ne sera bizarrement pas chargé.
$(window).load(function(){
    $("#container-1 > ul").tabs();
});
et non pas la fonction habituelle :
$(document).ready(function(){
    $("#container-1 > ul").tabs();
});

Onglets JQuery et Google maps

Lorsque l'on utilise les onglets JQuery et des Google maps dans la même page, il faut impérativement charger la map AVANT les onglets. Dans le cas contraire, la carte sera bizarrement tronquée...