From: x2003bruneau
Date: Sat, 15 Jul 2006 16:38:50 +0000 (+0000)
Subject: More robust tab structure
X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=ca52cc4c60af1dd3bd78dc388d68ef0c4636fa43;p=banana.git
More robust tab structure
git-svn-id: svn+ssh://murphy/home/svn/banana/trunk@111 9869982d-c50d-0410-be91-f2a2ec7c7c7b
---
diff --git a/banana/banana.inc.php.in b/banana/banana.inc.php.in
index 61cc777..2cb894c 100644
--- a/banana/banana.inc.php.in
+++ b/banana/banana.inc.php.in
@@ -115,15 +115,17 @@ class Banana
}
if (!$banana->nntp) {
- return ''._b_('Impossible de contacter le serveur').'
';
+ $banana->state['page'] = 'error';
+ return makeTable(''._b_('Impossible de contacter le serveur').'
');
}
$group = empty($banana->get['group']) ? null : $banana->get['group'];
if (!is_null($group)
&& isset($banana->grp_pattern) && !preg_match('/' . $banana->grp_pattern . '/', $group)) {
- return ''
+ $banana->state['page'] = 'error';
+ return makeTable('
'
. $group . _b_(' : ce newsgroup n\'existe pas ou vous n\'avez pas l\'autorisation d\'y accéder')
- . '
';
+ . '
');
}
$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));
}
}
diff --git a/banana/misc.inc.php b/banana/misc.inc.php
index 09cd285..c91dba9 100644
--- a/banana/misc.inc.php
+++ b/banana/misc.inc.php
@@ -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 = '';
- foreach ($res as $onglet) {
- if (is_string($onglet)) {
- $ret .= '- ' . $onglet . '
';
+ foreach ($res as $name=>$onglet) {
+ if ($name != $page) {
+ $ret .= '- ' . $onglet[0] . '
';
} else {
- $ret .= '- ' . $onglet[0] . '
';
+ $ret .= '- ' . $onglet[1] . '
';
}
}
$ret .= '
';
@@ -461,7 +465,7 @@ function displayPages($first = -1)
function makeTable($text)
{
- return ''
+ return ''
. ''
. displayTabs()
. ' |
'