r1834 + use POST to add multiple objects
authorDenis Ovsienko <infrastation@yandex.ru>
Wed, 26 Mar 2008 06:14:35 +0000 (06:14 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Wed, 26 Mar 2008 06:14:35 +0000 (06:14 +0000)
+ provide hint about user ID in accounts list
+ fix column alignment in IPv4 prefix editor
+ cache tag data instead of reloading it each time

inc/database.php
inc/functions.php
inc/init.php
inc/interface.php
inc/triggers.php

index 5e8ca9118aa7a8348a65f08edeef99ada29bbc4b..c5152074994c2e1cb23f7fd24b1cf5d05722121d 100644 (file)
@@ -2468,7 +2468,7 @@ function loadIPv4RSPoolTags ($id)
 
 function getTagList ()
 {
-       $taglist = array();
+       $ret = array();
        $query = "select id, parent_id, tag, target_realm as realm, count(target_id) as refcnt " .
                "from TagTree left join TagStorage on id = tag_id " .
                "group by id, target_realm order by tag";
@@ -2476,7 +2476,7 @@ function getTagList ()
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
        {
                if (!isset ($taglist[$row['id']]))
-                       $taglist[$row['id']] = array
+                       $ret[$row['id']] = array
                        (
                                'id' => $row['id'],
                                'tag' => $row['tag'],
@@ -2484,10 +2484,10 @@ function getTagList ()
                                'refcnt' => array()
                        );
                if ($row['realm'])
-                       $taglist[$row['id']]['refcnt'][$row['realm']] = $row['refcnt'];
+                       $ret[$row['id']]['refcnt'][$row['realm']] = $row['refcnt'];
        }
        $result->closeCursor();
-       return $taglist;
+       return $ret;
 }
 
 function commitCreateTag ($tagname = '', $parent_id = 0)
index 0a8c13ce073b6f090e77e5cb1b27af28909f38e7..5dfae705db4748b0b50ebe0075de589646f7e028 100644 (file)
@@ -1344,30 +1344,31 @@ function attachChildTag (&$tree, $parent_id, $child_id, $child_info)
 // Build a tree from the tag list and return it.
 function getTagTree ()
 {
-       $tagtree = array();
-       $taglist = getTagList();
-       while (count ($taglist) > 0)
+       global $taglist;
+       $mytaglist = $taglist;
+       $ret = array();
+       while (count ($mytaglist) > 0)
        {
                $picked = FALSE;
-               foreach ($taglist as $tagid => $taginfo)
+               foreach ($mytaglist as $tagid => $taginfo)
                {
                        $taginfo['kids'] = array();
                        if ($taginfo['parent_id'] == NULL)
                        {
-                               $tagtree[$tagid] = $taginfo;
+                               $ret[$tagid] = $taginfo;
                                $picked = TRUE;
-                               unset ($taglist[$tagid]);
+                               unset ($mytaglist[$tagid]);
                        }
-                       elseif (attachChildTag ($tagtree, $taginfo['parent_id'], $tagid, $taginfo))
+                       elseif (attachChildTag ($ret, $taginfo['parent_id'], $tagid, $taginfo))
                        {
                                $picked = TRUE;
-                               unset ($taglist[$tagid]);
+                               unset ($mytaglist[$tagid]);
                        }
                }
                if (!$picked) // Only orphaned items on the list.
                        break;
        }
-       return $tagtree;
+       return $ret;
 }
 
 function serializeTags ($trail)
@@ -1416,8 +1417,8 @@ function traceTrail ($tree, $trail)
 // except user's tags on the trail.
 function getTrailExpansion ($trail)
 {
-       $tree = getTagTree();
-       return traceTrail ($tree, $trail);
+       global $tagtree;
+       return traceTrail ($tagtree, $trail);
 }
 
 // Return the list of missing implicit tags.
@@ -1444,8 +1445,9 @@ function getImplicitTags ($oldtags)
 // Minimize the trail: exclude all implicit tags and return the resulting trail.
 function getExplicitTagsOnly ($trail, $tree = NULL)
 {
+       global $tagtree;
        if ($tree === NULL)
-               $tree = getTagTree();
+               $tree = $tagtree;
        $ret = array();
        foreach ($tree as $taginfo)
        {
@@ -1474,8 +1476,9 @@ function getExplicitTagsOnly ($trail, $tree = NULL)
 // a list of tag structures.
 function complementByKids ($idlist, $tree = NULL, $getall = FALSE)
 {
+       global $tagtree;
        if ($tree === NULL)
-               $tree = getTagTree();
+               $tree = $tagtree;
        $getallkids = $getall;
        $ret = array();
        foreach ($tree as $taginfo)
@@ -1579,7 +1582,7 @@ function getGlobalAutoTags()
 // Build a tag trail from supplied tag id list and return it.
 function buildTrailFromIds ($tagidlist)
 {
-       $taglist = getTagList();
+       global $taglist;
        $ret = array();
        foreach ($tagidlist as $tag_id)
                if (isset ($taglist[$tag_id]))
index d5f208209c0da3c3704f472969db81a117f945c8..e03282336a5721a86486a81832446a62665b5fed 100644 (file)
@@ -111,6 +111,9 @@ authenticate();
 $remote_username = $_SERVER['PHP_AUTH_USER'];
 $pageno = (isset ($_REQUEST['page'])) ? $_REQUEST['page'] : 'index';
 $tabno = (isset ($_REQUEST['tab'])) ? $_REQUEST['tab'] : 'default';
+// Order matters here.
+$taglist = getTagList();
+$tagtree = getTagTree();
 
 require_once 'inc/navigation.php';
 require_once 'inc/pagetitles.php';
index 8703213553e1e1dd19eaf4a485fb43db149c7fa8..5e995558ac98c3a730c10185716e9ad148366ffe 100644 (file)
@@ -1491,6 +1491,8 @@ function renderProblematicObjectsPortlet ()
 function renderObjectGroupSummary ()
 {
        global $root;
+       $tagfilter = isset ($_REQUEST['tagfilter']) ? $_REQUEST['tagfilter'] : array();
+       $tagfilter = complementByKids ($tagfilter);
        $summary = getObjectGroupInfo();
        if ($summary === NULL)
        {
@@ -1502,15 +1504,15 @@ function renderObjectGroupSummary ()
 
        startPortlet ('Summary');
        foreach ($summary as $gi)
-       {
                echo "<a href='${root}?page=objgroup&group_id=${gi['id']}'><b>${gi['name']}</b></a> <i>(${gi['count']})</i><br>";
-       }
        finishPortlet();
 
        echo '</td><td class=pcright>';
        renderUnmountedObjectsPortlet();
        echo '</td><td class=pcright>';
        renderProblematicObjectsPortlet();
+       echo '</td><td class=pcright>';
+       renderTagFilterPortlet ($tagfilter, 'object');
        echo "</td></tr></table>\n";
 }
 
@@ -1850,7 +1852,9 @@ function renderAddNewRange ()
                }
                else
                        printImageHREF ('nodelete', 'There are IP addresses allocated or reserved');
-               echo "</td>\n<td><a href='${root}?page=iprange&id=${iprange['id']}'>${iprange['ip']}/${iprange['mask']}</a></td><td>${iprange['name']}</td><td class=tdleft>";
+               echo "</td>\n<td class=tdleft><a href='${root}?page=iprange&id=${iprange['id']}'>";
+               echo "${iprange['ip']}/${iprange['mask']}</a></td><td class=tdleft>${iprange['name']}";
+               echo "</td><td class=tdleft>";
                renderProgressBar ($usedips / $totalips);
                echo " ${usedips}/${totalips}";
                echo "</td></tr>";
@@ -2302,7 +2306,7 @@ function renderIPAddressPortForwarding ($object_id=0)
 
 function renderAddMultipleObjectsForm ()
 {
-       global $pageno, $tabno, $nextorder;
+       global $root, $pageno, $tabno, $nextorder;
 
        $type_id = array();
        $global_type_id = 0;
@@ -2384,9 +2388,7 @@ function renderAddMultipleObjectsForm ()
        $typelist[0] = 'select type...';
 
        startPortlet ('Fast way');
-       echo '<form>';
-       echo "<input type=hidden name=page value=${pageno}>";
-       echo "<input type=hidden name=tab value=${tabno}>";
+       echo "<form name=fastform method=post action='${root}?page=${pageno}&tab=${tabno}'>";
        echo '<table border=0 align=center>';
        echo "<tr><th>Object type</th><th>Common name</th><th>Visible label</th><th>Asset tag</th><th>Barcode</th></tr>\n";
        // If a user forgot to select object type on input, we keep his
@@ -2421,9 +2423,7 @@ function renderAddMultipleObjectsForm ()
        finishPortlet();
 
        startPortlet ('Very fast way');
-       echo '<form>';
-       echo "<input type=hidden name=page value=${pageno}>";
-       echo "<input type=hidden name=tab value=${tabno}>";
+       echo "<form name=veryfastform method=post action='${root}?page=${pageno}&tab=${tabno}'>";
        echo 'For each line shown below create an object of type ';
        printSelect ($typelist, "global_type_id", getConfigVar ('DEFAULT_OBJECT_TYPE'));
        echo " <input type=submit name=got_very_fast_data value='Go!'><br>\n";
@@ -2660,7 +2660,9 @@ function renderAccounts ()
        $order = 'odd';
        foreach ($accounts as $user)
        {
-               echo "<tr class=row_${order}><td class=tdleft>${user['user_name']}</td><td class=tdleft>${user['user_realname']}</td></li>";
+               echo "<tr class=row_${order}><td class=tdleft><div title='\$userid_${user['user_id']}'>";
+               echo "${user['user_name']}</div></td>";
+               echo "<td class=tdleft>${user['user_realname']}</td></li>";
                $order = $nextorder[$order];
        }
        echo '</table>';
@@ -4728,8 +4730,9 @@ function renderTagRowForEditor ($taginfo, $level = 0)
 
 function renderTagTree ()
 {
+       global $tagtree;
        echo '<table>';
-       foreach (getTagTree() as $taginfo)
+       foreach ($tagtree as $taginfo)
        {
                echo '<tr>';
                renderTagRowForViewer ($taginfo);
@@ -4740,11 +4743,11 @@ function renderTagTree ()
 
 function renderTagTreeEditor ()
 {
-       global $root, $pageno, $tabno;
+       global $root, $pageno, $tabno, $taglist, $tagtree;
        showMessageOrError();
        echo "<table cellspacing=0 cellpadding=5 align=center class=widetable>\n";
        echo "<tr><th>&nbsp;</th><th>tag</th><th>&nbsp;</th></tr>\n";
-       foreach (getTagTree() as $taginfo)
+       foreach ($tagtree as $taginfo)
        {
                renderTagRowForEditor ($taginfo, TRUE);
        }
@@ -4756,7 +4759,7 @@ function renderTagTreeEditor ()
        printImageHREF ('grant', 'Create tag', TRUE);
        echo '</td><td><input type=text name=tagname> under <select name=parent_id>';
        echo "<option value=0>-- NONE --</option>\n";
-       foreach (getTagList() as $taginfo)
+       foreach ($taglist as $taginfo)
                echo "<option value=${taginfo['id']}>${taginfo['tag']}</option>";
        echo "</select></td><td>&nbsp;</td></tr>";
        echo "</form>\n";
@@ -4829,6 +4832,7 @@ function renderIPv4RSPoolTags ($id)
 
 function renderEntityTags ($entity_realm = '', $bypass_name, $entity_id = 0)
 {
+       global $tagtree;
        if ($entity_realm == '' or $entity_id <= 0)
        {
                showError ('Invalid or missing arguments', __FUNCTION__);
@@ -4836,7 +4840,6 @@ function renderEntityTags ($entity_realm = '', $bypass_name, $entity_id = 0)
        }
        global $root, $pageno, $tabno;
        showMessageOrError();
-       $tree = getTagTree();
        startPortlet ('Tag list');
        echo "<form method=post action='${root}process.php'>\n";
        echo "<input type=hidden name=page value=${pageno}>\n";
@@ -4844,7 +4847,7 @@ function renderEntityTags ($entity_realm = '', $bypass_name, $entity_id = 0)
        echo "<input type=hidden name=${bypass_name} value=${entity_id}>\n";
        echo "<input type=hidden name=op value=save>\n";
        echo '<select name=taglist[] multiple size=' . getConfigVar ('MAXSELSIZE') . '>';
-       foreach ($tree as $taginfo)
+       foreach ($tagtree as $taginfo)
                renderTagOption ($taginfo);
        echo '</select><br>';
        echo "<input type=submit value='Save'></form>\n";
@@ -4873,9 +4876,9 @@ function printTagTRs()
 
 function renderTagFilterPortlet ($tagfilter, $realm)
 {
-       global $pageno, $tabno;
+       global $pageno, $tabno, $taglist, $tagtree;
        startPortlet ('Tag filter');
-       if (!count (($tagTree = getTagTree())))
+       if (!count ($taglist))
        {
                echo "No tags defined";
                return;
@@ -4884,7 +4887,7 @@ function renderTagFilterPortlet ($tagfilter, $realm)
        echo "<input type=hidden name=page value=${pageno}>\n";
        echo "<input type=hidden name=tab value=${tabno}>\n";
        echo '<select name=tagfilter[] multiple>';
-       foreach ($tagTree as $taginfo)
+       foreach ($tagtree as $taginfo)
                renderTagOptionForFilter ($taginfo, $tagfilter, $realm);
        echo '</select><br>';
        echo "<input type=submit value='Apply'></form>\n";
@@ -4893,13 +4896,14 @@ function renderTagFilterPortlet ($tagfilter, $realm)
 
 function renderTagSelect ()
 {
-       if (!count (($tagTree = getTagTree())))
+       global $taglist, $tagtree;
+       if (!count ($taglist))
        {
                echo "No tags defined";
                return;
        }
        echo '<select name=taglist[] multiple>';
-       foreach ($tagTree as $taginfo)
+       foreach ($tagtree as $taginfo)
                renderTagOption ($taginfo);
        echo '</select><br>';
 }
index 047bddc951dae897ee23335c72efd4e11153b3fb..b9d4a15a549955459e49278102fa02c7299c5c48 100644 (file)
@@ -98,7 +98,8 @@ function trigger_autoports ()
 
 function trigger_tags ()
 {
-       return count (getTagList()) > 0;
+       global $taglist;
+       return count ($taglist) > 0;
 }
 
 ?>