MOD mise en production (pas tout à fait fini)
authorGreg Burri <greg.burri@gmail.com>
Thu, 29 May 2008 18:33:36 +0000 (18:33 +0000)
committerGreg Burri <greg.burri@gmail.com>
Thu, 29 May 2008 18:33:36 +0000 (18:33 +0000)
MOD compatibilité de CSS2 avec le code XHTML

css/2/euphorik.css
css/2/pageMinichat.css
doc/TODO.txt
img/css2/fleche_bulle.png [new file with mode: 0644]
index.html
js/euphorik.js
js/pageAdmin.js
js/pageMinichat.js
sessions/css2.session [new file with mode: 0644]
tools/jsmin.rb
tools/mise_en_prod.rb

index d15acad..a39c3b8 100755 (executable)
@@ -16,7 +16,7 @@ body {
    color: #EEEEEE;\r
    /*text-align: center;*/ /* uniquement pour IE */\r
    background-color: #DFDFDF;\r
-   background-image: url(../../img/css1/fond.png)\r
+   background-image: url(../../img/css2/fond.png)\r
 }\r
 \r
 #container {
@@ -111,7 +111,7 @@ ul#menu {
 
 #logo {
    z-index: 10;
-   background-image: url(../../img/css1/logo_2.png);
+   background-image: url(../../img/css2/logo_2.png);
    width: 253px;
    height: 37px;
    position: absolute;
@@ -174,6 +174,28 @@ div#info .boutons div {
 div#info .boutons div:hover {
        background-color: #bc0000;      
 }
+
+/***** Les infos bulles *****/
+#flecheBulle {
+       position: absolute;
+       z-index: 50;
+       width: 15px;
+       height: 8px;
+       background-image: url(../../img/css2/fleche_bulle.png);
+       display: none
+}
+#messageBulle {
+       position: absolute;
+       z-index: 50;
+       color: #ffffff;
+       background-color: #164200;
+       display: none;
+       font-size: 10px;
+}
+#messageBulle p {
+       padding: 3px 6px;
+}
+
 \r
 .captcha {\r
        display:none\r
index da92691..527f650 100755 (executable)
@@ -89,7 +89,7 @@
 #page.minichat form .return {
        height: 16px;
        width: 32px;
-       background-image: url(../../img/css1/return.png);
+       background-image: url(../../img/css2/return.png);
        background-repeat: no-repeat;
        background-position: 5px 2px;
        vertical-align: top;
@@ -98,7 +98,7 @@
 #page.minichat form .smiles {
        height: 16px;
        width: 16px;
-       background-image: url(../../img/css1/bouton_smiles.png);
+       background-image: url(../../img/css2/bouton_smiles.png);
        background-repeat: no-repeat;
        background-position: 2px 2px;
        vertical-align: top;
    margin-left: 3px;
 }
 
+
+#page.minichat div.message .pseudo:after {
+       content: ":"
+}
+
 #page.minichat div.message .pseudo,
 #page.minichat form .pseudo {
    margin-left: 4px;
 }*/
 
 #page.minichat #conversations .repondA {
-   margin-left: 4px;
-   color: #bd7a11
+   color: #bd7a11;
+   margin-right: 3px;
+}
+
+#page.minichat #conversations .repondA:after {
+       content: ">"
 }
 
 /*#page.minichat #conversations .contenu {
        background-color: #4f5519;
 }
 
+#page.minichat #conversations .extraire:after {
+       content: ">"
+}
+
 #page.minichat #conversations .extraire:hover {
        background-color: #818c27
 }
        background-color: #7d1b1b;
        cursor: pointer;
 }
-
+#page.minichat #conversations .titre .fermer:after {
+       content: "x"
+}
 #page.minichat #conversations .titre .fermer:hover {
        background-color: #c95656
 }      
 #page.minichat #conversations .titre .lien {
        float: right
 }
+#page.minichat #conversations .titre .lien:after {
+       content: "c"
+}
 
 #page.minichat #conversations .titre .lien,
 #page.minichat #conversations .titre .next,
index 5b165f7..ad4ba21 100755 (executable)
@@ -1,13 +1,13 @@
 == TODO ==\r
 \r
 === v1.0 ===\r
-* Rendre compatible IE 7 (pfff..)\r
-* Stocker quelque part la version de la BD\r
-   * Créer une table "proprietes" contenant des tuples {propriete, nom, val}\r
+* Rendre compatible IE 7 (pfff..)
+* Définir la bonne feuille de style au chargement de la page pour éviter le "clignotement" pas beau
+   * Le cookie envoyé par le client doit permettre de retrouver le user\r
 * Finir le script de mise en production\r
    * Make des modules.\r
    * Compactage des js lors de la mise en production (afin d'optimiser la bande passante lors de l'accès au site), regarder comment fait jQuery.\r
-      * Modifier le script pour virer les lignes matchant /^\W*;;;.*$/
+      * Modifier le script pour virer les lignes matchant /^\W*;;.*$/
    * Virer les commentaires dans les pages HTML\r
    * processus :\r
       1) copie des fichiers (+minimisation)\r
 [ok] Créer un style common puis adapter les CSS (classic et cold -> web2.0)\r
    * Alignement du menu, du troll et des trolls de la partie admin à l'aide de line-height
 [ok] Finir les options d'affichage des bulles et des dates
+[ok] Stocker quelque part la version de la BD
+   * Créer une table "proprietes" contenant des tuples {propriete, nom, val}
       
 === Bugs ===
 1 : Critique
diff --git a/img/css2/fleche_bulle.png b/img/css2/fleche_bulle.png
new file mode 100644 (file)
index 0000000..627fed0
Binary files /dev/null and b/img/css2/fleche_bulle.png differ
index c70b03d..dd82f4a 100755 (executable)
@@ -4,7 +4,10 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
 <head>
    <title>euphorik.ch</title>
-   <link id="cssPrincipale" rel="stylesheet" href="css/1/euphorik.css" type="text/css" media="screen" ></link>
+   
+   <link id="cssPrincipale" rel="stylesheet" href="<erl>
+    out(A) -> {html, "css/1/euphorik.css"}.
+   </erl>" type="text/css" media="screen" ></link>
    <link rel="stylesheet" href="css/jquery.lightbox.css" type="text/css" media="screen" ></link>
    <script type="text/javascript" src="js/jquery.js" ></script>
    <script type="text/javascript" src="js/jquery.lightbox.js"></script>
          <ul id="menu">
             <li class="minichat">chat</li><li class="admin" style="display:none">admin</li><li class="profile"></li><li class="register">register</li><li class="logout">logout</li><li class="about">about</li>\r
          </ul>
-         <!-- form action=""  id="formMenuCss">
+         <form action=""  id="formMenuCss">
             <p>
                <select id="menuCss">
-                  <option value="1" selected="selected">Dark</option>
-                  <option value="2">Cold</option>
-                  <option value="3">Classic</option>
+                  <option value="1" selected="selected">Retro</option>
+                  <option value="2">Dark</option>
                </select>
             </p>
-         </form --
+         </form> 
          <div id="page"></div>
          <div id="footer"><a href="http://yaws.hyber.org"><img src="img/powered-by-yaws.gif" alt="powered by Yaws" /></a></div>
       </div>
index ca84a02..a5116ce 100755 (executable)
@@ -771,7 +771,7 @@ Client.prototype.enregistrement = function(login, password)
 
 Client.prototype.connexion = function(messageJson)
 {
-   ;;; dumpObj(messageJson)
+   ;; dumpObj(messageJson)
    thisClient = this
    jQuery.ajax(
       {
@@ -783,7 +783,7 @@ Client.prototype.connexion = function(messageJson)
          success:
             function(data)
             {
-               ;;; dumpObj(data)
+               ;; dumpObj(data)
                if (data["reply"] == "error")
                   thisClient.util.messageDialogue(data["error_message"])
                else
@@ -850,7 +850,7 @@ Client.prototype.flush = function(async)
    var thisClient = this
    var ok = true
    
-   ;;; dumpObj(this.getJSONProfile())
+   ;; dumpObj(this.getJSONProfile())
    jQuery.ajax(
       {
          async: async,
@@ -861,7 +861,7 @@ Client.prototype.flush = function(async)
          success:
             function(data)
             {
-               ;;; dumpObj(data)
+               ;; dumpObj(data)
                if (data["reply"] == "error")
                {
                   thisClient.util.messageDialogue(data["error_message"])
@@ -1028,7 +1028,7 @@ PageEvent.prototype.waitEvent = function(funSend, funReceive)
    for (v in poulpe)
       dataToSend[v] = poulpe[v]
    
-   ;;; dumpObj(dataToSend)
+   ;; dumpObj(dataToSend)
    
    this.attenteCourante = jQuery.ajax({
       type: "POST",
@@ -1038,7 +1038,7 @@ PageEvent.prototype.waitEvent = function(funSend, funReceive)
       success:
          function(data)
          {            
-            ;;; dumpObj(data)
+            ;; dumpObj(data)
             
             funReceive(data)
             
@@ -1076,7 +1076,7 @@ function initialiserListeStyles(client)
 }
             
 // charge dynamiquement le script de debug
-;;; jQuery.ajax({async : false, url : "js/debug.js", dataType : "script"})
+;; jQuery.ajax({async : false, url : "js/debug.js", dataType : "script"})
       \r
 // le main
 $(document).ready(
index 2373cab..faf5f8c 100644 (file)
@@ -91,7 +91,7 @@ PageAdmin.prototype.posterTroll = function()
          "content" : content
       }
 
-   ;;; dumpObj(dataToSend)
+   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -101,7 +101,7 @@ PageAdmin.prototype.posterTroll = function()
          success:
             function(data)
             {
-               ;;; dumpObj(data)
+               ;; dumpObj(data)
                
                if (data["reply"] == "ok")
                {
@@ -132,7 +132,7 @@ PageAdmin.prototype.majIPs = function()
          "cookie" : this.client.cookie
       }
 
-   ;;; dumpObj(dataToSend)
+   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -142,7 +142,7 @@ PageAdmin.prototype.majIPs = function()
          success:
             function(data)
             {
-               ;;; dumpObj(data)
+               ;; dumpObj(data)
                
                if (data["reply"] == "list_banned_ips")
                {
@@ -213,7 +213,7 @@ PageAdmin.prototype.deban = function(ip)
          "ip" : ip
       }
 
-   ;;; dumpObj(dataToSend)
+   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -223,7 +223,7 @@ PageAdmin.prototype.deban = function(ip)
          success:
             function(data)
             {
-               ;;; dumpObj(data)
+               ;; dumpObj(data)
                switch(data["reply"])
                {
                   case "error" :
@@ -402,7 +402,7 @@ Trolls.prototype.modifier = function(id, content)
          "content" : content
       }
 
-   ;;; dumpObj(dataToSend)
+   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -412,7 +412,7 @@ Trolls.prototype.modifier = function(id, content)
          success:
             function(data)
             {
-               ;;; dumpObj(data)
+               ;; dumpObj(data)
                if (data["reply"] == "error")
                {
                   thisTrolls.util.messageDialogue(data["error_message"])
@@ -436,7 +436,7 @@ Trolls.prototype.supprimer = function(id)
          "troll_id" : id
       }
 
-   ;;; dumpObj(dataToSend)
+   ;; dumpObj(dataToSend)
    jQuery.ajax(
       {
          type: "POST",
@@ -446,7 +446,7 @@ Trolls.prototype.supprimer = function(id)
          success:
             function(data)
             {
-               ;;; dumpObj(data)
+               ;; dumpObj(data)
                if (data["reply"] == "error")
                {
                   thisTrolls.util.messageDialogue(data["error_message"])
index 461c924..03bf142 100755 (executable)
@@ -226,7 +226,7 @@ PageMinichat.prototype.envoyerMessage = function(pseudo, message)
       
    this.client.pseudo = pseudo\r
    
-   ;;; dumpObj(this.getJSONMessage(pseudo, message, repondA))\r
+   ;; dumpObj(this.getJSONMessage(pseudo, message, repondA))\r
    jQuery.ajax(\r
       {\r
          url : "request", \r
@@ -239,7 +239,7 @@ PageMinichat.prototype.envoyerMessage = function(pseudo, message)
          },\r
          success : function(data, textStatus)\r
          {
-            ;;; dumpObj(data)
+            ;; dumpObj(data)
          
             if(data["reply"] == "ok")
             {  \r
diff --git a/sessions/css2.session b/sessions/css2.session
new file mode 100644 (file)
index 0000000..6a6b5f0
--- /dev/null
@@ -0,0 +1,17 @@
+# SciTE session file
+
+buffer.1.path=/home/gburri/projets/euphorik/css/2/euphorik.css
+buffer.1.position=1
+buffer.1.current=1
+
+buffer.2.path=/home/gburri/projets/euphorik/css/2/pageAbout.css
+buffer.2.position=1
+
+buffer.3.path=/home/gburri/projets/euphorik/css/2/pageAdmin.css
+buffer.3.position=1
+
+buffer.4.path=/home/gburri/projets/euphorik/css/2/pageMinichat.css
+buffer.4.position=1
+
+buffer.5.path=/home/gburri/projets/euphorik/css/2/pageProfileRegister.css
+buffer.5.position=130
index 00fd804..05a5e7d 100644 (file)
@@ -66,12 +66,14 @@ end
 # peek() is used to see if a '/' is followed by a '/' or '*'.
 def mynext()
     c = get
-    if (c == "/")
-        if(peek == "/")
+    # saute les commentaires (également les lignes commencant pas ;;)
+    if (c == "/" or c == ";")
+       prochain = peek
+        if(prochain  == "/" or prochain == ";")
             while(true)
                 c = get
-                if (c <= "\n")
-                return c
+                if (c[0] <= "\n"[0])
+                  return c
                 end
             end
         end
index fa2923f..356e2f6 100755 (executable)
@@ -1,45 +1,59 @@
-#!/usr/bin/ruby\r
-=begin\r
-Copyright 2008 Grégory Burri\r
-
-This file is part of Euphorik.\r
-\r
-Euphorik is free software: you can redistribute it and/or modify\r
-it under the terms of the GNU General Public License as published by\r
-the Free Software Foundation, either version 3 of the License, or\r
-(at your option) any later version.\r
-\r
-Euphorik is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License\r
-along with Euphorik.  If not, see <http://www.gnu.org/licenses/>.\r
-=end\r
-\r
-
-def copy_files(dest, opt)    
-   `rsync #{opt} index.html #{dest}`
-   `rsync #{opt} -r css #{dest}`
-   `rsync #{opt} -r img #{dest}`
-   #`rsync #{opt} -r js #{dest}`
-   `rsync #{opt} -r lightbox #{dest}`
-   `rsync #{opt} -r modules/include #{dest}/modules`
-   `rsync #{opt} -r modules/ebin #{dest}/modules`
-   `rsync #{opt} -r pages #{dest}`\r
-   \r
-   # copie des js avec minification\r
-   
-end
+#!/usr/bin/ruby
+=begin
+Copyright 2008 Grégory Burri
+
+This file is part of Euphorik.
+
+Euphorik is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Euphorik is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Euphorik.  If not, see <http://www.gnu.org/licenses/>.
+=end
+
 
-if __FILE__ == $0   
-   # la destination
-   $dest = 'gburri@euphorik.ch:/var/www/euphorik'
-   $dest = $*[0] if $*.length > 1
 
-   # les options communes
-   $opt = ''
-   
-   copy_files($dest, $opt)
+### MAKE
+Dir.chdir('../modules')
+puts `make`
+
+### COPIE
+$rep_remote = '/tmp/euphorik' #'/var/www/euphorik'
+$host = 'localhost' #"gburri@euphorik.ch:#{rep_remote}"
+$opt_rsync = ''
+
+def creer_remote_rep(rep)
+   begin
+      `ssh #{$host} "mkdir #{$rep_remote}/#{rep}"`
+   rescue
+   end
 end
+
+creer_remote_rep('BD')
+
+Dir.chdir('..')
+print `rsync #{$opt_rsync} index.html #{$host}:#{$rep_remote}`
+print `rsync #{$opt_rsync} favicon.ico #{$host}:#{$rep_remote}`
+print `rsync #{$opt_rsync} -r css #{$host}:#{$rep_remote}`
+print `rsync #{$opt_rsync} -r --exclude 'autres' img #{$host}:#{$rep_remote}`
+
+# copie des js avec minification
+rep_js = 'js'
+creer_remote_rep(rep_js)
+Dir.entries(rep_js).each{|fichier|
+   if fichier[0..0] != "." and fichier != "debug.js"
+      puts "Minimisation et copie de #{fichier}"
+      print `tools/jsmin.rb < #{rep_js}/#{fichier} | ssh #{$host} "cat > #{$rep_remote}/#{rep_js}/#{fichier}"`
+   end
+}
+
+creer_remote_rep('modules')
+`rsync #{$opt_rsync} -r modules/ebin #{$host}:#{$rep_remote}/modules`
+`rsync #{$opt_rsync} -r pages #{$host}:#{$rep_remote}`