ADD #143 (80%)
authorGreg Burri <greg.burri@gmail.com>
Mon, 21 Sep 2009 20:59:28 +0000 (22:59 +0200)
committerGreg Burri <greg.burri@gmail.com>
Mon, 21 Sep 2009 20:59:28 +0000 (22:59 +0200)
css/style.css
index.php
js/cl7.js
php/controller.php
php/pages/inscription.php
php/pages/jeux_joues.php
php/participant.php
php/update_db.php

index 86de936..63c475b 100644 (file)
@@ -133,9 +133,19 @@ ul#menu {
 #contenu col#inscriptionColonneValeur {
    width: 70%;
 }
-#contenu #formulaireJeuxJoues .aVote {
+#contenu #formulaireJeuxJoues .aVote, #contenu #formulaireJeuxJoues .aVote a {
    color: #ffff00;
 }
+#contenu #formulaireJeuxJoues a {
+       padding-right: 12px;
+       background:transparent url(../images/lien_externe.png) no-repeat scroll right center;
+}
+#contenu #formulaireJeuxJoues .aVote a {
+       color: #ffff00;
+}
+#contenu #formulaireJeuxJoues .aVote a:hover {
+   color: #ffffaa;
+}
 #contenu #formulaireInscription p {
        margin-top: 1px;
        margin-bottom: 0px;
@@ -195,6 +205,10 @@ form textarea:hover, form textarea:focus {
    border: #ffff00 1px solid;
 }
 
+form input.info {
+   color: #999999;
+}
+
 /***** La boite d'information (s'apparente à une MessageBox) *****/
 div#info {
        text-align: center;
index eb24013..3025188 100644 (file)
--- a/index.php
+++ b/index.php
@@ -50,6 +50,7 @@ echo '<?xml version="1.0" encoding="UTF-8"?>';
       echo '<meta name="cout_total" content="'.$config->get('cout_total').'" />';
       $nbPeriodes = pg_fetch_array(pg_query("SELECT COUNT(*) FROM periodes"));
       echo '<meta name="nb_periodes" content="'. $nbPeriodes[0] .'" />';
+      echo '<meta name="estLogge" content="'. $participant->existe() .'" />';
    ?>
    <title>Corcelles-Lan 8</title>
    <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" ></link>
index f66218c..208322a 100644 (file)
--- a/js/cl7.js
+++ b/js/cl7.js
@@ -7,11 +7,13 @@
 var cl7 = {};
 
 cl7.verification_formulaire_inscription = function(util) {
+   var estLogge = $('meta[name="estLogge"]').attr('content');
+      
    if ($('#formulaireInscription input[name="pseudo"]').val() === "") {
       util.messageDialogue("Le pseudo ne peut pas être vide");
       return false;
    }\r
-   if ($('#formulaireInscription input[name="pass1"]').val() === "" &&\r
+   if (!estLogge && $('#formulaireInscription input[name="pass1"]').val() === "" &&\r
       $('#formulaireInscription input[name="pass2"]').val() === "") {\r
       util.messageDialogue("Le password ne peut pas être vide");\r
       return false;   \r
@@ -20,7 +22,7 @@ cl7.verification_formulaire_inscription = function(util) {
       util.messageDialogue("Les passwords ne correspondent pas");\r
       return false;   \r
    }\r
-   if ($('#formulaireInscription input[name="pass1"]').val().length < 3) {\r
+   if ((!estLogge || $('#formulaireInscription input[name="pass1"]').val() != '') && $('#formulaireInscription input[name="pass1"]').val().length < 3) {\r
       util.messageDialogue("La taille de password doit être d'au moins 3 caractères");\r
       return false;\r
    }\r
@@ -61,15 +63,19 @@ cl7.maj_prix_inscription = function() {
 $(document).ready(
    function() { 
       var util = new cl7.Util();
+      
+      // Check du formulaire d'inscription.
       $('form#formulaireInscription').submit(function() {
          return cl7.verification_formulaire_inscription(util);
       });
       
+      // Affichage d'un message si disponible au chargement de la page.
       var messageUtilisateur = $('meta[name="messageUtilisateur"]').attr('content');
       if (messageUtilisateur !== undefined) {
          util.messageDialogue(messageUtilisateur);
       }
-         \r
+      
+      // Met à jour les champs en rapport avec le clan existant choisi.\r
       $('form#formulaireInscription select[name="clanChoix"]').change(function() {         \r
          if ($(this).val() === '0') {\r
             return;\r
@@ -89,7 +95,7 @@ $(document).ready(
       // met à jour le prix d'inscription
       cl7.maj_prix_inscription();\r
       \r
-      // permet d'éviter de faire plus de choix qu'il n'en faut sur la page des jeux joués\r
+      // Permet d'éviter de faire plus de choix qu'il n'en faut sur la page des jeux joués.\r
       var nbVotesMax = 3;\r
       var coches = [];\r
       $('#formulaireJeuxJoues input[name="votes[]"]:checked').each(function() {\r
@@ -110,5 +116,25 @@ $(document).ready(
             }\r
          }\r
       });
+      
+      // Enlève ou affiche les informations (p.e. '<nom>') concernant les champs des formulaires.
+      $('form input.info').focus(function() {
+         if (!$(this).hasClass('info'))
+            return;
+            
+         var value = $(this).val();         
+         $(this).blur(function() {
+            if ($(this).val().trim() === '') {
+               $(this).val(value).addClass('info');
+               $(this).unbind('blur');
+            }
+         });         
+            
+         $(this).val('').removeClass('info');
+      });
+      
+      $('form').submit(function() {
+         $('input.info', this).val('');
+      });
    }
 );
index 41381ac..a42051a 100644 (file)
@@ -62,7 +62,7 @@ class Controller
             $this->set_periodes($id);
             pg_query("COMMIT");
          
-            $this->participant = new participant($_POST['pseudo'], $_POST['pass1']);
+            $this->participant->chargerInfos($_POST['pseudo'], $_POST['pass1']);
             setcookie("COOKIE_INFO_PARTICIPANT", $this->participant->info->id, time() + 31104000);
             $this->nouvel_inscrit = TRUE;
          }
@@ -74,11 +74,12 @@ class Controller
             return;
 
          $this->traiter_donnees_inscription();
-         if (!$this->login_deja_pris() && $this->donnees_inscription_valides())
+         if (!$this->login_deja_pris() && $this->donnees_inscription_valides(true))
          {
             pg_query("BEGIN");
             pg_query_params("UPDATE participants SET pseudo = $1 WHERE id = $2", array($_POST['pseudo'], $this->participant->info->id));
-            pg_query_params("UPDATE participants SET password = $1 WHERE id = $2", array(sha1($_POST['pass1']), $this->participant->info->id));
+            if ($_POST['pass1'] != '') // Uniquement si un nouveau password est donné.
+               pg_query_params("UPDATE participants SET password = $1 WHERE id = $2", array(sha1($_POST['pass1']), $this->participant->info->id));
             pg_query_params("UPDATE participants SET clan_nom = $1 WHERE id = $2", array($_POST['clan_nom'], $this->participant->info->id));
             pg_query_params("UPDATE participants SET clan_tag = $1 WHERE id = $2", array($_POST['clan_tag'], $this->participant->info->id));
             pg_query_params("UPDATE participants SET nom = $1 WHERE id = $2", array($_POST['nom'], $this->participant->info->id));
@@ -108,7 +109,7 @@ class Controller
          $jeu = trim($_POST['jeu']);
          if ($jeu !== '')
          {
-            if(@pg_query_params("INSERT INTO jeux (nom) VALUES ($1)", array($jeu)))
+            if(@pg_query_params("INSERT INTO jeux (participant_id, nom, type, url) VALUES ($1, $2, $3, $4)", array($this->participant->info->id, $jeu, $_POST['type'], $_POST['url'])))
             {                      
                $row = pg_fetch_row(pg_query("SELECT LASTVAL()"));
                $id = $row[0];
@@ -163,14 +164,15 @@ class Controller
 
    /**
      * Renvoie TRUE si les données d'une inscription sont valides (POST).
+     * $maj : égal 'TRUE' si c'est une mise à jour, dans ce cas le password est traité différement
      */
-   private function donnees_inscription_valides()
+   private function donnees_inscription_valides($maj = FALSE)
    {
       return
-         $_POST['pseudo'] != "" &&
-         $_POST['pass1'] != "" &&
+         $_POST['pseudo'] != "" &&         
+         ($maj || $_POST['pass1'] != "") &&
          $_POST['pass1'] == $_POST['pass2'] &&
-         strlen($_POST['pass1']) >= 3 &&
+         (($maj && $_POST['pass1'] == "") || strlen($_POST['pass1']) >= 3) &&
          $_POST['nom'] != "" &&
          $_POST['prenom'] != "" &&
          $_POST['e_mail'] != "";
index dd603ac..e858b9a 100644 (file)
@@ -37,8 +37,8 @@ else
          password <span class="miniInfo">(pour pouvoir par la suite modifier mes infos)</span>
       </td>
       <td>
-         <input type="password" size="10" maxlength="10" name="pass1" value="<?=$participant->existe() ? $participant->info->password : $_POST["pass1"]?>" />
-         re: <input type="password" maxlength="10" size="10" name="pass2" value="<?=$participant->existe() ? $participant->info->password : $_POST["pass2"]?>" /> 
+         <input type="password" size="10" maxlength="10" name="pass1" value="<?=$participant->existe() ? '': $_POST["pass1"]?>" />
+         re: <input type="password" maxlength="10" size="10" name="pass2" value="<?=$participant->existe() ? '' : $_POST["pass2"]?>" /> 
       </td>
    </tr>
    <tr>
index 9c531ec..276c8f5 100644 (file)
@@ -17,7 +17,7 @@ echo '
 <form id="formulaireJeuxJoues" method="post" action="index.php?page=jeux_joues">\r
    <p><input type="hidden" name="set_jeux_joues" value="1" /></p>\r
    <table>\r
-      <tr>', ($vote_possible ? '<th></th>' : ''), '<th>Votes</th><th>Jeux</th></tr>';\r
+      <tr>', ($vote_possible ? '<th></th>' : ''), '<th>Votes</th><th>Nom</th><th>Type</th><th></th></tr>';\r
 
 # /!\ Attention, requête un poil tricky :
 # On souhait avoir une liste des jeux joués avec pour chaque tuple :
@@ -28,12 +28,14 @@ $jeux_query = pg_query("
    SELECT 
       jeux.id,
       jeux.nom,
+      jeux.type,
+      jeux.url,
       array_agg(jeux_choisis.participant_id) AS participants,
       (COUNT(*) + (CASE WHEN bool_and(jeux_choisis.participant_id is null) THEN -1 ELSE 0 END)) as nb_vote
    FROM 
       jeux 
       LEFT JOIN jeux_choisis ON jeux.id = jeux_choisis.jeu_id
-   GROUP BY jeux.id, jeux.nom  
+   GROUP BY jeux.id, jeux.nom, jeux.type, jeux.url
    ORDER BY nb_vote DESC, jeux.nom\r
 ");\r
    \r
@@ -50,11 +52,15 @@ while ($jeu = pg_fetch_object($jeux_query))
       
       $a_vote = in_array($participant->info->id, $participants);\r
    }\r
+   
+   $a_url = preg_match('/^https?:\/\/.+$/', $jeu->url);
    \r
    echo '<tr>',\r
       $vote_possible ? '<td><input type="checkbox" name="votes[]" '. ($a_vote ? 'checked="checked"' : '') .' value="'.$jeu->id.'" /></td>' : '',\r
       '<td>' . $jeu->nb_vote . '</td>',\r
-      '<td ' . ($a_vote ? 'class="aVote" ': '').'>' . traitement_pre_affichage($jeu->nom) . '</td></tr>';\r
+      '<td ' . ($a_vote ? 'class="aVote" ': '').'>' . ($a_url ? '<a href="'. htmlentities($jeu->url) .'">' : '') . traitement_pre_affichage($jeu->nom) . ($a_url ? '</a>' : '') . '</td>',
+      '<td ' . ($a_vote ? 'class="aVote" ': '').'>' . traitement_pre_affichage($jeu->type) . '</td>',
+      '<td>x</td></tr>';\r
 }\r
 \r
 echo '\r
@@ -62,7 +68,11 @@ echo '
 \r
 if ($vote_possible)\r
    echo '\r
-   <p>Autre : <input type="text" maxlength="50" name="jeu" /></p>\r
+   <p>Ajouter : 
+      <input class="info" type="text" size="20" maxlength="50" name="jeu" value="<nom>" >
+      <input class="info" type="text" size="10" maxlength="100" name="type" value="<type>" />
+      <input class="info" type="text" size="20" maxlength="200" name="url" value="<URL>" />
+   </p>\r
    <p><input type="submit" value="Voter" /></p>';\r
    \r
 echo '</form>';\r
index e2b47be..e940f74 100644 (file)
@@ -20,6 +20,19 @@ class Participant
      */
    public function Participant($v1=NULL, $v2=NULL)
    {      
+      $this->authentifier($v1, $v2);
+       }
+   
+   /**
+     * Est-ce que le participant existe ? C-à-d qu'il est inscrit.
+     */
+   public function existe()
+   {
+      return $this->id != 0;
+   }
+   
+   private function authentifier($v1=NULL, $v2=NULL)
+   {
       # Aucunes valeurs transmise => ce n'est pas un participant valide.
           if ($v1 == NULL && $v2 == NULL) 
          return;
@@ -36,18 +49,12 @@ class Participant
          $this->id = pg_fetch_object($res)->id;
          $this->chargerInfos();
       }
-       }
-   
-   /**
-     * Est-ce que le participant existe ? C-à-d qu'il est inscrit.
-     */
-   public function existe()
-   {
-      return $this->id != 0;
    }
    
-   public function chargerInfos()
+   public function chargerInfos($v1=NULL, $v2=NULL)
    {
+      $this->authentifier($v1, $v2);
+   
       if (!$this->existe())
          return;
          
index a2d9ffe..969f8a1 100644 (file)
@@ -26,14 +26,6 @@ function creer_db()
         PRIMARY KEY  (id)
       );
    ");
-   pg_query("
-      CREATE TABLE jeux (
-        id serial NOT NULL,
-        nom varchar(200) NOT NULL,
-        PRIMARY KEY (id),
-        UNIQUE (nom)
-      );
-   ");
    // participants.password est un hash calculé à l'aide de sha1().
    pg_query("
       CREATE TABLE participants (
@@ -56,6 +48,18 @@ function creer_db()
         FOREIGN KEY (pizza) REFERENCES pizzas (id) ON DELETE SET NULL ON UPDATE SET NULL
       );
    ");
+   pg_query("
+      CREATE TABLE jeux (
+        id serial NOT NULL,
+        participant_id int default NULL,
+        nom varchar(200) NOT NULL,
+        type varchar(100) DEFAULT NULL,
+        url varchar(200) DEFAULT NULL,
+        PRIMARY KEY (id),
+        UNIQUE (nom),
+        FOREIGN KEY (participant_id) REFERENCES participants (id) ON DELETE SET NULL ON UPDATE SET NULL
+      );
+   ");
    pg_query("
       CREATE TABLE jeux_choisis (
         participant_id int NOT NULL,