r3315 redirectIfNecessary(): also handle tab triggering; execute only
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 2 Mar 2010 19:43:54 +0000 (19:43 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 2 Mar 2010 19:43:54 +0000 (19:43 +0000)
after fixContext() is done, because trigger functions
may look into tags of current entity
prepareNavigation(): only redirect on last tab substitution
urlizeGetParameters(): not used any more

ChangeLog
inc/functions.php
index.php

index d7bf37e..0cbcd2c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 0.17.10
        update: make object form messages consistent (by Tyler J. Wagner)
+       bugfix: completely fix ticket:211
 0.17.9 2010-02-17
        new feature: added per-user UI options (ticket:29)
        new feature: LDAP cache can be disabled now (ticket:247)
index ddcf75b..b848fe0 100644 (file)
@@ -1075,7 +1075,10 @@ function tagChainCmp ($chain1, $chain2)
 
 function redirectIfNecessary ()
 {
-       global $pageno, $tabno;
+       global
+               $trigger,
+               $pageno,
+               $tabno;
        $pmap = array
        (
                'accounts' => 'userlist',
@@ -1097,11 +1100,13 @@ function redirectIfNecessary ()
                redirectUser ($pmap[$pageno], $tabno);
        if (isset ($tmap[$pageno][$tabno]))
                redirectUser ($pageno, $tmap[$pageno][$tabno]);
+       // check if we accidentaly got on a dynamic tab that shouldn't be shown for this object
+       if (isset ($trigger[$pageno][$tabno]) and !strlen ($trigger[$pageno][$tabno] ()))
+               redirectUser ($pageno, 'default');
 }
 
 function prepareNavigation() {
        global
-               $trigger,
                $pageno,
                $tabno;
 
@@ -1113,18 +1118,8 @@ function prepareNavigation() {
 
        if (isset ($_REQUEST['tab'])) {
                $tabno = $_REQUEST['tab'];
-                       // check if we accidentaly got on a dynamic tab that shouldn't be shown for this object
-               if ( isset($trigger[$pageno][$tabno]) and !strlen($trigger[$pageno][$tabno] ()) ) {
-                       $tabno = 'default';
-                       $url = "index.php?page=$pageno&tab=$tabno&".urlizeGetParameters(array('page', 'tab'));
-                       header('Location: '.$url);
-                       exit();
-               }
        } elseif (basename($_SERVER['PHP_SELF']) == 'index.php' and getConfigVar ('SHOW_LAST_TAB') == 'yes' and isset ($_SESSION['RTLT'][$pageno])) {
-               $tabno = $_SESSION['RTLT'][$pageno];
-               $url = "index.php?page=$pageno&tab=$tabno&".urlizeGetParameters(array('page', 'tab'));
-               header('Location: '.$url);
-               exit();
+               redirectUser ($pageno, $_SESSION['RTLT'][$pageno]);
        } else {
                $tabno = 'default';
        }
@@ -2214,21 +2209,6 @@ function getNewPortTypeOptions()
        return $ret;
 }
 
-//Make URL from GET without parameters specified in $parameters
-function urlizeGetParameters($parameters) {
-       $url = '';
-       foreach ($_GET as $name=>$value) {
-               if (in_array($name, $parameters)) continue;
-               if ($url != '') $url .= '&';
-               if (gettype($value) == 'array')
-                       foreach($value as $v)
-                               $url .= urlencode($name.'[]').'='.urlencode($v);
-               else
-                       $url .= urlencode($name).'='.urlencode($value);
-       }
-       return $url;
-}
-
 function getVLANDomain ($vdid)
 {
        $ret = getVLANDomainInfo ($vdid);
index 1d9be9f..39b78ef 100644 (file)
--- a/index.php
+++ b/index.php
@@ -5,8 +5,8 @@ require 'inc/interface.php';
 require 'inc/init.php';
 prepareNavigation();
 // no ctx override is necessary
-redirectIfNecessary();
 fixContext();
+redirectIfNecessary();
 if (!permitted())
        renderAccessDenied();
 // Only store the tab name after clearance is got. Any failure is unhandleable.