ADD commande /cpf (C'est pas faux)
authorGreg Burri <greg.burri@gmail.com>
Sat, 4 Oct 2008 23:26:17 +0000 (23:26 +0000)
committerGreg Burri <greg.burri@gmail.com>
Sat, 4 Oct 2008 23:26:17 +0000 (23:26 +0000)
ADD aide sur les commandes : /aide, /help

js/betterjs.js
js/pageMinichat/commandes.js
js/pageMinichat/pageMinichat.js
js/util.js
styles/1/pageMinichat.css
styles/2/pageMinichat.css

index 69788d8..d982030 100644 (file)
@@ -1,3 +1,4 @@
+// coding: utf-8
 // tout un tas d'améliorations de JavaScript ;)
 
 
index f49ce9a..014b9bb 100644 (file)
   *  /nick <nouveau nick>
   *  Modifie le pseudo courant
   */
-euphorik.Commandes = function(client) {
+euphorik.Commandes = function(client, pageMinichat, util, formateur) {
+   var thisCommandes = this;
+
    this.client = client;
+   this.pageMinichat = pageMinichat;
+   this.util = util;
+   this.formateur = formateur;
+   
+   // construction du texte d'aide (liste des commandes) de manière statique
+   this.texteAide = "<div id=\"aideCommandes\"><h1>Commandes</h1><ul>";
+   objectEach(
+      euphorik.Commandes.liste,
+      function(nom, commande) {
+         thisCommandes.texteAide += "<li><span class=\"usage\">" + thisCommandes.formateur.traitementComplet(commande.usage) + "</span> : " + thisCommandes.formateur.traitementComplet(commande.description) + "</li>";
+      }
+   );
+   this.texteAide += "</ul></div>";
 };
 
 euphorik.Commandes.statut = {ok : 0, pas_une_commande : 1, erreur_commande : 2};
 
 euphorik.Commandes.liste = {
    "nick" : {
+      description : "Change le pseudo courant",
       usage : "/nick <nouveau pseudo>",
       exec : function(args, client) {
          
@@ -47,7 +63,15 @@ euphorik.Commandes.liste = {
    
          return [euphorik.Commandes.statut.ok, ''];
       }
-   }      
+   },
+   "cpf" : {
+      description : "Envoie le message \"C'est pas faux\"",
+      usage : "/cpf",
+      exec : function(args, client, pageMinichat) {
+         pageMinichat.envoyerMessage("C'est pas faux");
+         return [euphorik.Commandes.statut.ok, ''];
+      }
+   }
 };
 
 /**
@@ -68,9 +92,20 @@ euphorik.Commandes.prototype.exec = function(chaine) {
    if (nomCommande === "") {
       return [euphorik.Commandes.statut.erreur_commande, 'La commande est vide'];
    }
+   // commandes spéciales pour afficher l'aide : "?", "h", "help", "aide"
+   if (nomCommande === "?" || nomCommande === "h" || nomCommande === "help" || nomCommande === "aide") {
+      this.util.messageDialogue(
+         this.texteAide,
+         euphorik.Util.messageType.informatif,
+         {"fermer" : function(){}},
+         false,
+         -1
+      );
+      return [euphorik.Commandes.statut.ok, ''];
+   }
    
    if (euphorik.Commandes.liste.hasOwnProperty(nomCommande)) {
-      return euphorik.Commandes.liste[nomCommande].exec(args, this.client);
+      return euphorik.Commandes.liste[nomCommande].exec(args, this.client, this.pageMinichat);
    }
    
    return [euphorik.Commandes.statut.erreur_commande, 'La commande /' + nomCommande + ' est inconnue'];
index 00d1b89..6a2706f 100755 (executable)
@@ -25,7 +25,7 @@ euphorik.PageMinichat = function(client, formateur, util, communication) {
    this.formateur = formateur;
    this.util = util;
    this.communication = communication;
-   this.commandes = new euphorik.Commandes(this.client);
+   this.commandes = new euphorik.Commandes(this.client, this, this.util, this.formateur);
    
    // permet d'éviter d'envoyer plusieurs messages simultanément en pressant
    // rapidement sur "enter" par exemple
@@ -163,7 +163,7 @@ euphorik.PageMinichat.prototype.charger = function() {
          var retCommandes = thisPage.commandes.exec(message);         
          switch (retCommandes[0]) {
             case euphorik.Commandes.statut.pas_une_commande :
-               thisPage.envoyerMessage($("form#posterMessage input.pseudo").val(), message);
+               thisPage.envoyerMessage(message);
                break;
             case euphorik.Commandes.statut.erreur_commande :
                thisPage.util.messageDialogue(retCommandes[1], euphorik.Util.messageType.erreur);
@@ -223,8 +223,13 @@ euphorik.PageMinichat.prototype.decharger = function() {
     this.fragment.delVal("conv")
 };
 
-euphorik.PageMinichat.prototype.envoyerMessage = function(pseudo, message) {   
-   var thisPageMinichat = this;
+/**
+  * Envoie un nouve message donné, le pseudo utilisé est celui se trouvant
+  * dans la zone de saisie (form#posterMessage input.pseudo).
+  */
+euphorik.PageMinichat.prototype.envoyerMessage = function(message) {   
+   var thisPageMinichat = this;   
+   var pseudo = $("form#posterMessage input.pseudo").val();
 
    // (un pseudo vide est autorisé)
    pseudo = this.formateur.filtrerInputPseudo(pseudo);
index 2c66959..fe36b47 100644 (file)
@@ -43,14 +43,16 @@ euphorik.Util.messageType = {informatif: 0, question: 1, erreur: 2};
   * @param message le message (string)\r
   * @param type voir 'messageType'. par défaut messageType.informatif\r
   * @param les boutons sous la forme d'un objet ou les clefs sont les labels des boutons\r
-  *        et les valeurs les fonctions executées lorsqu'un bouton est activé.\r
-  * @param formate faut-il formaté le message ? true par défaut\r
+  *        et les valeurs les fonctions executées lorsqu'un bouton est activé.
+  *        Lorsqu'un bouton est activé le message se ferme.     \r
+  * @param formate faut-il formaté le message ? true par défaut
+  * @param temps le temps d'affichage du message en seconde, -1 pour une durée infinie\r
   */\r
-euphorik.Util.prototype.messageDialogue = function(message, type, boutons, formate) {\r
+euphorik.Util.prototype.messageDialogue = function(message, type, boutons, formate, temps) {\r
    var thisUtil = this;\r
 \r
    type = type || euphorik.Util.messageType.informatif;\r
-   formate = formate || true;\r
+   formate = formate === undefined ? true : formate;\r
 \r
    if (this.timeoutMessageDialogue) {\r
       clearTimeout(this.timeoutMessageDialogue);\r
@@ -58,7 +60,7 @@ euphorik.Util.prototype.messageDialogue = function(message, type, boutons, forma
       \r
    var fermer = function() { $("#info").slideUp(100); };\r
    fermer();\r
-   \r
+\r
    $("#info .message").html(!thisUtil.formateur || !formate ? message : thisUtil.formateur.traitementComplet(message));\r
    \r
    switch(type) {\r
@@ -72,8 +74,9 @@ euphorik.Util.prototype.messageDialogue = function(message, type, boutons, forma
       $("#info .boutons").append("<div>" + nom + "</div>").find("div:last").click(bouton).click(fermer);\r
    });\r
    \r
-   $("#info").slideDown(200);\r
-   this.timeoutMessageDialogue = setTimeout(fermer, euphorik.conf.tempsAffichageMessageDialogue);\r
+   $("#info").slideDown(200);
+   if (temps !== -1)\r
+      this.timeoutMessageDialogue = setTimeout(fermer, temps || euphorik.conf.tempsAffichageMessageDialogue);\r
 };\r
 \r
 euphorik.Util.positionTypeX = {gauche: 0, gaucheRecouvrement: 1, centre: 2, droiteRecouvrement: 3, droite: 4};\r
index ec1f2f2..de908dd 100755 (executable)
@@ -9,6 +9,18 @@
        vertical-align: middle;
 }
 
+/***** L'aide sur les commandes *****/
+#aideCommandes h1 {
+       font-size: 14px;
+       font-weight: bold;
+}
+#aideCommandes .usage {
+       font-weight: bold;
+}
+#aideCommandes li {
+       list-style-type: none;
+}
+
 /***** La boite de sélection des smiles *****/
 #smiles {
        text-align: center;
index 633ff61..67b4d58 100755 (executable)
        vertical-align: middle;
 }
 
+/***** L'aide sur les commandes *****/
+#aideCommandes h1 {
+       font-size: 14px;
+       font-weight: bold;
+}
+#aideCommandes .usage {
+       font-weight: bold;
+}
+#aideCommandes li {
+       list-style-type: none;
+}
+
 /***** La boite de sélection des smiles *****/
 #smiles {
        text-align: center;