Improvements
authorx2003bruneau <x2003bruneau@839d8a87-29fc-0310-9880-83ba4fa771e5>
Wed, 6 Dec 2006 17:18:21 +0000 (17:18 +0000)
committerx2003bruneau <x2003bruneau@839d8a87-29fc-0310-9880-83ba4fa771e5>
Wed, 6 Dec 2006 17:18:21 +0000 (17:18 +0000)
git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1249 839d8a87-29fc-0310-9880-83ba4fa771e5

ChangeLog
classes/platal.php
classes/platalpage.php
classes/xnet.php
modules/core.php

index 86ec30f..3b08849 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -25,6 +25,9 @@ New:
 
 Bug/Wish:
 
+    * Core:
+        - #558: Propose a valid URL when getting a 404 error               -FRU
+
     * Emails:
         - #512: Can attach a file                                          -FRU
 
index 4f8a69a..42e743d 100644 (file)
@@ -104,7 +104,7 @@ class Platal
         return null;
     }
 
-    function list_hooks()
+    function near_hook()
     {
         $hooks = array();
         foreach ($this->__hooks as $hook=>$handler) {
@@ -126,10 +126,15 @@ class Platal
         foreach ($p as $k) {
             if (!$ended) {
                 $key = $this->find_nearest_key($k, $place);
+            } else {
+                $key = $k;
             }
-            if ($ended || $key == "#final#") {
+            if ($key == "#final#") {
                 $key = $k;
                 $ended = true;
+                if (!array_key_exists($link, $this->__hooks)) {
+                    return null;
+                }
             }
             if (!is_null($key)) {
                 if (!empty($link)) {
@@ -202,7 +207,6 @@ class Platal
             break;
 
           case PL_NOT_FOUND:
-            $page->assign('near', $this->list_hooks());
             $this->__mods['core']->handler_404($page);
             break;
         }
index d96d415..01ec3b5 100644 (file)
@@ -279,7 +279,9 @@ function form_force_encodings($source, &$smarty)
 function _hide_email($source)
 {
     $source = str_replace("\n", '', $source);
-    return '<script type="text/javascript">Nix.decode("' . addslashes(str_rot13($source)) . '");</script>'; 
+    return '<script type="text/javascript">//<![CDATA[' . "\n" .
+           'Nix.decode("' . addslashes(str_rot13($source)) . '");' . "\n" .
+           '//]]></script>'; 
 }
 
 function hide_emails($source, &$smarty)
index c221c45..c88a8c7 100644 (file)
@@ -48,9 +48,9 @@ class Xnet extends Platal
         return $k;
     }
 
-    function list_hooks()
+    function near_hook()
     {
-        $link = parent::list_hooks();
+        $link = parent::near_hook();
         if (strpos($link, '%grp') !== false) {
             global $globals;
             return str_replace('%grp', $globals->asso('diminutif'), $link);
index 60d52c5..84aaccb 100644 (file)
@@ -47,7 +47,9 @@ class CoreModule extends PLModule
 
     function handler_404(&$page)
     {
+        global $platal;
         header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
+        $page->assign('near', $platal->near_hook());
         $page->changeTpl('404.tpl');
     }