Création d'un widget (composant graphique) avec jQuery

Pour ce TD, nous allons créer un composant de tchat. Il est basé sur une architecture client (à développer) / serveur (qui existe déjà)

Un bel emballage

Notre composant doit être très simple à installer sur n'importe quel site Web. C'est pourquoi il sera codé sous forme d'un script JavaScript (avec jQuery), livré avec un feuille de style CSS. L'utilisateur aura seulement à intégrer jQuery, notre script, et notre feuille de style sur sa page pour faire fonctionner le composant. Notre script cherchera sur la page tout élément div ayant la classe tchat, et remplacera dynamiquement cet élément par notre propre contenu.

Le serveur

Il tourne sur http://aiakide.net/tptchat . Il autorise l'envoi de messages constitués d'un texte et d'un login (le pseudo de l'auteur du message). Les messages peuvent faire jusqu'à 1000 caractères (pouvant intégrer du HTML), et les pseudos jusqu'à 20 caractères (caractères alphanumériques uniquement). Le serveur ne garde les messages que pendant 5 minutes; ensuite, ils sont effacés. Chaque message est identifié par un numéro; et ils sont triés chronologiquement: le message le plus récent a le numéro le plus élevé.

Il expose plusieurs services:

check?text=untexte
Vérifie que le texte untexte est correct.
check?login=unlogin
Vérifie que le login unlogin est correct.
getLoginMaxLength
Retourne la longueur maximum d'un login.
getNumLastMsg
Retourne le numéro du dernier message
getTextMaxLength
Retourne la longueur maximum d'un texte.
readDate?num=numéromessage
Retourne la date de création du message dont le numéro est numéromessage.
readLogin?num=numéromessage
Retourne login du message dont le numéro est numéromessage.
readText?num=numéromessage
Retourne texte du message dont le numéro est numéromessage.
write?login=unlogin&text=untexte
Envoie au serveur un message dont le login est unlogin et le texte untexte. Retourne le n° du message créé.

Test du serveur

Testez le serveur en utilisant directement les URL des services dans un navigateur. Par exemple, http://aiakide.net/tptchat/getLoginMaxLength. Essayez d'envoyer et de lire un message. Essayez de lire le dernier message. Notez les différentes étapes.

Le client

Pour simplifier le développement, nous allons préparer l'interface de notre composant de tchat dans un fichier HTML séparé, nommé tchat.html. Créez l'interface HTML d'un composant de tchat (à l'intérieur d'un bloc div), et sauvegardez sous le nom tchat.html. Évidemment, ce fichier ne contiendra pas un document HTML complet, mais juste un fragment (notre bloc div et son contenu). Le client doit comporter une zone pour afficher les messages et une zone pour saisir les messages.

La zone d'affichage

Cette zone donne, pour chaque message, la date, le login de l'auteur, et le texte du message. Elle a une hauteur fixe, de 400 pixels, quel que soit le nombre de messages.

La zone de saisie

Cette zone permet de saisir le login et le texte des nouveaux messages. Le texte du message peut contenir du HTML, notamment des images. À l'affichage ces images ne doivent pas faire plus de 60 pixels de haut. Idéalement, la zone de saisie de texte devrait permettre d'insérer des images prédéfinies (émoticons).

Développement d'un maquette statique

Commencez par développer une maquette statique (HTML+CSS, pas de JavaScript, pas de communication avec le serveur), comportant quelques messages que vous inventez pour l'occasion.

Intégration de la maquette

Récupérez n'importe quelle page Web de votre création; par exemple, votre vieux CV HTML/CSS. Intégrez jQuery dans cette page, ainsi que la feuille de style de votre tchat, et un script tchat.js, que nous allons créer (pour l'instant le fichier est vide). Enfin, ajoutez un élément div ayant la classe tchat.

Maintenant, dans le fichier tchat.js, nous allons ajouter un code JavaScript/jQuery/AJAX (ouf!) qui, lorsque la page est chargée, remplace tout élément div ayant la classe tchat par le contenu de notre fichier HTML. Normalement, un tchat devrait apparaître sur la page !

Remplacement de la maquette par un vrai tchat

Pour l'instant, notre tchat est plutôt bidon ! Pour la suite, toujours avec JavaScript/jQuery/AJAX, ajoutez de vraies fonctionnalités avec votre tchat. D'abord, l'envoi de messages (vous pouvez consulter la liste des messages reçus par le serveur dans http://aiakide.net/tptchat/temp, ou bien à l'aide du service readText), puis leur affichage.

Votre propre serveur

Votre client de tchat est terminé ? Maintenant, codez votre propre serveur de tchat. Ce n'est pas forcément très long, le serveur d'exemple sur http://aiakide.net/tptchat ne fait pas plus de 100 lignes de code, commentaires compris.

Fin

Votre composant est terminé ! Vous pouvez maintenant le distribuer ? Sous quelle licence ? Comment présenterez-vous la page de téléchargement de votre composant ?