Просмотр исходного кода

Updated menu entries and relations definitions

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@575 a333f486-631f-4898-b8df-5754b55c2be0
dflaven 15 лет назад
Родитель
Сommit
bc208f31ac

+ 3 - 3
application/itopwebpage.class.inc.php

@@ -243,14 +243,14 @@ EOF
 		 *		Data Model
 		 *		Universal Search
 		 */
-		$oWelcomeMenu = new MenuGroup('WelcomeMenu', 0 /* fRank */);
+		$oWelcomeMenu = new MenuGroup('WelcomeMenu', 10 /* fRank */);
 		new TemplateMenuNode('WelcomeMenuPage', '../business/templates/welcome_menu.html', $oWelcomeMenu->GetIndex() /* oParent */, 1 /* fRank */);
 		
-		$oToolsMenu = new MenuGroup('DataAdministration', 2 /* fRank */);
+		$oToolsMenu = new MenuGroup('DataAdministration', 70 /* fRank */);
 		new WebPageMenuNode('CSVImportMenu', '../pages/csvimport.php', $oToolsMenu->GetIndex(), 1 /* fRank */);
 
 		// Add the admin menus
-		$oAdminMenu = new MenuGroup('AdminTools', 999 /* fRank */);
+		$oAdminMenu = new MenuGroup('AdminTools', 80 /* fRank */);
 		new OQLMenuNode('UserAccountsMenu', 'SELECT URP_Users', $oAdminMenu->GetIndex(), 1 /* fRank */);
 		new OQLMenuNode('ProfilesMenu', 'SELECT URP_Profiles', $oAdminMenu->GetIndex(), 2 /* fRank */);
 		new TemplateMenuNode('NotificationsMenu', '../business/templates/notifications_menu.html', $oAdminMenu->GetIndex(), 3 /* fRank */);

+ 2 - 0
modules/itop-change-mgmt-1.0.0/en.dict.itop-change-mgmt.php

@@ -25,6 +25,8 @@
 
 Dict::Add('EN US', 'English', 'English', array(
 	'Menu:ChangeManagement' => 'Change management',
+	'Menu:Change:Overview' => 'Overview',
+	'Menu:Change:Overview+' => '',
 	'Menu:WaitingAcceptance' => 'Changes awaiting acceptance',
 	'Menu:WaitingAcceptance+' => '',
 	'Menu:WaitingApproval' => 'Changes awaiting approval',

+ 6 - 6
modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php

@@ -452,11 +452,11 @@ class EmergencyChange extends ApprovedChange
 }
 
 
-$oMyMenuGroup = new MenuGroup('ChangeManagement', 1 /* fRank */);
-
-new OQLMenuNode('MyChanges', 'SELECT Change WHERE agent_id = :current_contact_id', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-new OQLMenuNode('Changes', 'SELECT Change WHERE status != "closed"', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-new OQLMenuNode('WaitingApproval', 'SELECT ApprovedChange WHERE status IN ("plannedscheduled")', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-new OQLMenuNode('WaitingAcceptance', 'SELECT NormalChange WHERE status IN ("new")', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
+$oMyMenuGroup = new MenuGroup('ChangeManagement', 50 /* fRank */);
+new TemplateMenuNode('Change:Overview', '../modules/itop-change-mgmt-1.0.0/overview.html', $oMyMenuGroup->GetIndex() /* oParent */, 0 /* fRank */);
+new OQLMenuNode('MyChanges', 'SELECT Change WHERE agent_id = :current_contact_id', $oMyMenuGroup->GetIndex(), 1 /* fRank */);
+new OQLMenuNode('Changes', 'SELECT Change WHERE status != "closed"', $oMyMenuGroup->GetIndex(), 2 /* fRank */);
+new OQLMenuNode('WaitingApproval', 'SELECT ApprovedChange WHERE status IN ("plannedscheduled")', $oMyMenuGroup->GetIndex(), 3 /* fRank */);
+new OQLMenuNode('WaitingAcceptance', 'SELECT NormalChange WHERE status IN ("new")', $oMyMenuGroup->GetIndex(), 4 /* fRank */);
 
 ?>

+ 83 - 13
modules/itop-config-mgmt-1.0.0/model.itop-config-mgmt.php

@@ -26,7 +26,8 @@
 require_once('../application/cmdbabstract.class.inc.php');
 require_once('../application/template.class.inc.php');
 
-MetaModel::RegisterRelation("impacts", array("description"=>"Objects impacted by", "verb_down"=>"impacts", "verb_up"=>"is impacted by"));
+MetaModel::RegisterRelation("impacts", array("description"=>"Objects impacted by", "verb_down"=>"impacts", "verb_up"=>"depends on"));
+MetaModel::RegisterRelation("depends on", array("description"=>"That impacts ", "verb_down"=>"depends on", "verb_up"=>"impacts"));
 
 class Organization extends cmdbAbstractObject
 {
@@ -690,6 +691,9 @@ abstract class FunctionalCI extends cmdbAbstractObject
 				"solution" => array("sQuery"=>"SELECT ApplicationSolution AS s JOIN lnkSolutionToCI AS l1 ON l1.solution_id = s.id WHERE l1.ci_id = :this->id", "bPropagate"=>true, "iDistance"=>2),
 			);
 			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
+			break;
+		default:
+			return parent::GetRelationQueries($sRelCode);
 		}
 	}
 	
@@ -741,12 +745,23 @@ abstract class SoftwareInstance extends FunctionalCI
 	{
 		switch ($sRelCode)
 		{
-		case "impacts":
+			case "impacts":
 			$aRels = array(
 				// Actually this should be limited to the Software instances based on a DBServer Application type...
 				"db_instances" => array("sQuery"=>"SELECT DatabaseInstance AS db WHERE db.db_server_instance_id = :this->id", "bPropagate"=>true, "iDistance"=>5),
 			);
 			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
+			break;
+			
+			case 'depends on':
+			$aRels = array(
+				"applications" => array("sQuery"=>"SELECT Device JOIN ApplicationInstance AS app ON app.device_id = Device.id WHERE app.id = :this->id", "bPropagate"=>true, "iDistance"=>5),			
+			);
+			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
+			break;
+			
+			default:
+			return parent::GetRelationQueries($sRelCode);			
 		}
 	}
 }
@@ -842,6 +857,21 @@ class DatabaseInstance extends FunctionalCI
 	{
 		return $this->Get('name').' - '.$this->Get('db_server_instance_name');
 	}
+	public static function GetRelationQueries($sRelCode)
+	{
+		switch ($sRelCode)
+		{
+			case "depends on":
+			$aRels = array(
+				"db_instances" => array("sQuery"=>"SELECT DBServerInstance AS db_server_inst JOIN DatabaseInstance AS db ON  db.db_server_instance_id = db_server_inst.id WHERE db.id = :this->id", "bPropagate"=>true, "iDistance"=>5),
+			);
+			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
+			break;
+						
+			default:
+			return parent::GetRelationQueries($sRelCode);			
+		}
+	}
 }
 class ApplicationSolution extends FunctionalCI
 {
@@ -877,11 +907,22 @@ class ApplicationSolution extends FunctionalCI
 	{
 		switch ($sRelCode)
 		{
-		case "impacts":
+			case "impacts":
 			$aRels = array(
 				"process" => array("sQuery"=>"SELECT BusinessProcess AS p JOIN lnkProcessToSolution AS l1 ON l1.process_id = p.id WHERE l1.solution_id = :this->id", "bPropagate"=>true, "iDistance"=>3),
 			);
 			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
+			break;
+			
+			case "depends on":
+			$aRels = array(
+				"solution" => array("sQuery"=>"SELECT FunctionalCI AS ci JOIN lnkSolutionToCI AS l1 ON l1.ci_id = ci.id WHERE l1.solution_id = :this->id", "bPropagate"=>true, "iDistance"=>2),
+			);
+			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
+			break;
+						
+			default:
+			return parent::GetRelationQueries($sRelCode);			
 		}
 	}
 }
@@ -908,11 +949,27 @@ class BusinessProcess extends FunctionalCI
 		MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("used_solution_list", array("linked_class"=>"lnkProcessToSolution", "ext_key_to_me"=>"process_id", "ext_key_to_remote"=>"solution_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'description', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'used_solution_list'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'description', 'contact_list', 'document_list', 'contract_list', 'ticket_list', 'used_solution_list'));
 		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'description'));
 		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'description'));
 		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'description'));
 	}
+	
+	public static function GetRelationQueries($sRelCode)
+	{
+		switch ($sRelCode)
+		{
+			case "depends on":
+			$aRels = array(
+				"solution" => array("sQuery"=>"SELECT ApplicationSolution AS app JOIN lnkProcessToSolution AS l1 ON l1.solution_id = app.id WHERE l1.process_id = :this->id", "bPropagate"=>true, "iDistance"=>3),
+			);
+			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
+			break;
+			
+			default:
+			return parent::GetRelationQueries($sRelCode);			
+		}
+	}
 }
 abstract class ConnectableCI extends FunctionalCI
 {
@@ -978,11 +1035,12 @@ class NetworkInterface extends ConnectableCI
 		MetaModel::Init_AddAttribute(new AttributeExternalField("connected_name", array("allowed_values"=>null, "extkey_attcode"=>"connected_if", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("connected_if_device_id", array("allowed_values"=>null, "extkey_attcode"=>"connected_if", "target_attcode"=>"device_id", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("connected_if_device_id_name", array("allowed_values"=>null, "extkey_attcode"=>"connected_if", "target_attcode"=>"device_name", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeEnum("link_type", array("allowed_values"=>new ValueSetEnum('uplink,downlink'), "sql"=>"link_type", "default_value"=>"uplink", "is_null_allowed"=>false, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'link_type', 'connected_if', 'connected_if_device_id', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
 		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
-		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'logical_type', 'physical_type', 'connected_if'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'connected_if_device_id'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'logical_type', 'physical_type', 'link_type', 'connected_if_device_id'));
 	}
 
 	public function GetName()
@@ -1022,11 +1080,23 @@ abstract class Device extends ConnectableCI
 	{
 		switch ($sRelCode)
 		{
-		case "impacts":
+			case "impacts":
 			$aRels = array(
 				"applications" => array("sQuery"=>"SELECT SoftwareInstance AS app WHERE app.device_id = :this->id", "bPropagate"=>true, "iDistance"=>5),
+				"connected_devices" => array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.device_id = :this->id AND if2.link_type='downlink'", "bPropagate"=>true, "iDistance"=>5),
 			);
 			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
+			break;
+			
+			case "depends on":
+			$aRels = array(
+				"connected_devices" => array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.device_id = :this->id AND if2.link_type='uplink'", "bPropagate"=>true, "iDistance"=>5),
+			);
+			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
+			break;
+
+			default:
+			return parent::GetRelationQueries($sRelCode);			
 		}
 	}
 }
@@ -1396,7 +1466,7 @@ class lnkProcessToSolution extends cmdbAbstractObject
 ////////////////////////////////////////////////////////////////////////////////////
 // Create the top-level group. fRank = 1, means it will be inserted after the group '0', which is usually 'Welcome'
 
-$oAdminMenu = new MenuGroup('DataAdministration', 999);
+$oAdminMenu = new MenuGroup('DataAdministration', 70);
 $iAdminGroup = $oAdminMenu->GetIndex();
 
 new WebPageMenuNode('Audit', '../pages/audit.php', $iAdminGroup, 33 /* fRank */);
@@ -1408,13 +1478,13 @@ new OQLMenuNode('Application', 'SELECT Application', $iTopology, 20 /* fRank */)
 new OQLMenuNode('DBServer', 'SELECT DBServer', $iTopology, 40 /* fRank */);
 
 
-$oConfigManagementGroup = new MenuGroup('ConfigManagement', 1 /* fRank */);
+$oConfigManagementGroup = new MenuGroup('ConfigManagement', 20 /* fRank */);
 
 // Create an entry, based on a custom template, for the Configuration management overview, under the top-level group
-new TemplateMenuNode('ConfigManagementOverview', '../business/templates/configuration_management_menu.html', $oConfigManagementGroup->GetIndex(), 0 /* fRank */);
+new TemplateMenuNode('ConfigManagementOverview', '../../modules/itop-config-mgmt-1.0.0/overview.html', $oConfigManagementGroup->GetIndex(), 0 /* fRank */);
 
 
-$oContactNode = new TemplateMenuNode('Contact', '../business/templates/contacts_menu.html', $oConfigManagementGroup->GetIndex(), 1 /* fRank */);
+$oContactNode = new TemplateMenuNode('Contact', '../../modules/itop-config-mgmt-1.0.0/contacts_menu.html', $oConfigManagementGroup->GetIndex(), 1 /* fRank */);
 new OQLMenuNode('Person', 'SELECT Person', $oContactNode->GetIndex(), 1 /* fRank */);
 new OQLMenuNode('Team', 'SELECT Team', $oContactNode->GetIndex(), 2 /* fRank */);
 
@@ -1422,7 +1492,7 @@ new OQLMenuNode('Document', 'SELECT Document', $oConfigManagementGroup->GetIndex
 new OQLMenuNode('Location', 'SELECT Location', $oConfigManagementGroup->GetIndex(), 3 /* fRank */);
 
 
-$oCINode = new TemplateMenuNode('ConfigManagementCI', '../business/templates/configuration_items_menu.html', $oConfigManagementGroup->GetIndex(), 2 /* fRank */);
+$oCINode = new TemplateMenuNode('ConfigManagementCI', '../modules/itop-config-mgmt-1.0.0/cis_menu.html', $oConfigManagementGroup->GetIndex(), 4 /* fRank */);
 
 new OQLMenuNode('BusinessProcess', 'SELECT BusinessProcess', $oCINode->GetIndex(), 0 /* fRank */);
 new OQLMenuNode('ApplicationSolution', 'SELECT ApplicationSolution', $oCINode->GetIndex(), 1 /* fRank */);

+ 11 - 9
modules/itop-incident-mgmt-1.0.0/en.dict.itop-incident-mgmt.php

@@ -24,15 +24,17 @@
  */
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Menu:IncidentManagement' => 'Incidents',
-	'Menu:Incidents' => 'Incidents',
-	'Menu:Incidents+' => 'Incidents',
-	'Menu:ClosedIncidents' => 'Closed incidents',
-	'Menu:ClosedIncidents+' => 'Closed incidents',
-	'Menu:OpenedIncidents' => 'Opened incidents',
-	'Menu:OpenedIncidents+' => 'Opened incidents',
-	'Menu:MyIncidents' => 'My incidents',
-	'Menu:MyIncidents+' => 'Incidents assigned to me',
+	'Menu:IncidentManagement' => 'Incident Management',
+	'Menu:IncidentManagement+' => 'Incident Management',
+	'Menu:Incident:Overview' => 'Overview',
+	'Menu:Incident:Overview+' => 'Overview',
+	'Menu:Incident:MyIncidents' => 'My Incidents',
+	'Menu:Incident:MyIncidents+' => 'My Incidents',
+	'Menu:Incident:EscalatedIncidents' => 'Escalated Incidents',
+	'Menu:Incident:EscalatedIncidents+' => 'Escalated Incidents',
+	'Menu:Incident:OpenIncidents' => 'All Open Incidents',
+	'Menu:Incident:OpenIncidents+' => 'All Open Incidents',
+
 ));
 
 // Dictionnay conventions

+ 5 - 14
modules/itop-incident-mgmt-1.0.0/model.itop-incident-mgmt.php

@@ -63,19 +63,10 @@ class Incident extends ResponseTicket
 	}
 }
 
-$oMyMenuGroup = new MenuGroup('IncidentManagement', 1 /* fRank */);
-
-// By default, one entry per class
-//new TemplateMenuNode('MyIncidents', 'SELECT Incident', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-// incident dont je suis caller
-// incident dont je suis requester
-new OQLMenuNode('OpenedIncidents', 'SELECT Incident WHERE status IN ("new", "assigned", "escalation")', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-new OQLMenuNode('MyIncidents', 'SELECT Incident WHERE status IN ("assigned", "escalation_ttr") AND agent_id = :current_contact_id', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-//new OQLMenuNode('EscalatedIncidents', 'SELECT Incident WHERE status IN ("escalation")', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-//new TemplateMenuNode('IncidentOverview', 'SELECT Incident', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-
-
-//new TemplateMenuNode('WelcomeMenuPage', '../business/templates/welcome_menu.html', $oWelcomeMenu->GetIndex() /* oParent */, 1 /* fRank */);
-
+$oMyMenuGroup = new MenuGroup('IncidentManagement', 40 /* fRank */);
+new TemplateMenuNode('Incident:Overview', '../modules/itop-incident-mgmt-1.0.0/overview.html', $oMyMenuGroup->GetIndex() /* oParent */, 0 /* fRank */);
+new OQLMenuNode('Incident:MyIncidents', 'SELECT Incident WHERE agent_id = :current_contact_id', $oMyMenuGroup->GetIndex(), 1 /* fRank */);
+new OQLMenuNode('Incident:EscalatedIncidents', 'SELECT Incident WHERE status IN ("escalation")', $oMyMenuGroup->GetIndex(), 2 /* fRank */);
+new OQLMenuNode('Incident:OpenIncidents', 'SELECT Incident WHERE status IN ("new", "assigned", "escalation", "resolved")', $oMyMenuGroup->GetIndex(), 3 /* fRank */);
 
 ?>

+ 9 - 6
modules/itop-request-mgmt-1.0.0/en.dict.itop-request-mgmt.php

@@ -25,12 +25,15 @@
 
 Dict::Add('EN US', 'English', 'English', array(
 	'Menu:RequestManagement' => 'Helpdesk',
-	'Menu:UserRequests' => 'All requests',
-	'Menu:UserRequests+' => 'All requests, whatever their state',
-	'Menu:ClosedRequests' => 'Closed requests',
-	'Menu:ClosedRequests+' => 'Closed requests',
-	'Menu:OpenedRequests' => 'Opened requests',
-	'Menu:OpenedRequests+' => 'Opened requests',
+	'Menu:RequestManagement+' => 'Helpdesk',
+	'Menu:UserRequest:Overview' => 'Overview',
+	'Menu:UserRequest:Overview+' => 'Overview',
+	'Menu:UserRequest:MyRequests' => 'My Requests',
+	'Menu:UserRequest:MyRequests+' => 'My Requests',
+	'Menu:UserRequest:EscalatedRequests' => 'Escalated Requests',
+	'Menu:UserRequest:EscalatedRequests+' => 'Escalated Requests',
+	'Menu:UserRequest:OpenRequests' => 'All Open Requests',
+	'Menu:UserRequest:OpenRequests+' => 'All Open Requests',
 ));
 
 // Dictionnay conventions

+ 5 - 5
modules/itop-request-mgmt-1.0.0/model.itop-request-mgmt.php

@@ -91,12 +91,12 @@ class UserRequest extends ResponseTicket
 	}
 }
 
-$oMyMenuGroup = new MenuGroup('RequestManagement', 1 /* fRank */);
+$oMyMenuGroup = new MenuGroup('RequestManagement', 30 /* fRank */);
 
-// By default, one entry per class
-new OQLMenuNode('UserRequests', 'SELECT UserRequest', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-new OQLMenuNode('OpenedRequests', 'SELECT UserRequest WHERE status IN ("new", "assigned", "escalation")', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-new OQLMenuNode('ClosedRequests', 'SELECT UserRequest WHERE status IN ("resolved", "closed")', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
+new TemplateMenuNode('UserRequest:Overview', '../modules/itop-request-mgmt-1.0.0/overview.html', $oMyMenuGroup->GetIndex() /* oParent */, 0 /* fRank */);
+new OQLMenuNode('UserRequest:MyRequests', 'SELECT UserRequest WHERE agent_id = :current_contact_id', $oMyMenuGroup->GetIndex(), 1 /* fRank */);
+new OQLMenuNode('UserRequest:EscalatedRequests', 'SELECT UserRequest WHERE status IN ("escalation")', $oMyMenuGroup->GetIndex(), 2 /* fRank */);
+new OQLMenuNode('UserRequest:OpenRequests', 'SELECT UserRequest WHERE status IN ("new", "assigned", "escalation", "frozen", "resolved")', $oMyMenuGroup->GetIndex(), 3 /* fRank */);
 //new TemplateMenuNode('WelcomeMenuPage', '../business/templates/welcome_menu.html', $oWelcomeMenu->GetIndex() /* oParent */, 1 /* fRank */);
 
 ?>

+ 2 - 0
modules/itop-service-mgmt-1.0.0/en.dict.itop-service-mgmt.php

@@ -37,6 +37,8 @@
 Dict::Add('EN US', 'English', 'English', array(
 'Menu:ServiceManagement' => 'Service Management',
 'Menu:ServiceManagement+' => 'Service Management Overview',
+'Menu:Service:Overview' => 'Overview',
+'Menu:Service:Overview+' => '',
 'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contracts by service level',
 'UI-ServiceManagementMenu-ContractsByStatus' => 'Contracts by status',
 'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contracts ending in less then 30 days',

+ 2 - 6
modules/itop-service-mgmt-1.0.0/model.itop-service-mgmt.php

@@ -567,13 +567,9 @@ class lnkServiceToCI extends cmdbAbstractObject
 //			+ ...
 ////////////////////////////////////////////////////////////////////////////////////
 
-$oAdminMenu = new MenuGroup('AdminTools', 999);
-$iAdminGroup = $oAdminMenu->GetIndex();
-//new OQLMenuNode('ServiceType', 'SELECT ServiceType', $iAdminGroup, 25 /* fRank */);
-
-
-$oServiceManagementGroup = new MenuGroup('ServiceManagement', 2 /* fRank */);
+$oServiceManagementGroup = new MenuGroup('ServiceManagement', 60 /* fRank */);
 $iRank = 0;
+new TemplateMenuNode('Service:Overview', '../modules/itop-service-mgmt-1.0.0/overview.html', $oServiceManagementGroup->GetIndex() /* oParent */, $iRank++ /* fRank */);
 new OQLMenuNode('ProviderContract', 'SELECT ProviderContract', $oServiceManagementGroup->GetIndex(), $iRank++);
 new OQLMenuNode('CustomerContract', 'SELECT CustomerContract', $oServiceManagementGroup->GetIndex(),  $iRank++);
 new OQLMenuNode('Service', 'SELECT Service', $oServiceManagementGroup->GetIndex(), $iRank++);