Historique
Depuis quelques mois comme tout bon webmaster qui se respecte, impossible de faire l'impasse sur le web 2.0 ajax et tout ce genre de new trucs qui déferlent en ce moment. Donc en janvier, je suis tombé en farfouillant sur les frameworks javascript php rails et ajax ... sur xajax et comme d'habitude j'ai fait le tour des exemples en ligne. Le mur, ça m'a rappelé un truc qui existait il y a bien quelques 6 à 8 ans et qui m'avait vraiment fait grosse impression et sur lequel j'avais laissé mes bannières de pub à l'époque déjà. Ce mur avait disparu, victime de son succès certainement et du temps qui passe. J'ai donc téléchargé xajax et installé leur démo en janvier et on l'a laissé un peu tel quel sur jpaime.net. Aucun problème, il faut dire que mettre un truc en ligne c'est bien, avoir du monde dessus c'est autre chose ;). Il y a un mois environ nous étions Moonshadow et moi en train de jouer avec les digg-like et je me suis dis, ba améliorons un peu le mur et on le met. On fait tous des erreurs, c'en était une lol ^^

D'un seul coup sur l'espace de quelques heures, le nombre de visites sur le mur a été multiplié par beaucoup. Et là on a eu à subir une foule de messages d'erreur xml sur le fichier contenant les messages postés. Nous avons dû avec Moonshadow (merci a elle) passer le week-end à monter la garde pour remonter le mur à chaque défaillance (mon pire week-end depuis longtemps). À chaque plantage on perdait des messages et on en a perdu des centaines. Le lundi est arrivé avec la reprise du travail et je n'avais toujours pas de solution à tout cela. Heureusement le nombre de visites a progressivement diminué et tout est rentré dans l'ordre. Je vous mets donc en garde sur ce script de démo. Avec le recul, je pense qu'il faudrait le recoder pour tout sauvegarder en base de données plutôt que dans un fichier xml. Je ferai peut-être bien ça un jour. Sinon il semble quand même qu'il faut vraiment que vous ayez un hébergeur qui supporte bien la montée en charge de vos développements. Actuellement, nous sommes sur un serveur mutualisé et il n'a pas résisté. Tous les développements de type web 2.0 ajax impliquent une charge de travail du serveur plus importante que les développements web normaux puisqu'une grande partie du travail est effectué par le serveur qui renvoie les informations à afficher et non par le poste client. Le serveur était saturé, je n'ai pas pu avoir de mon hébergeur plus de détails pour savoir d'ou ça venait. Ceci dit, la prochaine fois sur ce type de projet même si c'est totalement amateur, on aura une attitude plus professionnelle et on fera des tests de montée en charge pour voir le comportement de nos développements avant de les proposer en ligne. :/

Technique
Si vous voulez adapter le mur pour votre site voici la démarche
1- Télécharger Xajax
2- Modifier la feuille de style pour l'adapter à la présentation que vous voulez. La feuille de style dans l'exemple étant dans l'entête du fichier Thewall.php
3- Modifier dans thewall.server.php la deuzième ligne
{ define ('MAX_SCRIBBLES', 30); } en indiquant le nombre de graffitis que vous voulez voir apparaître sur la page du mur (conseil allez-y mollo quand même)
4- Si vous voulez ajouter comme je l'ai fait des variables supplémentaires pour afficher des images des url ou autre sur le mur , vous allez devoir modifier la class graffiti
exemple: function graffiti($sHandle, $sWords, $sPhoto, $sUrl) attention à bien rajouter vos nouvelles variables partout où nécessaire dans le code (ça c'est pas compliqué suffit de faire comme pour $sWords mais ne pas en oublier ;)
5- adapter cette partie du script à votre convenance voici la mienne
$this->html  = "\n<div style=\"font-family:".$this->getRandomFontFace().";font-weight: bold;text-align:".$this->getRandomAlignment();
        $this->html .= ";color:".$this->getRandomColor().";\">";
        $this->html .= "<span style=\"font-size:".$this->getRandomFontSize()."%;\">";
        $this->html .= strip_tags(stripslashes($sWords));
        $this->html .= "</span><br/><span style=\"font-size: small;\"><br/>";
       
    if (trim($sUrl) != "")    {
        $this->html .= "<a href=\"".$sUrl."\" target=\"_blank\"/>".strip_tags(stripslashes($sUrl))."</a><br/>";   
        }   
       
    if (trim($sPhoto) != "")    {        
        $this->html .= "<img src=\"".strip_tags(stripslashes($sPhoto))."\" name=\"".$_SERVER["REMOTE_ADDR"]."\" /><br/>";  }
        $this->html .= " ~ ".strip_tags(stripslashes($sHandle))." ".date("d/m/Y H:i:s")."</span></div>";
       
        $this->isValid = true; ob_start(); }


Comme vous pouvez le noter, je garde en name l'ip des posteurs de photos. On ne sait jamais, en cas de problème cela me permettra d'intervenir.
6- beaucoup de monde sur le forum Xajax demande à ajouter des polices aléatoires, voilà ma solution à ce problème: ajoutez la fonction suivante

function getRandomFontFace()
    {    $tablfont[1] ="Arial, Helvetica, sans-serif";
$tablfont[2] ="Times New Roman, Times, serif";
$tablfont[3] ="Verdana, Arial, Helvetica, sans-serif";
$tablfont[4] ="Verdana, Arial, Helvetica, sans-serif";
$tablfont[5] ="Courier New, Courier, mono";
$tablfont[6] ="Georgia, Times New Roman, Times, serif";
$tablfont[7] ="Verdana, Arial, Helvetica, sans-serif";
srand((double)microtime()*1000003);
return $tablfont[rand(1,7)];    }

en indiquant en tableau les polices que vous désirez utiliser (ceci dit, il faut quand-même en choisir des standards pour les navigateurs) ce qui limite pas mal.

Et voilà vous avez votre mur à vous ;) ^^