Subject in banana 'From' links
[platal.git] / htdocs / javascript / ajax.js
index ec485a7..bc523d8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
+ *  Copyright (C) 2003-2007 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -35,23 +35,32 @@ Ajax = {
                 }
             }
             if (Ajax.xml_client == null) {
-                alert("Ton client ne supporte pas Ajax, nécessaire pour certaines fonctionalités de cette page");
+                alert("Ton client ne supporte pas Ajax, nécessaire pour certaines fonctionalités de cette page");
             }
         }
         Ajax.init = true;
     },
 
-    update_html: function(obj, src)
+    update_html: function(obj, src, func)
     {
         Ajax.prepare_client();
         if (Ajax.xml_client == null) {
             return true;
         }
-        Ajax.xml_client.onreadystatechange =
-            function()
+        Ajax.xml_client.abort();
+        Ajax.xml_client.onreadystatechange = function()
             {
                 if(Ajax.xml_client.readyState == 4) {
-                    document.getElementById(obj).innerHTML = Ajax.xml_client.responseText;
+                    if (Ajax.xml_client.status == 200) {
+                       if (obj != null) {
+                               document.getElementById(obj).innerHTML = Ajax.xml_client.responseText;
+                        }
+                        if (func != null) {
+                               func(Ajax.xml_client.responseText);
+                       }
+                    } else if (Ajax.xml_client.status == 403) {
+                        window.location.reload();
+                    }
                 }
             };
         Ajax.xml_client.open ('GET', src, true);
@@ -60,3 +69,60 @@ Ajax = {
     }
 }
 
+var currentTempMessage = 0;
+function setOpacity(obj, opacity)
+{
+  opacity = (opacity == 100)?99:opacity;
+  // IE
+  obj.style.filter = "alpha(opacity:"+opacity+")";
+  // Safari < 1.2, Konqueror
+  obj.style.KHTMLOpacity = opacity/100;
+  // Old Mozilla
+  obj.style.MozOpacity = opacity/100;
+  // Safari >= 1.2, Firefox and Mozilla, CSS3
+  obj.style.opacity = opacity/100
+}
+
+function _showTempMessage(id, state, back)
+{
+    var obj = document.getElementById(id);
+    if (currentTempMessage != state) {
+        return;
+    }   
+    setOpacity(obj, back * 5);
+    if (back > 0) {
+        setTimeout("_showTempMessage('" + id + "', " + currentTempMessage + "," + (back-1) + ")", 100);
+    } else {
+        obj.innerHTML = "";
+    }
+}
+
+function showTempMessage(id, message, success)
+{
+    var obj = document.getElementById(id);
+    obj.innerHTML = (success ? "<img src='images/icons/wand.gif' alt='' /> "
+                             : "<img src='images/icons/error.gif' alt='' /> ") + message;
+    obj.style.fontWeight = "bold";
+    obj.style.color = (success ? "green" : "red");;
+    currentTempMessage++;
+    setOpacity(obj, 100);
+    setTimeout("_showTempMessage('" + id + "', " + currentTempMessage + ", 20)", 700);
+}
+
+function previewWiki(idFrom, idTo, withTitle, idShow)
+{
+    var text = encodeURIComponent(document.getElementById(idFrom).value);
+    if (text == "") {
+        return false;
+    }   
+    var url  = "wiki_preview";
+    if (!withTitle) {
+        url += "/notitle";
+    }   
+    Ajax.update_html(idTo, url + "?text=" + text);
+    if (idShow != null) {
+        document.getElementById(idShow).style.display = "";
+    }   
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: