r1766 + initial working implementation of explicit, implicit and automatic tags
authorDenis Ovsienko <infrastation@yandex.ru>
Mon, 10 Mar 2008 14:19:30 +0000 (14:19 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 10 Mar 2008 14:19:30 +0000 (14:19 +0000)
inc/database.php
inc/functions.php
inc/init.php
inc/interface.php
inc/navigation.php

index 5e40c09bf8ca3688ddc55a16463119e7d58bab22..278a312c36dae03d396aadba1a20d750d7b11de9 100644 (file)
@@ -2369,12 +2369,12 @@ function executeAutoPorts ($object_id = 0, $type_id = 0)
 
 // Return only implicitly listed tags, the rest of the trail will be
 // generated/deducted later at higher levels.
-function getObjectTags ($object_id = 0)
+function loadRackObjectTags ($object_id = 0)
 {
        $ret = array();
-       $result = useSelectBlade ("select tt.id as tag_id, tag as tag_name from RackObject as ro inner join RackObjectTags as rot on ro.id = rot.object_id inner join TagTree as tt on rot.tag_id = tt.id");
+       $result = useSelectBlade ("select tt.id, tag from RackObject as ro inner join RackObjectTags as rot on ro.id = rot.object_id inner join TagTree as tt on rot.tag_id = tt.id");
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
-               $ret[$row['tag_id']] = $row['tag_name'];
+               $ret[$row['id']] = $row;
        $result->closeCursor();
        return $ret;
 }
@@ -2384,7 +2384,12 @@ function getTagList ()
        $taglist = array();
        $result = useSelectBlade ("select id, parent_id, tag from TagTree order by tag");
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
-               $taglist[$row['id']] = array ('tag' => $row['tag'], 'parent_id' => $row['parent_id']);
+               $taglist[$row['id']] = array
+               (
+                       'id' => $row['id'],
+                       'tag' => $row['tag'],
+                       'parent_id' => $row['parent_id']
+               );
        $result->closeCursor();
        return $taglist;
 }
index 3ba2de26ffb823e65f3547179af99018f317d1c8..ba37cb7ee4e83083fa6c2b70fa37e5891bc4c5ed 100644 (file)
@@ -1351,8 +1351,31 @@ function getImplicitTags ($oldtags)
        return $ret;
 }
 
-function loadAutoTags ()
+function loadRackObjectAutoTags()
 {
+       assertUIntArg ('object_id');
+       $object_id = $_REQUEST['object_id'];
+       $oinfo = getObjectInfo ($object_id);
+       $ret = array();
+       $ret[] = array ('tag' => '$id_' . $_REQUEST['object_id']);
+       $ret[] = array ('tag' => '$allobjects');
+       return $ret;
+}
+
+function getGlobalAutoTags()
+{
+       global $remote_username, $accounts;
+       $ret = array();
+       $user_id = 0;
+       foreach ($accounts as $a)
+               if ($a['user_name'] == $remote_username)
+               {
+                       $user_id = $a['user_id'];
+                       break;
+               }
+       $ret[] = array ('tag' => '$username_' . $remote_username);
+       $ret[] = array ('tag' => '$userid_' . $user_id);
+       return $ret;
 }
 
 ?>
index 8226ed7f7e328ffc11e41ce7f4fb1c02854efeb9..3d35bf02945b227d8698f4e852553069bc5a0f2b 100644 (file)
@@ -120,4 +120,17 @@ require_once 'inc/triggers.php';
 require_once 'inc/gateways.php';
 require_once 'inc/help.php';
 
+global $page;
+$expl_tags = array();
+$impl_tags = array();
+$auto_tags = getGlobalAutoTags();
+
+if (isset ($page[$pageno]['tagloader']))
+{
+       $expl_tags = $page[$pageno]['tagloader'] ();
+       $impl_tags = getImplicitTags ($expl_tags);
+}
+if (isset ($page[$pageno]['autotagloader']))
+       $auto_tags = array_merge ($auto_tags, $page[$pageno]['autotagloader'] ());
+
 ?>
index c77e128a0af874085398f47a0114c38e6a93523c..36894779636c16e1863cbb11e21f70f6537b8e44 100644 (file)
@@ -624,7 +624,7 @@ function printRefsOfType ($refs, $type, $eq)
 
 function renderRackObject ($object_id = 0)
 {
-       global $root;
+       global $root, $expl_tags, $impl_tags;
        if ($object_id <= 0)
        {
                showError ('Invalid object_id', __FUNCTION__);
@@ -661,17 +661,15 @@ function renderRackObject ($object_id = 0)
        foreach (getAttrValues ($object_id) as $record)
                if (!empty ($record['value']))
                        echo "<tr><th width='50%' class=opt_attr_th>${record['name']}:</th><td class=tdleft>${record['a_value']}</td></tr>\n";
-       $tags = getObjectTags ($object_id);
-       if (count ($tags))
+       if (count ($expl_tags))
        {
-               echo "<tr><th width='50%' class=tag_list_th>Tags:</th><td class=tdleft>";
-               $comma = '';
-               foreach ($tags as $tag)
-               {
-                       echo $comma . $tag;
-                       $comma = ', ';
-               }
-               echo "</td></tr>\n";
+               echo "<tr><th width='50%' class=tag_list_th>Explicit tags:</th><td class=tdleft>";
+               echo serializeTags ($expl_tags) . "</td></tr>\n";
+       }
+       if (count ($impl_tags))
+       {
+               echo "<tr><th width='50%' class=tag_list_th>Implicit tags:</th><td class=tdleft>";
+               echo serializeTags ($impl_tags) . "</td></tr>\n";
        }
        echo "</table><br>\n";
        finishPortlet();
@@ -4552,4 +4550,8 @@ function renderTagTreeEditor ()
        dragon();
 }
 
+function renderObjectTags ()
+{
+}
+
 ?>
index b575be91b3b05238b9d97171270973617dc7707e..8651fb4a4904b8f064ff0e1b715439d7d01afed8 100644 (file)
@@ -67,6 +67,8 @@ $page['object']['title_handler'] = 'dynamic_title_object';
 $page['object']['bypass'] = 'object_id';
 $page['object']['bypass_type'] = 'uint';
 $page['object']['parent'] = 'objgroup';
+$page['object']['tagloader'] = 'loadRackObjectTags';
+$page['object']['autotagloader'] = 'loadRackObjectAutoTags';
 $tab['object']['default'] = 'View';
 $tab['object']['edit'] = 'Properties';
 $tab['object']['rackspace'] = 'Rackspace';
@@ -78,6 +80,7 @@ $tab['object']['snmpportfinder'] = 'SNMP port finder';
 $tab['object']['slb'] = '[SLB]';
 $tab['object']['lvsconfig'] = 'LVS configuration';
 $tab['object']['autoports'] = 'AutoPorts';
+$tab['object']['tags'] = 'Tags';
 $tabhandler['object']['default'] = 'renderRackObject';
 $tabhandler['object']['edit'] = 'renderEditObjectForm';
 $tabhandler['object']['rackspace'] = 'renderRackSpaceForObject';
@@ -88,6 +91,7 @@ $tabhandler['object']['switchvlans'] = 'renderVLANMembership';
 $tabhandler['object']['snmpportfinder'] = 'renderSNMPPortFinder';
 $tabhandler['object']['lvsconfig'] = 'renderLVSConfig';
 $tabhandler['object']['autoports'] = 'renderAutoPortsForm';
+$tabhandler['object']['tags'] = 'renderObjectTags';
 $tabextraclass['object']['snmpportfinder'] = 'attn';
 $tabextraclass['object']['autoports'] = 'attn';
 $trigger['object']['network'] = 'trigger_ipv4';