More robust tab structure
authorx2003bruneau <x2003bruneau@9869982d-c50d-0410-be91-f2a2ec7c7c7b>
Sat, 15 Jul 2006 16:38:50 +0000 (16:38 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Fri, 4 Jan 2008 23:35:01 +0000 (00:35 +0100)
git-svn-id: svn+ssh://murphy/home/svn/banana/trunk@111 9869982d-c50d-0410-be91-f2a2ec7c7c7b

banana/banana.inc.php.in
banana/misc.inc.php

index 61cc777..2cb894c 100644 (file)
@@ -115,15 +115,17 @@ class Banana
         }
 
         if (!$banana->nntp) {
-            return '<p class="error">'._b_('Impossible de contacter le serveur').'</p>';
+            $banana->state['page'] = 'error';
+            return makeTable('<p class="error">'._b_('Impossible de contacter le serveur').'</p>');
         }
 
         $group  = empty($banana->get['group']) ? null : $banana->get['group'];
         if (!is_null($group)
                 &&  isset($banana->grp_pattern) && !preg_match('/' . $banana->grp_pattern . '/', $group)) {
-            return '<p class="error">'
+            $banana->state['page'] = 'error';
+            return makeTable('<p class="error">'
                     . $group . _b_(' : ce newsgroup n\'existe pas ou vous n\'avez pas l\'autorisation d\'y accéder')
-                    . '</p>';
+                    . '</p>');
         }
         $artid  = empty($banana->get['artid']) ? null : strtolower($banana->get['artid']);
         $partid = !isset($banana->get['part']) ? -1 : $banana->get['part'];
@@ -132,18 +134,22 @@ class Banana
 
         if (is_null($group)) {
             if (isset($banana->get['subscribe'])) {
+                $banana->state['page'] = 'subscribe';
                 return makeTable($banana->action_listSubs());
             } elseif (isset($_POST['validsubs'])) {
                 $banana->action_saveSubs();
             }
+            $banana->state['page'] = 'forums';
             return makeTable($banana->action_listGroups());
 
         } elseif (is_null($artid)) {
             if (isset($_POST['action']) && $_POST['action'] == 'new') {
                 return makeTable($banana->action_doFup($group, isset($_POST['artid']) ? intval($_POST['artid']) : -1));
             } elseif ($action == 'new') {
+                $banana->state['page'] = 'action';
                 return makeTable($banana->action_newFup($group));
             } else {
+                $banana->state['page'] = 'group';
                 return makeTable($banana->action_showThread($group, isset($banana->get['first']) ? intval($banana->get['first']) : 1));
             }
 
@@ -155,6 +161,7 @@ class Banana
             }
 
             if (!is_null($action)) {
+                $banana->state['page'] = 'action';
                 switch ($action) {
                     case 'cancel':
                         $res .= $banana->action_showArticle($group, $artid, $partid);
@@ -185,6 +192,7 @@ class Banana
                 return makeTable($res . $att);
             }
             
+            $banana->state['page'] = 'message';
             return makeTable($banana->action_showArticle($group, $artid, $partid));
         }
     }
index 09cd285..c91dba9 100644 (file)
@@ -380,52 +380,56 @@ function formatFrom($text) {
     return preg_replace("/\\\(\(|\))/","\\1",$result);
 }
 
+function makeTab($link, $text)
+{
+    return Array(makeHREF($link, $text),
+                 $text);
+}
+
 function displayTabs()
 {
     global $banana;
     extract($banana->state);
-    
-    $res  = Array();
     if (function_exists('hook_shortcuts') && $cstm = hook_shortcuts()) {
         $res = $cstm;
     }
  
-    array_push($res,
-               makeHREF(Array('subscribe' => 1), _b_('Abonnements')),
-               is_null($group) ? Array(_b_('Les forums'), true) : makeHREF(Array(), _b_('Les forums')));
+    $res['subscribe'] = makeTab(Array('subscribe' => 1), _b_('Abonnements'));
+    $res['forums']    = makeTab(Array(), _b_('Les forums'));
 
     if (!is_null($group)) {
-        $grplink = makeHREF(Array('group' => $group), $group);
-        $grpcur  = Array($group, true);
+        $res['group'] = makeTab(Array('group' => $group), $group);
         if (is_null($artid)) {
             if (@$action == 'new') {
-                array_push($res, $grplink, Array(_b_('Nouveau Message'), true));
-            } else {
-                array_push($res, $grpcur);
+                $res['action'] = makeTab(Array('group'  => $group,
+                                               'action' => 'new'),
+                                         _b_('Nouveau Message'));
             }
         } else {
+            $res['message'] = makeTab(Array('group' => $group,
+                                            'artid' => $artid),
+                                      _b_('Message'));
             if (!is_null($action)) {
-                array_push($res,
-                           $grplink,
-                           makeHREF(Array('group' => $group,
-                                          'artid' => $artid),
-                                    _b_('Message')));
                 if ($action == 'new') {
-                    array_push($res, Array(_b_('Répondre'), true));
+                    $res['action'] = makeTab(Array('group'  => $group,
+                                                   'artid'  => $artid,
+                                                   'action' => 'new'),
+                                             _b_('Réponse'));
                 } elseif ($action == 'cancel') {
-                    array_push($res, Array(_b_('Annuler'), true));
+                    $res['action'] = makeTab(Array('group'  => $group,
+                                                   'artid'  => $artid,
+                                                   'action' => 'cancel'),
+                                             _b_('Annuler'));
                 }
-            } else {
-                array_push($res, $grplink, Array(_b_('Message'), true));
             }
         }
     }
     $ret = '<ul id="onglet">';
-    foreach ($res as $onglet) {
-        if (is_string($onglet)) {
-            $ret .= '<li>' . $onglet . '</li>';
+    foreach ($res as $name=>$onglet) {
+        if ($name != $page) {
+            $ret .= '<li>' . $onglet[0] . '</li>';
         } else {
-            $ret .= '<li class="actif">' . $onglet[0] . '</li>';
+            $ret .= '<li class="actif">' . $onglet[1] . '</li>';
         }
     }
     $ret .= '</ul>';
@@ -461,7 +465,7 @@ function displayPages($first = -1)
 
 function makeTable($text)
 {
-    return '<table class="cadre_a_onglet" cellpadding="0" cellspacing="0">'
+    return '<table class="cadre_a_onglet" cellpadding="0" cellspacing="0" width="100%">'
          . '<tr><td>'
          . displayTabs()
          . '</td></tr>'