Check html validity asynchronously.
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Fri, 21 Jan 2011 20:30:49 +0000 (21:30 +0100)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Fri, 21 Jan 2011 20:33:35 +0000 (21:33 +0100)
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
classes/plpage.php
modules/core.php

index 49d4955..c7a3006 100644 (file)
@@ -190,21 +190,14 @@ abstract class PlPage extends Smarty
 
         $replc  = "<span class='erreur'>VALIDATION HTML INACTIVE</span><br />";
         if ($globals->debug & DEBUG_VALID) {
+            global $platal;
             $fd = fopen($this->compile_dir."/valid.html","w");
             fwrite($fd, $result);
             fclose($fd);
 
-            exec($globals->spoolroot."/bin/devel/xhtml.validate.pl ".$this->compile_dir."/valid.html", $val);
-            foreach ($val as $h) {
-                if (preg_match("/^X-W3C-Validator-Errors: (\d+)$/", $h, $m)) {
-                    $replc = '<span style="color: #080;">HTML OK</span><br />';
-                    if ($m[1]) {
-                        $replc = "<span class='erreur'><a href='http://validator.w3.org/check?uri={$globals->baseurl}"
-                            ."/valid.html&amp;ss=1#result'>{$m[1]} ERREUR(S) !!!</a></span><br />";
-                    }
-                    break;
-                }
-            }
+            $replc = '<span id="html_valid"><span style="color: #860">VALIDATION HTML EN COURS</span></span>'
+                   . '<script type="text/javascript">$("#html_valid").updateHtml("validator");</script>'
+                   . '<br />';
         }
 
         echo str_replace("@HOOK@", $ttime.$replc, $result);
index f61141f..f3d9386 100644 (file)
@@ -40,6 +40,7 @@ class CoreModule extends PLModule
             'wiki_help'     => $this->make_hook('wiki_help',     AUTH_PUBLIC),
             'wiki_preview'  => $this->make_hook('wiki_preview',  AUTH_COOKIE, 'user', NO_AUTH),
 
+            'validator'     => $this->make_hook('validator',     AUTH_PUBLIC),
             'valid.html'    => $this->make_hook('valid',         AUTH_PUBLIC),
             'favicon.ico'   => $this->make_hook('favicon',       AUTH_PUBLIC),
             'robots.txt'    => $this->make_hook('robotstxt',     AUTH_PUBLIC, 'user', NO_HTTPS),
@@ -52,6 +53,24 @@ class CoreModule extends PLModule
         exit;
     }
 
+    function handler_validator($page)
+    {
+        global $globals;
+        exec($globals->spoolroot."/bin/devel/xhtml.validate.pl ".$page->compile_dir."/valid.html", $val);
+        $url   = "<a href='http://validator.w3.org/check?uri={$globals->baseurl}/valid.html&amp;ss=1#result'>";
+        $replc = '<span style="color: #080;">HTML OK</span>';
+        foreach ($val as $h) {
+            if (preg_match("/^X-W3C-Validator-Errors: (\d+)$/", $h, $m)) {
+                if ($m[1]) {
+                    $replc = "<span class='erreur'>$url{$m[1]} ERREUR(S) !!!</a></span>";
+                }
+                break;
+            }
+        }
+        echo $replc;
+        exit;
+    }
+
     function handler_400(PlPage& $page)
     {
         header($_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request');