r2191 - sort the IPv4 tree like it's already done for tags
authorDenis Ovsienko <infrastation@yandex.ru>
Sun, 31 Aug 2008 13:10:27 +0000 (13:10 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Sun, 31 Aug 2008 13:10:27 +0000 (13:10 +0000)
 - niftyString(): use SPAN instead of DIV

inc/functions.php
inc/init.php
inc/interface.php

index 6365915..3267e89 100644 (file)
@@ -1407,14 +1407,23 @@ function taginfoCmp ($tagA, $tagB)
        return $tagA['ci'] - $tagB['ci'];
 }
 
+// Compare networks. When sorting a tree, the records on the list will have
+// distinct base IP addresses.
+function IPv4NetworkCmp ($netA, $netB)
+{
+       return $netA['db_first'] - $netB['db_first'];
+}
+
 // Modify the given tag tree so, that each level's items are sorted alphabetically.
-function sortTagTree (&$tree)
+function sortTree (&$tree, $sortfunc = '')
 {
-       usort ($tree, 'taginfoCmp');
+       if (empty ($sortfunc))
+               return;
+       usort ($tree, $sortfunc);
        // Don't make a mistake of directly iterating over the items of current level, because this way
        // the sorting will be performed on a _copy_ if each item, not the item itself.
        foreach (array_keys ($tree) as $tagid)
-               sortTagTree ($tree[$tagid]['kids']);
+               sortTree ($tree[$tagid]['kids'], $sortfunc);
 }
 
 ?>
index 1d1d8f3..62e449f 100644 (file)
@@ -162,7 +162,7 @@ $op = (isset ($_REQUEST['op'])) ? $_REQUEST['op'] : '';
 // Order matters here.
 $taglist = getTagList();
 $tagtree = getTagTree();
-sortTagTree ($tagtree);
+sortTree ($tagtree, 'taginfoCmp');
 
 require_once 'inc/navigation.php';
 require_once 'inc/pagetitles.php';
index dfecd0f..90b3b8e 100644 (file)
@@ -2017,14 +2017,16 @@ function renderIPv4Space ()
        echo "<tr><td class=pcleft>";
 
        $tagfilter = getTagFilter();
-       $addrspaceList = treeFromList (getIPv4NetworkList ($tagfilter, getTFMode()));
-       startPortlet ('networks (' . count ($addrspaceList) . ')');
+       $tree = treeFromList (getIPv4NetworkList ($tagfilter, getTFMode()));
+       sortTree ($tree, 'IPv4NetworkCmp');
+       // FIXME: the counter is wrong
+       startPortlet ('networks (' . count ($tree) . ')');
        echo "<table class='widetable' border=0 cellpadding=5 cellspacing=0 align='center'>\n";
        echo "<tr><th>prefix</th><th>name/tags</th><th>%% used</th>";
        if (getConfigVar ('EXT_IPV4_VIEW') == 'yes')
                echo "<th>routed by</th>";
        echo "</tr>\n";
-       renderIPv4SpaceRecords ($addrspaceList);
+       renderIPv4SpaceRecords ($tree);
        echo "</table>\n";
        finishPortlet();
        echo '</td><td class=pcright>';
@@ -5222,8 +5224,8 @@ function niftyString ($string, $maxlen = 30)
        if (empty ($string))
                return '&nbsp;';
        if (mb_strlen ($string) > $maxlen)
-               return "<div title='" . htmlspecialchars ($string, ENT_QUOTES, 'UTF-8') . "'>" .
-                       mb_substr ($string, 0, $maxlen - 1) . $cutind . '</div>';
+               return "<span title='" . htmlspecialchars ($string, ENT_QUOTES, 'UTF-8') . "'>" .
+                       mb_substr ($string, 0, $maxlen - 1) . $cutind . '</span>';
        return $string;
 }