r2085 + use __FILE__ throughout showError() calls not enclosed into any function
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 29 Jul 2008 12:30:34 +0000 (12:30 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 29 Jul 2008 12:30:34 +0000 (12:30 +0000)
+ implement SHOW_LAST_TAB option (ticket:153)

ChangeLog
inc/init.php
inc/interface.php
index.php
install/init-dictbase.sql
process.php
upgrade.php

index 5a736af..0835a6c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
        new feature: allow pre-selected tags for newly added virtual services and RS pools
        new feature: cache RackCode parse tree for better performance
        new feature: tag names in the IPv4 address space
+       new feature: optionally remember the last tab for each page
        bugfix: don't escape Greek letters to enable them in tag names
        bugfix: port manager messages were incorrect
        bugfix: shorten URLs to enable longer message logs
index 1e309a8..68f1f40 100644 (file)
@@ -31,7 +31,8 @@ else
        (
                "Database connection parameters are read from inc/secret.php file, " .
                "which cannot be found.\nYou probably need to complete the installation " .
-               "procedure by following <a href='${root}install.php'>this link</a>."
+               "procedure by following <a href='${root}install.php'>this link</a>.",
+               __FILE__
        );
        die;
 }
@@ -43,7 +44,7 @@ try
 }
 catch (PDOException $e)
 {
-       showError ("Database connection failed:\n\n" . $e->getMessage());
+       showError ("Database connection failed:\n\n" . $e->getMessage(), __FILE__);
        die();
 }
 
@@ -56,7 +57,7 @@ if (get_magic_quotes_gpc())
 
 if (!set_magic_quotes_runtime (0))
 {
-       showError ('Failed to turn magic quotes off');
+       showError ('Failed to turn magic quotes off', __FILE__);
        die;
 }
 
@@ -84,13 +85,13 @@ if ($dbver != CODE_VERSION)
 
 if (!mb_internal_encoding ('UTF-8') or !mb_regex_encoding ('UTF-8'))
 {
-       showError ('Failed setting multibyte string encoding to UTF-8');
+       showError ('Failed setting multibyte string encoding to UTF-8', __FILE__);
        die;
 }
 $configCache = loadConfigCache();
 if (!count ($configCache))
 {
-       showError ('Failed to load configuration from the database.');
+       showError ('Failed to load configuration from the database.', __FILE__);
        die();
 }
 
@@ -125,7 +126,7 @@ else
 if ($rackCode['result'] != 'ACK')
 {
        // FIXME: display a message with an option to reset RackCode text
-       showError ('Could not load the RackCode due to error: ' . $rackCode['load'], __FUNCTION__);
+       showError ('Could not load the RackCode due to error: ' . $rackCode['load'], __FILE__);
        die;
 }
 $rackCode = $rackCode['load'];
@@ -137,7 +138,7 @@ require_once 'inc/auth.php';
 $accounts = getUserAccounts();
 if ($accounts === NULL)
 {
-       showError ('Failed to initialize access database.');
+       showError ('Failed to initialize access database.', __FILE__);
        die();
 }
 
@@ -149,8 +150,17 @@ authenticate();
 
 $remote_username = $_SERVER['PHP_AUTH_USER'];
 $pageno = (isset ($_REQUEST['page'])) ? $_REQUEST['page'] : 'index';
-$tabno = (isset ($_REQUEST['tab'])) ? $_REQUEST['tab'] : 'default';
+// Special handling of tab number to substitute the "last" index where applicable.
+// Always show explicitly requested tab, substitute the last used name in case
+// it is awailable, fall back to the default one.
+if (isset ($_REQUEST['tab']))
+       $tabno = $_REQUEST['tab'];
+elseif (getConfigVar ('SHOW_LAST_TAB') == 'yes' and isset ($_COOKIE['RTLT-' . $pageno]))
+       $tabno = $_COOKIE['RTLT-' . $pageno];
+else
+       $tabno = 'default';
 $op = (isset ($_REQUEST['op'])) ? $_REQUEST['op'] : '';
+
 // Order matters here.
 $taglist = getTagList();
 $tagtree = getTagTree();
index adbbe28..b1dfc2a 100644 (file)
@@ -150,7 +150,7 @@ function renderRow ($row_id = 0)
 function showError ($info = '', $funcname = 'N/A')
 {
        global $root;
-       echo "<div class=msg_error>An error has occured in function [${funcname}]. ";
+       echo "<div class=msg_error>An error has occured in [${funcname}]. ";
        if (empty ($info))
                echo 'No additional information is available.';
        else
index 424c0ad..cb1be99 100644 (file)
--- a/index.php
+++ b/index.php
@@ -8,6 +8,8 @@ if (!permitted())
        renderAccessDenied();
        die;
 }
+// Only store the tab name after clearance is got. Any failure is unhandleable.
+setcookie ('RTLT-' . $pageno, $tabno, time() + getConfigVar ('COOKIE_TTL'));
 
 echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'."\n";
 echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'."\n";
@@ -92,7 +94,7 @@ if (isset ($tabhandler[$pageno][$tabno]))
                                assertIPv4Arg ($page[$pageno]['bypass'], 'index');
                                break;
                        default:
-                               showError ("Dispatching error for bypass parameter");
+                               showError ('Dispatching error for bypass parameter', __FILE__);
                                break;
                }
                $tabhandler[$pageno][$tabno] ($_REQUEST[$page[$pageno]['bypass']]);
@@ -103,7 +105,7 @@ if (isset ($tabhandler[$pageno][$tabno]))
 elseif (isset ($page[$pageno]['handler']))
        $page[$pageno]['handler'] ($tabno);
 else
-       showError ("Failed to find handler for page '${pageno}', tab '${tabno}'");
+       showError ("Failed to find handler for page '${pageno}', tab '${tabno}'", __FILE__);
 ?>
        </td>
        </tr>
index 82d701e..1df5380 100644 (file)
@@ -254,6 +254,8 @@ INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, descriptio
 INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('SHOW_IMPLICIT_TAGS','yes','string','no','no','Show implicit tags');
 INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('SHOW_AUTOMATIC_TAGS','no','string','no','no','Show automatic tags');
 INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('IPV4_AUTO_RELEASE','1','uint','no','no','Auto-release IPv4 addresses on allocation');
+INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('SHOW_LAST_TAB','no','string','yes','no','Remember last tab shown for each page');
+INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('COOKIE_TTL','1209600','uint','yes','no','Cookies lifetime in seconds');
 INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('DB_VERSION','0.16.0','string','no','yes','Database version.');
 
 INSERT INTO `Script` VALUES ('RackCode','allow {$userid_1}');
index 092fc95..fe5f0b3 100644 (file)
@@ -5,7 +5,7 @@ fixContext();
 
 if (empty ($op) or !isset ($ophandler[$pageno][$tabno][$op]))
 {
-       showError ("Invalid request in operation broker: page '${pageno}', tab '${tabno}', op '${op}'");
+       showError ("Invalid request in operation broker: page '${pageno}', tab '${tabno}', op '${op}'", __FILE__);
        die();
 }
 
index 5724ed4..ad8862e 100644 (file)
@@ -27,7 +27,7 @@ function getDBUpgradePath ($v1, $v2)
        if (!in_array ($v1, $versionhistory) || !in_array ($v2, $versionhistory))
        {
                showError ("An upgrade path has been requested for versions '${v1}' and '${v2}', " .
-                 "and at least one of those isn't known to me.");
+                 "and at least one of those isn't known to me.", __FILE__);
                die;
        }
        $skip = TRUE;
@@ -1367,11 +1367,13 @@ CREATE TABLE `TagTree` (
                        break;
                case '0.16.1':
                        $query[] = 'alter table Script modify column script_text longtext';
-                       $query[] = "update Config set varvalue = '0.16.1' where varname = 'DB_VERSION'";
                        $query[] = 'alter table IPVirtualService ADD UNIQUE endpoint (vip, vport, proto)';
+                       $query[] = "INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('SHOW_LAST_TAB','no','string','yes','no','Remember last tab shown for each page')";
+                       $query[] = "INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('COOKIE_TTL','1209600','uint','yes','no','Cookies lifetime in seconds')";
+                       $query[] = "update Config set varvalue = '0.16.1' where varname = 'DB_VERSION'";
                        break;
                default:
-                       showError ("executeUpgradeBatch () failed, because batch '${batchid}' isn't defined");
+                       showError ("executeUpgradeBatch () failed, because batch '${batchid}' isn't defined", __FILE__);
                        die;
                        break;
        }
@@ -1484,7 +1486,7 @@ if
 {
        header ('WWW-Authenticate: Basic realm="RackTables upgrade"');
        header ('HTTP/1.0 401 Unauthorized');
-       showError ('You must be authenticated as an administrator to complete the upgrade.');
+       showError ('You must be authenticated as an administrator to complete the upgrade.', __FILE__);
        die;
 }