Ecrire un widget générique de vote

Dans cet exercice vous serez amené à créer un widget générique permettant à un internaute de voter pour quelque chose.

Question 1 : Ecrire la classe Poll

Le widget prend 2 paramètres :

  1. id : correspond à l'identifiant du vote
  2. path : chemin de stockage des votes

Le widget possède 2 actions :

  1. defaut : Affichage du nombre de vote et d'un lien permettant de voter
  2. poll : Action permettant d'enregistrer un vote

Conseil : Inutile d'inventer un système compliqué pour stocker et compter les votes :

// Compter des votes
 if (file_exists($fichier)) $voix = filesize($fichier);
 
// Machine à voter
$fp = fopen($fichier, "a");
fwrite($fp, '.');
fclose($fp);

Question 2 : Ecrire les templates

Notre widget possède 2 actions donc 2 templates :

  1. defaut.php.html : affichage du nombre de vote et d'un bouton pour voter
  2. poll.php.html : permet éventuellement d'afficher la prise en compte du vote.

Pour être à la mode, le widget doit être AJAXisé. Lors d'un vote la page ne doit pas être rechargé et l'action de voter doit être asynchrone. Du coup le résultat de l'action poll ne doit pas être nécessairement affiché.

On prendra soin de séparer le code Javascript du code HTML. Tout le code Javascript sera regroupé dans un fichier script.php.js

Aide : L'utilisation du framework Javascript Prototype est extrement simple à mettre en place grace au décorateur Pxxo_Widgets_Javascript_Prototype

Conseil: Le but ici n'est pas d'apprendre à faire de l'Ajax. Voici comment déclencher l'action poll de l'objet tout en modifiant l'affichage.

new Ajax.Request('?<?php echo $ClassID ?>=poll', {
    method: 'get',
    onSuccess: function(transport) {
    $('<?php echo $ClassID ?>').update('A voté').setStyle({ background: '#dfd' });
}});

Question 3 : Internationaliser

Utiliser la fonction _po(…) et le répertoire i18n pour rendre le widget multilangues.

Aide: Les fichiers de traductions ressemblent à ceci :

<?php
$GLOBALS['i18n']['label'] = 'traduction';
?>

La correction de cet exercice est disponible ici :

poll.tar.gz

fr/tutorials/exercises/poll.txt · Dernière modification: 2008/03/13 15:56 (édition externe)
 
 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Powered by PHP Driven by DokuWiki
©2003-2008 Pxxo