r2746 - rework trigger functions to return either empty string or CSS class name
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 14 May 2009 10:55:58 +0000 (10:55 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 14 May 2009 10:55:58 +0000 (10:55 +0000)
 - eliminate $tabextraclass array

inc/interface.php
inc/navigation.php
inc/triggers.php
pi.css

index 8846dea1d9c4ff2d188eba70af91568f1b1ad50f..0445b92e62783f07a7849b608b68c6ff2901b75b 100644 (file)
@@ -5844,7 +5844,7 @@ function getTitle ($pageno)
 
 function showTabs ($pageno, $tabno)
 {
-       global $tab, $root, $page, $trigger, $tabextraclass;
+       global $tab, $root, $page, $trigger;
        if (!isset ($tab[$pageno]['default']))
                return;
        echo "<td><div class=greynavbar><ul id=foldertab style='margin-bottom: 0px; padding-top: 10px;'>";
@@ -5854,15 +5854,13 @@ function showTabs ($pageno, $tabno)
                if (!permitted ($pageno, $tabidx))
                        continue;
                // Dynamic tabs should only be shown in certain cases (trigger exists and returns true).
-               if (isset ($trigger[$pageno][$tabidx]))
-               {
-                       $ok = $trigger[$pageno][$tabidx] ();
-                       if (!$ok)
-                               continue;
-               }
-               $class = ($tabidx == $tabno) ? 'current' : 'std';
-               $extra = (isset ($tabextraclass[$pageno][$tabidx])) ? $tabextraclass[$pageno][$tabidx] : '';
-               echo "<li><a class=${class}{$extra}";
+               if (!isset ($trigger[$pageno][$tabidx]))
+                       $tabclass = 'std';
+               elseif (!strlen ($tabclass = $trigger[$pageno][$tabidx] ()))
+                       continue;
+               if ($tabidx == $tabno)
+                      $tabclass = 'current'; // override any class for an an active selection
+               echo "<li><a class=${tabclass}";
                echo " href='${root}?page=${pageno}&tab=${tabidx}";
                if (isset ($page[$pageno]['bypass']) and isset ($_REQUEST[$page[$pageno]['bypass']]))
                {
index 5c37d085c650201a49b15266f5a447119b6eac50..2310a3454a81649dfbe22761c0e0ec74036b935d 100644 (file)
@@ -10,7 +10,6 @@ $tab = array();
 $trigger = array();
 $ophandler = array();
 $tabhandler = array();
-$tabextraclass = array();
 $delayauth = array();
 
 $page['index']['title'] = 'Main page';
@@ -104,8 +103,6 @@ $tabhandler['object']['autoports'] = 'renderAutoPortsForm';
 $tabhandler['object']['tags'] = 'renderEntityTags';
 $tabhandler['object']['files'] = 'renderFilesForEntity';
 $tabhandler['object']['editrspvs'] = 'renderObjectSLB';
-$tabextraclass['object']['snmpportfinder'] = 'attn';
-$tabextraclass['object']['autoports'] = 'attn';
 $trigger['object']['ipv4'] = 'trigger_ipv4';
 $trigger['object']['nat4'] = 'trigger_natv4';
 $trigger['object']['livevlans'] = 'trigger_livevlans';
index b8e52cf4c8d99fe2be968208875dcff826b287d4..b27d29e317ebb70066c6ffe8625c426294c4c7d8 100644 (file)
@@ -7,7 +7,7 @@
 
 // Triggers may be optionally referred by some tabs of a page.
 // In case they are defined, the given tab is only displayed if
-// the trigger returned true. In certain cases, a key is necessary
+// the trigger returned CSS class name. In certain cases, a key is necessary
 // to decide (the 'bypass' hint of a page), and in some cases,
 // other data can be used.
 
@@ -21,7 +21,7 @@ function trigger_livevlans ()
        $object_id = $_REQUEST['object_id'];
        $object = getObjectInfo ($object_id, FALSE);
        if ($object['objtype_id'] != 8)
-               return FALSE;
+               return '';
        $values = getAttrValues ($object_id);
        foreach ($values as $record)
        {
@@ -31,11 +31,11 @@ function trigger_livevlans ()
                // Cisco IOS 12.1
                // Cisco IOS 12.2
                if (in_array ($record['key'], array (244, 251, 252)))
-                       return TRUE;
+                       return 'std';
                else
-                       return FALSE;
+                       return '';
        }
-       return FALSE;
+       return '';
 }
 
 // SNMP port finder tab trigger. At the moment we decide on showing it
@@ -47,31 +47,31 @@ function trigger_snmpportfinder ()
        $object_id = $_REQUEST['object_id'];
        $object = getObjectInfo ($object_id);
        if ($object['objtype_id'] != 8)
-               return FALSE;
+               return '';
        if (!objectIsPortless ($_REQUEST['object_id']))
-               return FALSE;
-       return TRUE;
+               return '';
+       return 'attn';
 }
 
 function trigger_isloadbalancer ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
-       return considerConfiguredConstraint ('object', $_REQUEST['object_id'], 'IPV4LB_LISTSRC');
+       return considerConfiguredConstraint ('object', $_REQUEST['object_id'], 'IPV4LB_LISTSRC') ? 'std' : '';
 }
 
 function trigger_ipv4 ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
        if (count (getObjectIPv4Allocations ($_REQUEST['object_id'])))
-               return TRUE;
+               return 'std';
        // Only hide the tab, if there are no addresses allocated.
-       return considerConfiguredConstraint ('object', $_REQUEST['object_id'], 'IPV4OBJ_LISTSRC');
+       return considerConfiguredConstraint ('object', $_REQUEST['object_id'], 'IPV4OBJ_LISTSRC') ? 'std' : '';
 }
 
 function trigger_natv4 ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
-       return considerConfiguredConstraint ('object', $_REQUEST['object_id'], 'IPV4NAT_LISTSRC');
+       return considerConfiguredConstraint ('object', $_REQUEST['object_id'], 'IPV4NAT_LISTSRC') ? 'std' : '';
 }
 
 function trigger_poolrscount ()
@@ -79,41 +79,41 @@ function trigger_poolrscount ()
        assertUIntArg ('pool_id', __FUNCTION__);
        $poolInfo = spotEntity ('ipv4rspool', $_REQUEST['pool_id']);
        amplifyCell ($poolInfo);
-       return count ($poolInfo['rslist']) > 0;
+       return count ($poolInfo['rslist']) ? 'std' : '';
 }
 
 function trigger_autoports ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
        if (!objectIsPortless ($_REQUEST['object_id']))
-               return FALSE;
+               return '';
        $info = getObjectInfo ($_REQUEST['object_id'], FALSE);
-       return count (getAutoPorts ($info['objtype_id'])) != 0;
+       return count (getAutoPorts ($info['objtype_id'])) ? 'attn' : '';
 }
 
 function trigger_tags ()
 {
        global $taglist;
-       return count ($taglist) > 0;
+       return count ($taglist) ? 'std' : '';
 }
 
 function trigger_passwdchange ()
 {
        global $user_auth_src;
-       return $user_auth_src == 'database';
+       return $user_auth_src == 'database' ? 'std' : '';
 }
 
 function trigger_localreports ()
 {
        global $localreports;
-       return count ($localreports) > 0;
+       return count ($localreports) ? 'std' : '';
 }
 
 function trigger_file_editText ()
 {
        assertUIntArg ('file_id', __FUNCTION__);
        $fileInfo = getFileInfo ($_REQUEST['file_id']);
-       return ($fileInfo['type'] == 'text/plain');
+       return ($fileInfo['type'] == 'text/plain') ? 'std' : '';
 }
 
 ?>
diff --git a/pi.css b/pi.css
index 5118c325b99495d976f5afd0899260b76c5d0cec..25ebdab17b92c30d85e163b2caeab2e20b6c43a1 100644 (file)
--- a/pi.css
+++ b/pi.css
@@ -311,33 +311,19 @@ color: black;
 }
 
 /* "Attention" tab, inactive. */
-#foldertab li a.stdattn {
+#foldertab li a.attn {
 border-bottom: none;
 background: #ffa500;
 border-color: #ffa500;
 }
-#foldertab li a.stdattn:link { color: white; }
-#foldertab li a.stdattn:visited { color: white; }
-#foldertab li a.stdattn:hover {
+#foldertab li a.attn:link { color: white; }
+#foldertab li a.attn:visited { color: white; }
+#foldertab li a.attn:hover {
 color: white;
 background: #ff8c00;
 border-color: #ff8c00;
 }
 
-/* "Attention" tab, selected. */
-#foldertab li a.currentattn {
-background: white;
-border-bottom: 1px solid white;
-color: black;
-}
-#foldertab li a.currentattn:link { color: black; }
-#foldertab li a.currentattn:visited { color: black; }
-#foldertab li a.currentattn:hover {
-background: white;
-border-bottom: 1px solid white;
-color: black;
-}
-
 .greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 0px}
 
 .miniracks {