ソースを参照

- Upgraded to the latest version of Open Flash Charts (Version 2 Lug Wyrm Charmer)
- Localization of the menus 90% done.
- Removed the old types of Flash charts, (no longer used anyway, now we rely on open-flash-charts)

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@441 a333f486-631f-4898-b8df-5754b55c2be0

dflaven 15 年 前
コミット
ff73dd935c

+ 7 - 95
application/displayblock.class.inc.php

@@ -575,105 +575,16 @@ class DisplayBlock
 	 		$sHtml .= "<div id=\"LnkSearch_$iSearchSectionId\" class=\"DrawerHandle\">".Dict::S('UI:SearchToggle')."</div>\n";
 			break;
 			
-			case 'pie_chart':
-			$sGroupBy = isset($aExtraParams['group_by']) ? $aExtraParams['group_by'] : '';
-			$sFilter = $this->m_oFilter->ToOQL();
-			$sHtml .= "
-			<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"
-				codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" 
-				WIDTH=\"400\" 
-				HEIGHT=\"250\" 
-				id=\"charts\" 
-				ALIGN=\"\">
-			<PARAM NAME=movie VALUE=\"../images/charts.swf?library_path=../images/charts_library&xml_source=".urlencode("../pages/ajax.render.php?operation=pie_chart&group_by=$sGroupBy&encoding=oql&filter=".urlencode($sFilter))."\">
-			<PARAM NAME=\"quality\" VALUE=\"high\">
-			<PARAM NAME=\"bgcolor\" VALUE=\"#ffffff\">
-			
-			<EMBED src=\"../images/charts.swf?library_path=../images/charts_library&xml_source=".urlencode("../pages/ajax.render.php?operation=pie_chart&group_by=$sGroupBy&encoding=oql&filter=".urlencode($sFilter))."\" 
-			       quality=\"high\"
-			       bgcolor=\"#ffffff\"  
-			       WIDTH=\"400\" 
-			       HEIGHT=\"250\" 
-			       NAME=\"charts\" 
-			       ALIGN=\"\" 
-			       swLiveConnect=\"true\" 
-			       TYPE=\"application/x-shockwave-flash\" 
-			       PLUGINSPAGE=\"http://www.macromedia.com/go/getflashplayer\">
-			</EMBED>
-			</OBJECT>
-			";
-			break;
-			
-			case 'pie_chart_ajax':
-			if (isset($aExtraParams['group_by']))
-			{
-				$sGroupByField = $aExtraParams['group_by'];
-				$aGroupBy = array();
-				while($oObj = $this->m_oSet->Fetch())
-				{
-					$sValue = $oObj->Get($sGroupByField);
-					$aGroupBy[$sValue] = isset($aGroupBy[$sValue]) ? $aGroupBy[$sValue]+1 : 1;
-				}
-				$sFilter = urlencode($this->m_oFilter->serialize());
-				$aData = array();
-				$sHtml .= "<chart>\n";
-				$sHtml .= "<chart_type>3d pie</chart_type>\n";
-				$sHtml .= "<chart_data>\n";
-				$sHtml .= "<row>\n";
-				$sHtml .= "<null/>\n";
-				foreach($aGroupBy as $sValue => $void)
-				{
-					$sHtml .= "<string>$sValue</string>\n";
-				}
-				$sHtml .= "</row>\n";
-				$sHtml .= "<row>\n";
-				$sHtml .= "<string></string>\n";
-				foreach($aGroupBy as $void => $iCount)
-				{
-					$sHtml .= "<number>$iCount</number>\n";
-				}
-				$sHtml .= "</row>\n";
-				$sHtml .= "</chart_data>\n";
-				$sHtml .= "
-	<chart_value color='ffffff' alpha='90' font='arial' bold='true' size='10' position='inside' prefix='' suffix='' decimals='0' separator='' as_percentage='true' />
-
-	<draw>
-		<text color='000000' alpha='10' font='arial' rotation='0' bold='true' size='30' x='0' y='140' width='400' height='150' h_align='center' v_align='bottom'>|||||||||||||||||||||||||||||||||||||||||||||||</text>
-	</draw>
-
-	<legend_label layout='horizontal' bullet='circle' font='arial' bold='true' size='13' color='000000' alpha='85' />
-	<legend_rect fill_color='ffffff' fill_alpha='10' line_color='ffffff' line_alpha='50' line_thickness='0' />
-	<series_color>
-		<color>ddaa41</color>
-		<color>88dd11</color>
-		<color>4e62dd</color>
-		<color>ff8811</color>
-		<color>4d4d4d</color>
-		<color>5a4b6e</color>
-		<color>1188ff</color>
-	</series_color>
-				";
-				$sHtml .= "</chart>\n";
-			}
-			else
-			{
-				// Simply count the number of elements in the set
-				$iCount = $oSet->Count();
-				$sHtml .= "<chart>\n</chart>\n";
-			}
-			break;
-			
 			case 'open_flash_chart':
 			static $iChartCounter = 0;
 			$sChartType = isset($aExtraParams['chart_type']) ? $aExtraParams['chart_type'] : 'pie';
 			$sTitle = isset($aExtraParams['chart_title']) ? $aExtraParams['chart_title'] : '';
 			$sGroupBy = isset($aExtraParams['group_by']) ? $aExtraParams['group_by'] : '';
 			$sFilter = $this->m_oFilter->ToOQL();
-			$sHtml .= "<script>
-			swfobject.embedSWF(\"../images/open-flash-chart.swf\", \"my_chart_{$iChartCounter}\", \"400\", \"400\",\"9.0.0\", \"expressInstall.swf\",
-			{\"data-file\":\"".urlencode("../pages/ajax.render.php?operation=open_flash_chart&params[group_by]=$sGroupBy&params[chart_type]=$sChartType&params[chart_title]=$sTitle&encoding=oql&filter=".urlencode($sFilter))."\"});
-</script>\n";
 			$sHtml .= "<div id=\"my_chart_{$iChartCounter}\">If the chart does not display, <a href=\"http://get.adobe.com/flash/\" target=\"_blank\">install Flash</a></div>\n";
+			$oPage->add_script("function ofc_resize(left, width, top, height) { /* do nothing special */ }");
+			$oPage->add_ready_script("swfobject.embedSWF(\"../images/open-flash-chart.swf\", \"my_chart_{$iChartCounter}\", \"100%\", \"300\",\"9.0.0\", \"expressInstall.swf\",
+			{\"data-file\":\"".urlencode("../pages/ajax.render.php?operation=open_flash_chart&params[group_by]=$sGroupBy&params[chart_type]=$sChartType&params[chart_title]=$sTitle&encoding=oql&filter=".urlencode($sFilter))."\"});\n");
 			$iChartCounter++;
 			break;
 			
@@ -742,6 +653,7 @@ class DisplayBlock
 				$oChartElement->set_start_angle( 35 );
 				$oChartElement->set_animate( true );
 				$oChartElement->set_tooltip( '#label# - #val# (#percent#)' );
+				$oChartElement->set_colours( array('#FF8A00', '#909980', '#2C2B33', '#CCC08D', '#596664') );
 				if (isset($aExtraParams['group_by']))
 				{
 					$sGroupByField = $aExtraParams['group_by'];
@@ -755,7 +667,7 @@ class DisplayBlock
 					$aData = array();
 					foreach($aGroupBy as $sValue => $iValue)
 					{
-						$aData[] = new pie_value($iValue, $sValue);
+						$aData[] = new pie_value($iValue, $sValue); //@@ BUG: not passed via ajax !!!
 					}
 	
 	
@@ -763,9 +675,9 @@ class DisplayBlock
 					$oChart->x_axis = null;
 				}
 			}				
-			if (isset($aExtraParams['chart_title'])) //@@ BUG: not passed via ajax !!!
+			if (isset($aExtraParams['chart_title']))
 			{
-				$oTitle = new title( $aExtraParams['chart_title'] );
+				$oTitle = new title( Dict::S($aExtraParams['chart_title']) );
 				$oChart->set_title( $oTitle );
 			}
 			$oChart->set_bg_colour('#FFFFFF');

+ 1 - 0
core/metamodel.class.php

@@ -2937,6 +2937,7 @@ abstract class MetaModel
 
 		// Note: load the dictionary as soon as possible, because it might be
 		//       needed when some error occur
+		require_once('../core/dict.class.inc.php');
 		foreach ($oConfig->GetDictionaries() as $sModule => $sToInclude)
 		{
 			self::Plugin($sConfigFile, 'dictionaries', $sToInclude);

+ 15 - 2
css/light-grey.css

@@ -21,9 +21,8 @@ body {
 
 h1 {
     font-family: Tahoma, Verdana, Arial, Helvetica;
-    font-size: 10pt;
     color: #000;
-    font-weight:10px;
+    font-weight: bold;
 }
 .hilite {
     color: #d81515;
@@ -685,4 +684,18 @@ td.cell_error {
 }
 table.transparent, table.transparent td {
 	background: transparent;
+}
+p.page-header {
+	color:#83B217;
+	font-weight: bold;
+	font-size: 2em;
+	font-family: Verdana, Arial, Helvetica, Sans-Serif
+}
+td.dashboard {
+	vertical-align:top;
+	text-align: center;
+	border: 1px solid #ccc;
+	-moz-border-radius: 10px;
+	padding: 10px;
+	width: 50%;
 }

+ 169 - 1
dictionaries/dictionary.itop.ui.php

@@ -682,8 +682,176 @@ Dict::Add('EN US', 'English', 'English', array(
 	'UI:UserManagement:NoLifeCycleApplicable' => 'N/A',
 	'UI:UserManagement:NoLifeCycleApplicable+' => 'No lifecycle has been defined for this class',
 	'UI:UserManagement:GrantMatrix' => 'Grant Matrix',
-	'UI:USerManagement:LinkBetween_User_And_Profile' => 'Link between %1$s and %2$s',
+	'UI:UserManagement:LinkBetween_User_And_Profile' => 'Link between %1$s and %2$s',
+	
+	'UI:AdminToolsMenu' => 'Admin tools',
+	'UI:AdminToolsMenu+' => 'Admin tools',
+	'UI:AdminToolsMenu:Title' => 'Administration tools',
+	'UI:AdminToolsMenu:Text' => 'Tools accessible only to users having the administrator profile',
 
+	'UI:AuditMenu' => 'Audit',
+	'UI:AuditMenu+' => 'Audit',
+	
+	'UI:ChangeManagementMenu' => 'Change Management',
+	'UI:ChangeManagementMenu+' => 'Change Management',
+	'UI:ChangeManagementMenu:Title' => 'Changes Overview',
+	'UI-ChangeManagementMenu-ChangesByType' => 'Changes by type',
+	'UI-ChangeManagementMenu-ChangesByStatus' => 'Changes by status',
+	'UI-ChangeManagementMenu-ChangesByWorkgroup' => 'Changes by workgroup',
+	'UI-ChangeManagementMenu-ChangesNotYetAssigned' => 'Changes not yet assigned',
+
+	'UI:ConfigurationItemsMenu'=> 'Configuration Items',
+	'UI:ConfigurationItemsMenu+'=> 'All Devices',
+	'UI:ConfigurationItemsMenu:Title' => 'Configuration Items Overview',
+	'UI-ConfigurationItemsMenu-ServersByCriticity' => 'Servers by criticity',
+	'UI-ConfigurationItemsMenu-PCsByCriticity' => 'PCs by criticity',
+	'UI-ConfigurationItemsMenu-NWDevicesByCriticity' => 'Network devices by criticity',
+	'UI-ConfigurationItemsMenu-ApplicationsByCriticity' => 'Applications by criticity',
+	
+	'UI:ConfigurationManagementMenu' => 'Configuration Management',
+	'UI:ConfigurationManagementMenu+' => 'Configuration Management',
+	'UI:ConfigurationManagementMenu:Title' => 'Infrastructure Overview',
+	'UI-ConfigurationManagementMenu-InfraByType' => 'Infrastructure objects by type',
+	'UI-ConfigurationManagementMenu-InfraByStatus' => 'Infrastructure objects by status',
+
+	'UI:ContactsMenu' => 'Contacts',
+	'UI:ContactsMenu+' => 'Contacts',
+	'UI:ContactsMenu:Title' => 'Contacts Overview',
+	'UI-ContactsMenu-ContactsByLocation' => 'Contacts by location',
+	'UI-ContactsMenu-ContactsByType' => 'Contacts by type',
+	'UI-ContactsMenu-ContactsByStatus' => 'Contacts by status',
+
+	'UI:CSVImportMenu' => 'CSV import',
+	'UI:CSVImportMenu+' => 'Bulk creation or update',
+	
+	'UI:DataModelMenu' => 'Data Model',
+	'UI:DataModelMenu+' => 'Overview of the Data Model',
+	
+	'UI:ExportMenu' => 'Export',
+	'UI:ExportMenu+' => 'Export the results of any query in HTML, CSV or XML',
+	
+	'UI:IncidentManagementMenu' => 'Incident Management',
+	'UI:IncidentManagementMenu+' => 'Incident Management',
+	'UI:IncidentManagementMenu:Title' => 'Incident Overview',
+	'UI-IncidentManagementMenu-IncidentsByType' => 'Incidents by type',
+	'UI-IncidentManagementMenu-IncidentsByStatus' => 'Incidents by status',
+	'UI-IncidentManagementMenu-IncidentsByWorkgroup' => 'Incidents by workgroup',
+	'UI-IncidentManagementMenu-IncidentsNotYetAssigned' => 'Incidents not yet assigned',
+	
+	'UI:NotificationsMenu' => 'Notifications',
+	'UI:NotificationsMenu+' => 'Configuration of the Notifications',
+	
+	'UI:RunQueriesMenu' => 'Run Queries',
+	'UI:RunQueriesMenu+' => 'Run any query',
+	
+	'UI:ServiceDeskMenu' => 'Service Desk',
+	'UI:ServiceDeskMenu+' => 'Service Desk',
+	'UI:ServiceDeskMenu:Title' => 'Service Calls Overview',
+	'UI-ServiceDeskMenu-CallsByType' => 'Calls by type',
+	'UI-ServiceDeskMenu-CallsByStatus' => 'Calls by status',
+	'UI-ServiceDeskMenu-CallsBySeverity' => 'Calls by severity',
+	'UI-ServiceDeskMenu-CallsNotYetAssigned' => 'Calls not yet assigned',
+	
+	'UI:ServiceManagementMenu' => 'Service Management',
+	'UI:ServiceManagementMenu+' => 'Service Management',
+	'UI:ServiceManagementMenu:Title' => 'Service Management Overview',
+	'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contracts by service level',
+	'UI-ServiceManagementMenu-ContractsByStatus' => 'Contracts by status',
+	'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contracts ending in less then 30 days',
+	
+	'UI:AdvancedToolsMenu' => 'Tools',
+	'UI:AdvancedToolsMenu+' => 'Advanced tools',
+	
+	'UI:UniversalSearchMenu' => 'Universal Search',
+	'UI:UniversalSearchMenu+' => 'Search for anything...',
+	
+	'UI:UserManagementMenu' => 'User Management',
+	'UI:UserManagementMenu+' => 'User management',
+	
+	'UI:ApplicationsMenu' => 'Applications',
+	'UI:ApplicationsMenu+' => 'Applications',
+	'UI:ApplicationsMenu:Title' => 'Applications',
+	'UI:CircuitsMenu' => 'Circuits',
+	'UI:CircuitsMenu+' => 'Circuits',
+	'UI:CircuitsMenu:Title' => 'Circuits',
+	'UI:ContractsMenu' => 'Contracts',
+	'UI:ContractsMenu+' => 'Contracts',
+	'UI:ContractsMenu:Title' => 'Contracts',
+	'UI:InterfacesMenu' => 'Interfaces',
+	'UI:InterfacesMenu+' => 'Interfaces',
+	'UI:InterfacesMenu:Title' => 'Interfaces',
+	'UI:NetworkDevicesMenu' => 'Network Devices',
+	'UI:NetworkDevicesMenu+' => 'Network Devices',
+	'UI:NetworkDevicesMenu:Title' => 'Network Devices',
+	'UI:PatchesMenu' => 'Patches',
+	'UI:PatchesMenu+' => 'Patches',
+	'UI:PatchesMenu:Title' => 'Patches',
+	'UI:PCsMenu' => 'PCs',
+	'UI:PCsMenu+' => 'PCs',
+	'UI:PCsMenu:Title' => 'PCs',
+	'UI:ServersMenu' => 'Servers',
+	'UI:ServersMenu+' => 'Servers',
+	'UI:ServersMenu:Title' => 'Servers',
+	'UI:ServicesMenu' => 'Services',
+	'UI:ServicesMenu+' => 'Services',
+	'UI:ServicesMenu:Title' => 'Services',
+	'UI:SubnetsMenu' => 'Subnets',
+	'UI:SubnetsMenu+' => 'Subnets',
+	'UI:SubnetsMenu:Title' => 'Subnets',
+	'UI:ApplicationLogMenu' => 'Application Log',
+	'UI:ApplicationLogMenu+' => 'Application Log',
+	'UI:ApplicationLogMenu:Title' => 'Application Log',
+	'UI:ClosedChangesMenu' => 'Closed Changes',
+	'UI:ClosedChangesMenu+' => 'Closed Changes',
+	'UI:ClosedChangesMenu:Title' => 'Closed Changes',
+	'UI:ClosedIncidentsMenu' => 'Closed Incidents',
+	'UI:ClosedIncidentsMenu+' => 'Closed Incidents',
+	'UI:ClosedIncidentsMenu:Title' => 'Closed Incidents',
+	'UI:DocumentsMenu' => 'Documents',
+	'UI:DocumentsMenu+' => 'Documents',
+	'UI:DocumentsMenu:Title' => 'Documents',
+	'UI:GroupingMenu' => 'Groups',
+	'UI:GroupingMenu+' => 'Groups',
+	'UI:GroupingMenu:Title' => 'Groups',
+	'UI:KnownErrorsMenu' => 'Known Errors',
+	'UI:KnownErrorsMenu+' => 'Known Errors',
+	'UI:KnownErrorsMenu:Title' => 'Known Errors',
+	'UI:LocationsMenu' => 'Locations',
+	'UI:LocationsMenu+' => 'Locations',
+	'UI:LocationsMenu:Title' => 'Locations',
+	'UI:MyChangesMenu' => 'My Changes',
+	'UI:MyChangesMenu+' => 'My Changes',
+	'UI:MyChangesMenu:Title' => 'My Changes',
+	'UI:MyIncidentsMenu' => 'My Incidents',
+	'UI:MyIncidentsMenu+' => 'My Incidents',
+	'UI:MyIncidentsMenu:Title' => 'My Incidents',
+	'UI:MyServiceCallsMenu' => 'My Service Calls',
+	'UI:MyServiceCallsMenu+' => 'My Service Calls',
+	'UI:MyServiceCallsMenu:Title' => 'My Service Calls',
+	'UI:OpenChangesMenu' => 'Open Changes',
+	'UI:OpenChangesMenu+' => 'Open Changes',
+	'UI:OpenChangesMenu:Title' => 'Open Changes',
+	'UI:OpenIncidentsMenu' => 'Open Incidents',
+	'UI:OpenIncidentsMenu+' => 'Open Incidents',
+	'UI:OpenIncidentsMenu:Title' => 'Open Incidents',
+	'UI:OpenServiceCallsMenu' => 'Open Service Calls',
+	'UI:OpenServiceCallsMenu+' => 'Open Service Calls',
+	'UI:OpenServiceCallsMenu:Title' => 'Open Service Calls',
+	'UI:PersonsMenu' => 'Persons',
+	'UI:PersonsMenu+' => 'Persons',
+	'UI:PersonsMenu:Title' => 'Persons',
+	'UI:ProfilesMenu' => 'Profiles',
+	'UI:ProfilesMenu+' => 'Profiles',
+	'UI:ProfilesMenu:Title' => 'Profiles',
+	'UI:ScheduledOutagesMenu' => 'Scheduled Outages',
+	'UI:ScheduledOutagesMenu+' => 'Scheduled Outages',
+	'UI:ScheduledOutagesMenu:Title' => 'Scheduled Outages',
+	'UI:TeamsMenu' => 'Teams',
+	'UI:TeamsMenu+' => 'Teams',
+	'UI:TeamsMenu:Title' => 'Teams',
+	'UI:UserAccountsMenu' => 'User Accounts',
+	'UI:UserAccountsMenu+' => 'User Accounts',
+	'UI:UserAccountsMenu:Title' => 'User Accounts',	
 ));
 
 

+ 170 - 0
dictionaries/fr.dictionary.itop.ui.php

@@ -681,6 +681,176 @@ Dict::Add('FR FR', 'French', 'Français', array(
 	'UI:UserManagement:GrantMatrix' => 'Matrice des droits',
 	'UI:USerManagement:LinkBetween_User_And_Profile' => 'Lien entre %1$s et %2$s',
 
+	'UI:AdminToolsMenu' => 'Outils d\'admin',
+	'UI:AdminToolsMenu+' => 'Outils d\'administration',
+	'UI:AdminToolsMenu:Title' => 'Outils d\'administration',
+	'UI:AdminToolsMenu:Text' => 'Ces outils sont accessibles uniquement aux utilisateur possédant le profil Administrateur.',
+
+	'UI:AuditMenu' => 'Audit',
+	'UI:AuditMenu+' => 'Audit',
+	
+	'UI:ChangeManagementMenu' => 'Gestion du Changement',
+	'UI:ChangeManagementMenu+' => 'Gestion du Changement',
+	'UI:ChangeManagementMenu:Title' => 'Résumé des changements',
+	'UI-ChangeManagementMenu-ChangesByType' => 'Changements par type',
+	'UI-ChangeManagementMenu-ChangesByStatus' => 'Changements par état',
+	'UI-ChangeManagementMenu-ChangesByWorkgroup' => 'Changements par workgroup',
+	'UI-ChangeManagementMenu-ChangesNotYetAssigned' => 'Changements en attente d\'assignation',
+	
+	'UI:ConfigurationItemsMenu'=> 'Actifs (CIs)',
+	'UI:ConfigurationItemsMenu+'=> 'Tous les actifs',
+	'UI:ConfigurationItemsMenu:Title' => 'Résumé des actifs (CIs)',
+	'UI-ConfigurationItemsMenu-ServersByCriticity' => 'Serveurs par criticité',
+	'UI-ConfigurationItemsMenu-PCsByCriticity' => 'PCs par criticité',
+	'UI-ConfigurationItemsMenu-NWDevicesByCriticity' => 'Equipements réseau par criticité',
+	'UI-ConfigurationItemsMenu-ApplicationsByCriticity' => 'Applications par criticité',
+	
+	'UI:ConfigurationManagementMenu' => 'Gestion de Configuration',
+	'UI:ConfigurationManagementMenu+' => 'Gestion de Configuration',
+	'UI:ConfigurationManagementMenu:Title' => 'Résumé de l\'Infrastructure',
+	'UI-ConfigurationManagementMenu-InfraByType' => 'Nombre d\'éléments par type',
+	'UI-ConfigurationManagementMenu-InfraByStatus' => 'Nombre d\'éléments par état',
+	
+	'UI:ContactsMenu' => 'Contacts',
+	'UI:ContactsMenu+' => 'Contacts',
+	'UI:ContactsMenu:Title' => 'Résumé des contacts',
+	'UI-ContactsMenu-ContactsByLocation' => 'Contacts par emplacement',
+	'UI-ContactsMenu-ContactsByType' => 'Contacts par type',
+	'UI-ContactsMenu-ContactsByStatus' => 'Contacts par état',
+
+
+	'UI:CSVImportMenu' => 'Import CSV',
+	'UI:CSVImportMenu+' => 'Import ou mise à jour en masse',
+	
+	'UI:DataModelMenu' => 'Modèle de Données',
+	'UI:DataModelMenu+' => 'Résumé du Modèle de Données',
+	
+	'UI:ExportMenu' => 'Exportation',
+	'UI:ExportMenu+' => 'Exportation des résultats d\'une requête en HTML, CSV ou XML',
+	
+	'UI:IncidentManagementMenu' => 'Gestion des Incidents',
+	'UI:IncidentManagementMenu+' => 'Gestion des Incidents',
+	'UI:IncidentManagementMenu:Title' => 'Résumé des incidents',
+	'UI-IncidentManagementMenu-IncidentsByType' => 'Incidents par type',
+	'UI-IncidentManagementMenu-IncidentsByStatus' => 'Incidents par état',
+	'UI-IncidentManagementMenu-IncidentsByWorkgroup' => 'Incidents par workgroup',
+	'UI-IncidentManagementMenu-IncidentsNotYetAssigned' => 'Incidents en attente d\'assignation',
+		
+	'UI:NotificationsMenu' => 'Notifications',
+	'UI:NotificationsMenu+' => 'Configuration des Notifications',
+	
+	'UI:RunQueriesMenu' => 'Requêtes OQL',
+	'UI:RunQueriesMenu+' => 'Executer une requête OQL',
+	
+	'UI:ServiceDeskMenu' => 'Service Desk',
+	'UI:ServiceDeskMenu+' => 'Service Desk',
+	'UI:ServiceDeskMenu:Title' => 'Résumé des demandes utilisateur',
+	'UI-ServiceDeskMenu-CallsByType' => 'Demandes par type',
+	'UI-ServiceDeskMenu-CallsByStatus' => 'Demandes par état',
+	'UI-ServiceDeskMenu-CallsBySeverity' => 'Demandes par sévérité',
+	'UI-ServiceDeskMenu-CallsNotYetAssigned' => 'Demandes en attente d\'assignation',
+		
+	'UI:ServiceManagementMenu' => 'Gestion des Services',
+	'UI:ServiceManagementMenu+' => 'Gestion des Services',
+	'UI:ServiceManagementMenu:Title' => 'Résumé des services & contrats',
+	'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contrats par niveau de service',
+	'UI-ServiceManagementMenu-ContractsByStatus' => 'Contrats par état',
+	'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contrats se terminant dans moins de 30 jours',
+		
+	'UI:AdvancedToolsMenu' => 'Outils',
+	'UI:AdvancedToolsMenu+' => 'Outils Avancés',
+	
+	'UI:UniversalSearchMenu' => 'Recherche Universelle',
+	'UI:UniversalSearchMenu+' => 'Rechercher n\'importe quel objet...',
+	
+	'UI:UserManagementMenu' => 'Gestion des Utilisateurs',
+	'UI:UserManagementMenu+' => 'Gestion des Utilisateurs',
+	
+	'UI:ApplicationsMenu' => 'Applications',
+	'UI:ApplicationsMenu+' => 'Applications',
+	'UI:ApplicationsMenu:Title' => 'Applications',
+	'UI:CircuitsMenu' => 'Circuits',
+	'UI:CircuitsMenu+' => 'Circuits',
+	'UI:CircuitsMenu:Title' => 'Circuits',
+	'UI:ContractsMenu' => 'Contrats',
+	'UI:ContractsMenu+' => 'Contrats',
+	'UI:ContractsMenu:Title' => 'Contrats',
+	'UI:InterfacesMenu' => 'Interfaces',
+	'UI:InterfacesMenu+' => 'Interfaces',
+	'UI:InterfacesMenu:Title' => 'Interfaces',
+	'UI:NetworkDevicesMenu' => 'Equipements Réseau',
+	'UI:NetworkDevicesMenu+' => 'Equipements Réseau',
+	'UI:NetworkDevicesMenu:Title' => 'Equipements Réseau',
+	'UI:PatchesMenu' => 'Patches',
+	'UI:PatchesMenu+' => 'Patches',
+	'UI:PatchesMenu:Title' => 'Patches',
+	'UI:PCsMenu' => 'PCs',
+	'UI:PCsMenu+' => 'PCs',
+	'UI:PCsMenu:Title' => 'PCs',
+	'UI:ServersMenu' => 'Serveurs',
+	'UI:ServersMenu+' => 'Serveurs',
+	'UI:ServersMenu:Title' => 'Serveurs',
+	'UI:ServicesMenu' => 'Services',
+	'UI:ServicesMenu+' => 'Services',
+	'UI:ServicesMenu:Title' => 'Services',
+	'UI:SubnetsMenu' => 'Subnets',
+	'UI:SubnetsMenu+' => 'Subnets',
+	'UI:SubnetsMenu:Title' => 'Subnets',
+	'UI:ApplicationLogMenu' => 'Log Applicatif',
+	'UI:ApplicationLogMenu+' => 'Log Applicatif',
+	'UI:ApplicationLogMenu:Title' => 'Log Applicatif',
+	'UI:ClosedChangesMenu' => 'Changements Terminés',
+	'UI:ClosedChangesMenu+' => 'Changements Terminés',
+	'UI:ClosedChangesMenu:Title' => 'Changements Terminés',
+	'UI:ClosedIncidentsMenu' => 'Incidents Clôts',
+	'UI:ClosedIncidentsMenu+' => 'Incidents Clôts',
+	'UI:ClosedIncidentsMenu:Title' => 'Incidents Clôts',
+	'UI:DocumentsMenu' => 'Documents',
+	'UI:DocumentsMenu+' => 'Documents',
+	'UI:DocumentsMenu:Title' => 'Documents',
+	'UI:GroupingMenu' => 'Groupes',
+	'UI:GroupingMenu+' => 'Groupes',
+	'UI:GroupingMenu:Title' => 'Groupes',
+	'UI:KnownErrorsMenu' => 'Erreurs Connues',
+	'UI:KnownErrorsMenu+' => 'Erreurs Connues',
+	'UI:KnownErrorsMenu:Title' => 'Erreurs Connues',
+	'UI:LocationsMenu' => 'Emplacements',
+	'UI:LocationsMenu+' => 'Emplacements',
+	'UI:LocationsMenu:Title' => 'Emplacements',
+	'UI:MyChangesMenu' => 'Mes Changements',
+	'UI:MyChangesMenu+' => 'Mes Changements',
+	'UI:MyChangesMenu:Title' => 'Mes Changements',
+	'UI:MyIncidentsMenu' => 'Mes Incidents',
+	'UI:MyIncidentsMenu+' => 'Mes Incidents',
+	'UI:MyIncidentsMenu:Title' => 'Mes Incidents',
+	'UI:MyServiceCallsMenu' => 'Mes Demandes de Service',
+	'UI:MyServiceCallsMenu+' => 'Mes Demandes de Service',
+	'UI:MyServiceCallsMenu:Title' => 'Mes Demandes de Service',
+	'UI:OpenChangesMenu' => 'Changements En Cours',
+	'UI:OpenChangesMenu+' => 'Changements En Cours',
+	'UI:OpenChangesMenu:Title' => 'Changements En Cours',
+	'UI:OpenIncidentsMenu' => 'Incidents En Cours',
+	'UI:OpenIncidentsMenu+' => 'Incidents En Cours',
+	'UI:OpenIncidentsMenu:Title' => 'Incidents En Cours',
+	'UI:OpenServiceCallsMenu' => 'Demandes de Service En Cours',
+	'UI:OpenServiceCallsMenu+' => 'Demandes de Service En Cours',
+	'UI:OpenServiceCallsMenu:Title' => 'Demandes de Service En Cours',
+	'UI:PersonsMenu' => 'Personnes',
+	'UI:PersonsMenu+' => 'Personnes',
+	'UI:PersonsMenu:Title' => 'Personnes',
+	'UI:ProfilesMenu' => 'Profils',
+	'UI:ProfilesMenu+' => 'Profils',
+	'UI:ProfilesMenu:Title' => 'Profils',
+	'UI:ScheduledOutagesMenu' => 'Maintenance Plannifiée',
+	'UI:ScheduledOutagesMenu+' => 'Maintenance Plannifiée',
+	'UI:ScheduledOutagesMenu:Title' => 'Maintenance Plannifiée',
+	'UI:TeamsMenu' => 'Equipes',
+	'UI:TeamsMenu+' => 'Equipes',
+	'UI:TeamsMenu:Title' => 'Equipes',
+	'UI:UserAccountsMenu' => 'Comptes Utilisateur',
+	'UI:UserAccountsMenu+' => 'Comptes Utilisateur',
+	'UI:UserAccountsMenu:Title' => 'Comptes Utilisateur',	
+
 ));
 
 ?>

BIN
images/open-flash-chart.swf


ファイルの差分が大きいため隠しています
+ 2 - 2
js/swfobject.js


+ 17 - 43
pages/php-ofc-library/ofc_area_base.php

@@ -1,27 +1,30 @@
 <?php
 
-class area_base
+/**
+ * inherits from line
+ */
+class area extends line
 {
-	function area_base()
+	function area()
 	{
-		$tmp = 'fill-alpha';
-		$this->$tmp = 0.35;		
-		$this->values    = array();	
+		$this->type      = "area";
 	}
 	
-	function set_width( $w )
+	/**
+	 * the fill colour
+	 */
+	function set_fill_colour( $colour )
 	{
-		$this->width     = $w;
+		$this->fill = $colour;
 	}
 	
-	function set_colour( $colour )
+	/**
+	 * sugar: see set_fill_colour
+	 */
+	function fill_colour( $colour )
 	{
-		$this->colour = $colour;
-	}
-	
-	function set_fill_colour( $colour )
-	{
-		$this->fill = $colour;
+		$this->set_fill_colour( $colour );
+		return $this;
 	}
 	
 	function set_fill_alpha( $alpha )
@@ -30,35 +33,6 @@ class area_base
 		$this->$tmp = $alpha;
 	}
 	
-	function set_halo_size( $size )
-	{
-		$tmp = 'halo-size';
-		$this->$tmp = $size;
-	}
-	
-	function set_values( $v )
-	{
-		$this->values = $v;		
-	}
-	
-	function set_dot_size( $size )
-	{
-		$tmp = 'dot-size';
-		$this->$tmp = $size;
-	}
-
-	function set_key( $text, $font_size )
-	{
-		$this->text      = $text;
-		$tmp = 'font-size';
-		$this->$tmp = $font_size;
-	}
-	
-	function set_tooltip( $tip )
-	{
-		$this->tip = $tip;	
-	}
-	
 	function set_loop()
 	{
 		$this->loop = true;

+ 0 - 9
pages/php-ofc-library/ofc_bar_3d.php

@@ -7,7 +7,6 @@ class bar_3d_value
 	function bar_3d_value( $top )
 	{
 		$this->top = $top;
-//		$this->bottom = $bottom;
 	}
 	
 	function set_colour( $colour )
@@ -21,11 +20,3 @@ class bar_3d_value
 	}
 }
 
-class bar_3d extends bar_base
-{
-	function bar_3d()
-	{
-		$this->type      = "bar_3d";
-		parent::bar_base();
-	}
-}

+ 56 - 0
pages/php-ofc-library/ofc_bar_base.php

@@ -6,36 +6,92 @@ class bar_base
 {
 	function bar_base(){}
 
+	/**
+	 * @param $text as string the key text
+	 * @param $size as integer, size in pixels
+	 */
 	function set_key( $text, $size )
 	{
 		$this->text = $text;
 		$tmp = 'font-size';
 		$this->$tmp = $size;
 	}
+	
+	/**
+	 * syntatical sugar.
+	 */
+	function key( $text, $size )
+	{
+		$this->set_key( $text, $size );
+	}
 
+	/**
+	 * @param $v as an array, a mix of:
+	 * 	- a bar_value class. You can use this to customise the paramters of each bar.
+	 * 	- integer. This is the Y position of the top of the bar.
+	 */
 	function set_values( $v )
 	{
 		$this->values = $v;		
 	}
 	
+	/**
+	 * see set_values
+	 */
 	function append_value( $v )
 	{
 		$this->values[] = $v;		
 	}
 	
+	/**
+	 * @param $colour as string, a HEX colour, e.g. '#ff0000' red
+	 */
 	function set_colour( $colour )
 	{
 		$this->colour = $colour;	
 	}
+	
+	/**
+	 *syntatical sugar
+	 */
+	function colour( $colour )
+	{
+		$this->set_colour( $colour );
+	}
 
+	/**
+	 * @param $alpha as real number (range 0 to 1), e.g. 0.5 is half transparent
+	 */
 	function set_alpha( $alpha )
 	{
 		$this->alpha = $alpha;	
 	}
 	
+	/**
+	 * @param $tip as string, the tip to show. May contain various magic variables.
+	 */
 	function set_tooltip( $tip )
 	{
 		$this->tip = $tip;	
 	}
+	
+	/**
+	 *@param $on_show as line_on_show object
+	 */
+	function set_on_show($on_show)
+	{
+		$this->{'on-show'} = $on_show;
+	}
+	
+	function set_on_click( $text )
+	{
+		$tmp = 'on-click';
+		$this->$tmp = $text;
+	}
+	
+	function attach_to_right_y_axis()
+	{
+		$this->axis = 'right';
+	}
 }
 

+ 101 - 3
pages/php-ofc-library/ofc_bar_glass.php

@@ -2,13 +2,40 @@
 
 include_once 'ofc_bar_base.php';
 
+class bar_on_show
+{
+	/**
+	 *@param $type as string. Can be any one of:
+	 * - 'pop-up'
+	 * - 'drop'
+	 * - 'fade-in'
+	 * - 'grow-up'
+	 * - 'grow-down'
+	 * - 'pop'
+	 *
+	 * @param $cascade as float. Cascade in seconds
+	 * @param $delay as float. Delay before animation starts in seconds.
+	 */
+	function __construct($type, $cascade, $delay)
+	{
+		$this->type = $type;
+		$this->cascade = (float)$cascade;
+		$this->delay = (float)$delay;
+	}
+}
 
-class bar_glass_value
+class bar_value
 {
-	function bar_glass_value( $top )
+	/**
+	 * @param $top as integer. The Y value of the top of the bar
+	 * @param OPTIONAL $bottom as integer. The Y value of the bottom of the bar, defaults to Y min.
+	 */
+	function bar_value( $top, $bottom=null )
 	{
 		$this->top = $top;
-//		$this->bottom = $bottom;
+		
+		if( isset( $bottom ) )
+			$this->bottom = $bottom;
 	}
 	
 	function set_colour( $colour )
@@ -22,6 +49,14 @@ class bar_glass_value
 	}
 }
 
+class bar extends bar_base
+{
+	function bar()
+	{
+		$this->type      = "bar";
+		parent::bar_base();
+	}
+}
 
 class bar_glass extends bar_base
 {
@@ -31,3 +66,66 @@ class bar_glass extends bar_base
 		parent::bar_base();
 	}
 }
+
+class bar_cylinder extends bar_base
+{
+	function bar_cylinder()
+	{
+		$this->type      = "bar_cylinder";
+		parent::bar_base();
+	}
+}
+
+class bar_cylinder_outline extends bar_base
+{
+	function bar_cylinder_outline()
+	{
+		$this->type      = "bar_cylinder_outline";
+		parent::bar_base();
+	}
+}
+
+class bar_rounded_glass extends bar_base
+{
+	function bar_rounded_glass()
+	{
+		$this->type      = "bar_round_glass";
+		parent::bar_base();
+	}
+}
+
+class bar_round extends bar_base
+{
+	function bar_round()
+	{
+		$this->type      = "bar_round";
+		parent::bar_base();
+	}
+}
+
+class bar_dome extends bar_base
+{
+	function bar_dome()
+	{
+		$this->type      = "bar_dome";
+		parent::bar_base();
+	}
+}
+
+class bar_round3d extends bar_base
+{
+	function bar_round3d()
+	{
+		$this->type      = "bar_round3d";
+		parent::bar_base();
+	}
+}
+
+class bar_3d extends bar_base
+{
+	function bar_3d()
+	{
+		$this->type      = "bar_3d";
+		parent::bar_base();
+	}
+}

+ 6 - 0
pages/php-ofc-library/ofc_bar_sketch.php

@@ -4,6 +4,12 @@ include_once 'ofc_bar_base.php';
 
 class bar_sketch extends bar_base
 {
+	/**
+	 * @param $colour as string, HEX colour e.g. '#00ff00'
+	 * @param $outline_colour as string, HEX colour e.g. '#ff0000'
+	 * @param $fun_factor as integer, range 0 to 10. 0,1 and 2 are pretty boring.
+	 * 4 to 6 is a bit fun, 7 and above is lots of fun. 
+	 */
 	function bar_sketch( $colour, $outline_colour, $fun_factor )
 	{
 		$this->type      = "bar_sketch";

+ 5 - 0
pages/php-ofc-library/ofc_bar_stack.php

@@ -36,6 +36,11 @@ class bar_stack_value
 		$this->val = $val;
 		$this->colour = $colour;
 	}
+	
+	function set_tooltip( $tip )
+	{
+		$this->tip = $tip;
+	} 
 }
 
 class bar_stack_key

+ 149 - 1
pages/php-ofc-library/ofc_line.php

@@ -1,9 +1,157 @@
 <?php
 
-class line extends line_base
+class line_on_show
+{
+	/**
+	 *@param $type as string. Can be any one of:
+	 * - 'pop-up'
+	 * - 'explode'
+	 * - 'mid-slide'
+	 * - 'drop'
+	 * - 'fade-in'
+	 * - 'shrink-in'
+	 *
+	 * @param $cascade as float. Cascade in seconds
+	 * @param $delay as float. Delay before animation starts in seconds.
+	 */
+	function __construct($type, $cascade, $delay)
+	{
+		$this->type = $type;
+		$this->cascade = (float)$cascade;
+		$this->delay = (float)$delay;
+	}
+}
+
+class line
 {
 	function line()
 	{
 		$this->type      = "line";
+		$this->values    = array();
+	}
+	
+	/**
+	 * Set the default dot that all the real
+	 * dots inherit their properties from. If you set the
+	 * default dot to be red, all values in your chart that
+	 * do not specify a colour will be red. Same for all the
+	 * other attributes such as tooltip, on-click, size etc...
+	 * 
+	 * @param $style as any class that inherits base_dot
+	 */
+	function set_default_dot_style( $style )
+	{
+		$tmp = 'dot-style';
+		$this->$tmp = $style;	
+	}
+	
+	/**
+	 * @param $v as array, can contain any combination of:
+	 *  - integer, Y position of the point
+	 *  - any class that inherits from dot_base
+	 *  - <b>null</b>
+	 */
+	function set_values( $v )
+	{
+		$this->values = $v;		
+	}
+	
+	/**
+     * Append a value to the line.
+     *
+     * @param mixed $v
+     */
+    function append_value($v)
+    {
+        $this->values[] = $v;       
+    }
+	
+	function set_width( $width )
+	{
+		$this->width = $width;		
+	}
+	
+	function set_colour( $colour )
+	{
+		$this->colour = $colour;
+	}
+	
+	/**
+	 * sytnatical sugar for set_colour
+	 */
+	function colour( $colour )
+	{
+		$this->set_colour( $colour );
+		return $this;
+	}
+	
+	function set_halo_size( $size )
+	{
+		$tmp = 'halo-size';
+		$this->$tmp = $size;		
+	}
+	
+	function set_key( $text, $font_size )
+	{
+		$this->text      = $text;
+		$tmp = 'font-size';
+		$this->$tmp = $font_size;
+	}
+	
+	function set_tooltip( $tip )
+	{
+		$this->tip = $tip;
+	}
+	
+	/**
+	 * @param $text as string. A javascript function name as a string. The chart will
+	 * try to call this function, it will pass the chart id as the only parameter into
+	 * this function. E.g:
+	 * 
+	 */
+	function set_on_click( $text )
+	{
+		$tmp = 'on-click';
+		$this->$tmp = $text;
+	}
+	
+	function loop()
+	{
+		$this->loop = true;
+	}
+	
+	function line_style( $s )
+	{
+		$tmp = "line-style";
+		$this->$tmp = $s;
+	}
+	
+	    /**
+     * Sets the text for the line.
+     *
+     * @param string $text
+     */   
+    function set_text($text)
+    {
+        $this->text = $text;
+    }
+	
+	function attach_to_right_y_axis()
+	{
+		$this->axis = 'right';
+	}
+	
+	/**
+	 *@param $on_show as line_on_show object
+	 */
+	function set_on_show($on_show)
+	{
+		$this->{'on-show'} = $on_show;
+	}
+	
+	function on_show($on_show)
+	{
+		$this->set_on_show($on_show);
+		return $this;
 	}
 }

+ 24 - 2
pages/php-ofc-library/ofc_line_base.php

@@ -4,12 +4,12 @@ class line_base
 {
 	function line_base()
 	{
-		$this->type      = "line_dot";
+		$this->type      = "line";
 		$this->text      = "Page views";
 		$tmp = 'font-size';
 		$this->$tmp = 10;
 		
-		$this->values    = array(9,6,7,9,5,7,6,9,7);
+		$this->values    = array();
 	}
 	
 	function set_values( $v )
@@ -17,6 +17,16 @@ class line_base
 		$this->values = $v;		
 	}
 	
+	/**
+     * Append a value to the line.
+     *
+     * @param mixed $v
+     */
+    function append_value($v)
+    {
+        $this->values[] = $v;       
+    }
+	
 	function set_width( $width )
 	{
 		$this->width = $width;		
@@ -67,4 +77,16 @@ class line_base
 		$tmp = "line-style";
 		$this->$tmp = $s;
 	}
+	
+	    /**
+     * Sets the text for the line.
+     *
+     * @param string $text
+     */   
+    function set_text($text)
+    {
+        $this->text = $text;
+    }
+	
+	
 }

+ 154 - 6
pages/php-ofc-library/ofc_pie.php

@@ -35,16 +35,58 @@ class pie_value
 		$tmp = 'on-click';
 		$this->$tmp = $event;
 	}
+	
+	
+	/**
+	 * An object that inherits from base_pie_animation
+	 */
+	function add_animation( $animation )
+	{
+		if( !isset( $this->animate ) )
+			$this->animate = array();
+			
+		$this->animate[] = $animation;
+		
+		return $this;
+	}
+}
+
+class base_pie_animation{}
 
+/**
+ * fade the pie slice from $alpha (pie set_alpha) to 100% opaque.
+ */
+class pie_fade extends base_pie_animation
+{
+	function pie_fade()
+	{
+		$this->type="fade";
+	}
+}
+
+/**
+ * Bounce the pie slice out a little
+ */
+class pie_bounce extends base_pie_animation
+{
+	/**
+	 * @param $distance as integer, distance to bounce in pixels
+	 */
+	function pie_bounce( $distance )
+	{
+		$this->type="bounce";
+		$this->distance = $distance;
+	}
 }
 
+/**
+ * Make a pie chart and fill it with pie slices
+ */
 class pie
 {
 	function pie()
 	{
 		$this->type      		= 'pie';
-		$this->colours     		= array("#d01f3c","#356aa0","#C79810");
-		$this->border			= 2;
 	}
 	
 	function set_colours( $colours )
@@ -52,46 +94,140 @@ class pie
 		$this->colours = $colours;
 	}
 	
+	/**
+	 * Sugar wrapped around set_colours
+	 */
+	function colours( $colours )
+	{
+		$this->set_colours( $colours );
+		return $this;
+	}
+	
+	/**
+	 * @param $alpha as float (0-1) 0.75 = 3/4 visible
+	 */
 	function set_alpha( $alpha )
 	{
 		$this->alpha = $alpha;
 	}
 	
+	/**
+	 *sugar wrapped set_alpha
+	 **/
+	function alpha( $alpha )
+	{
+		$this->set_alpha( $alpha );
+		return $this;
+	}
+	
+	/**
+	 * @param $v as array containing one of
+	 *  - null
+	 *  - real or integer number
+	 *  - a pie_value object
+	 */
 	function set_values( $v )
 	{
 		$this->values = $v;		
 	}
+
+	/**
+	 * sugar for set_values
+	 */
+	function values( $v )
+	{
+		$this->set_values( $v );
+		return $this;
+	}
 	
-	// boolean
-	function set_animate( $animate )
+	/**
+	 * HACK to keep old code working.
+	 */
+	function set_animate( $bool )
 	{
-		$this->animate = $animate;
+		if( $bool )
+			$this->add_animation( new pie_fade() );
+			
+	}
+	
+	/**
+	 * An object that inherits from base_pie_animation
+	 */
+	function add_animation( $animation )
+	{
+		if( !isset( $this->animate ) )
+			$this->animate = array();
+			
+		$this->animate[] = $animation;
+		
+		return $this;
 	}
 	
-	// real
+	/**
+	 * @param $angle as real number
+	 */
 	function set_start_angle( $angle )
 	{
 		$tmp = 'start-angle';
 		$this->$tmp = $angle;
 	}
 	
+	/**
+	 * sugar for set_start_angle
+	 */
+	function start_angle($angle)
+	{
+		$this->set_start_angle( $angle );
+		return $this;
+	}
+	
+	/**
+	 * @param $tip as string. The tooltip text. May contain magic varibles
+	 */
 	function set_tooltip( $tip )
 	{
 		$this->tip = $tip;
 	}
 	
+	/**
+	 * sugar for set_tooltip
+	 */
+	function tooltip( $tip )
+	{
+		$this->set_tooltip( $tip );
+		return $this;
+	}
+	
 	function set_gradient_fill()
 	{
 		$tmp = 'gradient-fill';
 		$this->$tmp = true;
 	}
 	
+	function gradient_fill()
+	{
+		$this->set_gradient_fill();
+		return $this;
+	}
+	
+	/**
+	 * By default each label is the same colour as the slice,
+	 * but you can ovveride that behaviour using this method.
+	 * 
+	 * @param $label_colour as string HEX colour;
+	 */
 	function set_label_colour( $label_colour )
 	{
 		$tmp = 'label-colour';
 		$this->$tmp = $label_colour;	
 	}
 	
+	function label_colour( $label_colour )
+	{
+		$this->set_label_colour( $label_colour );
+		return $this;
+	}
+	
 	/**
 	 * Turn off the labels
 	 */
@@ -106,4 +242,16 @@ class pie
 		$tmp = 'on-click';
 		$this->$tmp = $event;
 	}
+	
+	/**
+	 * Fix the radius of the pie chart. Take a look at the magic variable #radius#
+	 * for helping figure out what radius to set it to.
+	 * 
+	 * @param $radius as number
+	 */
+	function radius( $radius )
+	{
+		$this->radius = $radius;
+		return $this;
+	}
 }

+ 10 - 5
pages/php-ofc-library/ofc_scatter.php

@@ -17,11 +17,10 @@ class scatter_value
 
 class scatter
 {
-	function scatter( $colour, $dot_size )
+	function scatter( $colour )
 	{
 		$this->type      = "scatter";
 		$this->set_colour( $colour );
-		$this->set_dot_size( $dot_size );
 	}
 	
 	function set_colour( $colour )
@@ -29,12 +28,18 @@ class scatter
 		$this->colour = $colour;
 	}
 
-	function set_dot_size( $dot_size )
+	function set_default_dot_style( $style )
 	{
-		$tmp = 'dot-size';
-		$this->$tmp = $dot_size;
+		$tmp = 'dot-style';
+		$this->$tmp = $style;	
 	}
 	
+	/**
+	 * @param $v as array, can contain any combination of:
+	 *  - integer, Y position of the point
+	 *  - any class that inherits from scatter_value
+	 *  - <b>null</b>
+	 */
 	function set_values( $values )
 	{
 		$this->values = $values;

+ 28 - 6
pages/php-ofc-library/ofc_scatter_line.php

@@ -2,26 +2,48 @@
 
 class scatter_line
 {
-	function scatter_line( $colour, $dot_size )
+	function scatter_line( $colour, $width  )
 	{
 		$this->type      = "scatter_line";
 		$this->set_colour( $colour );
-		$this->set_dot_size( $dot_size );
+		$this->set_width( $width );
+	}
+	
+	function set_default_dot_style( $style )
+	{
+		$tmp = 'dot-style';
+		$this->$tmp = $style;	
 	}
 	
 	function set_colour( $colour )
 	{
 		$this->colour = $colour;
 	}
-
-	function set_dot_size( $dot_size )
+	
+	function set_width( $width )
 	{
-		$tmp = 'dot-size';
-		$this->$tmp = $dot_size;
+		$this->width = $width;
 	}
 	
 	function set_values( $values )
 	{
 		$this->values = $values;
 	}
+	
+	function set_step_horizontal()
+	{
+		$this->stepgraph = 'horizontal';
+	}
+	
+	function set_step_vertical()
+	{
+		$this->stepgraph = 'vertical';
+	}
+	
+	function set_key( $text, $font_size )
+	{
+		$this->text      = $text;
+		$tmp = 'font-size';
+		$this->$tmp = $font_size;
+	}
 }

+ 24 - 0
pages/php-ofc-library/ofc_title.php

@@ -1,5 +1,9 @@
 <?php
 
+/**
+ * Set the title of a chart, make one of these and pass it into
+ * open_flash_chart set_title
+ */
 class title
 {
 	function title( $text='' )
@@ -7,6 +11,26 @@ class title
 		$this->text = $text;
 	}
 	
+	/**
+	 * A css string. Can optionally contain:
+     * - font-size
+     * - font-family
+     * - font-weight
+     * - color
+     * - background-color
+     * - text-align
+     * - margin
+     * - margin-left
+     * - margin-right
+     * - margin-top
+     * - margin-bottom
+     * - padding
+     * - padding-left
+     * - padding-right
+     * - padding-top
+     * - padding-bottom
+     * just like the css we use all the time :-)
+	 */
 	function set_style( $css )
 	{
 		$this->style = $css;

+ 18 - 2
pages/php-ofc-library/ofc_tooltip.php

@@ -6,33 +6,49 @@ class tooltip
 {
 	function tooltip(){}
 	
+	/**
+	 * @param $shadow as boolean. Enable drop shadow.
+	 */
 	function set_shadow( $shadow )
 	{
 		$this->shadow = $shadow;
 	}
 	
-	// stroke in pixels (e.g. 5 )
+	/**
+	 * @param $stroke as integer, border width in pixels (e.g. 5 )
+	 */
 	function set_stroke( $stroke )
 	{
 		$this->stroke = $stroke;
 	}
 	
+	/**
+	 * @param $colour as string, HEX colour e.g. '#0000ff'
+	 */
 	function set_colour( $colour )
 	{
 		$this->colour = $colour;
 	}
 	
+	/**
+	 * @param $bg as string, HEX colour e.g. '#0000ff'
+	 */
 	function set_background_colour( $bg )
 	{
 		$this->background = $bg;
 	}
 	
-	// a css style
+	/**
+	 * @param $style as string. A css style.
+	 */
 	function set_title_style( $style )
 	{
 		$this->title = $style;
 	}
 	
+	/**
+	 * @param $style as string. A css style.
+	 */
     function set_body_style( $style )
 	{
 		$this->body = $style;

+ 10 - 1
pages/php-ofc-library/ofc_upload_image.php

@@ -26,9 +26,18 @@ if (!file_exists($default_path)) mkdir($default_path, 0777, true);
 $destination = $default_path . basename( $_GET[ 'name' ] ); 
 
 echo 'Saving your image to: '. $destination;
+// print_r( $_POST );
+// print_r( $_SERVER );
+// echo $HTTP_RAW_POST_DATA;
+
+//
+// POST data is usually string data, but we are passing a RAW .png
+// so PHP is a bit confused and $_POST is empty. But it has saved
+// the raw bits into $HTTP_RAW_POST_DATA
+//
 
 $jfh = fopen($destination, 'w') or die("can't open file");
-fwrite($jfh, $GLOBALS['HTTP_RAW_POST_DATA']);
+fwrite($jfh, $HTTP_RAW_POST_DATA);
 fclose($jfh);
 
 //

+ 68 - 5
pages/php-ofc-library/ofc_x_axis.php

@@ -4,61 +4,121 @@ class x_axis
 {
 	function x_axis(){}
 
+	/**
+	 * @param $stroke as integer, with of the line and ticks
+	 */
 	function set_stroke( $stroke )
 	{
 		$this->stroke = $stroke;	
 	}
 	
+	function stroke( $stroke )
+	{
+		$this->set_stroke( $stroke );
+		return $this;
+	}
+	
+	/**
+	 *@param $colour as string HEX colour
+	 *@param $grid_colour as string HEX colour
+	 */
 	function set_colours( $colour, $grid_colour )
 	{
 		$this->set_colour( $colour );
 		$this->set_grid_colour( $grid_colour );
 	}
 	
+	/**
+	 *@param $colour as string HEX colour
+	 */
 	function set_colour( $colour )
 	{
 		$this->colour = $colour;	
 	}
 	
+	function colour( $colour )
+	{
+		$this->set_colour($colour);
+		return $this;
+	}
+	
 	function set_tick_height( $height )
 	{
 		$tmp = 'tick-height';
 		$this->$tmp      		= $height;
 	}
 	
+	function tick_height( $height )
+	{
+		$this->set_tick_height($height);
+		return $this;
+	}
+	
 	function set_grid_colour( $colour )
 	{
 		$tmp = 'grid-colour';
 		$this->$tmp = $colour;
 	}
 	
-	// $o is a boolean
+	function grid_colour( $colour )
+	{
+		$this->set_grid_colour($colour);
+		return $this;
+	}
+	
+	/**
+	 * @param $o is a boolean. If true, the X axis start half a step in
+	 * This defaults to True
+	 */
 	function set_offset( $o )
 	{
 		$this->offset = $o?true:false;	
 	}
 	
+	function offset( $o )
+	{
+		$this->set_offset($o);
+		return $this;
+	}
+	
+	/**
+	 * @param $steps as integer. Which grid lines and ticks are visible.
+	 */
 	function set_steps( $steps )
 	{
 		$this->steps = $steps;
 	}
 	
+	function steps( $steps )
+	{
+		$this->set_steps($steps);
+		return $this;
+	}
+	
+	/**
+	 * @param $val as an integer, the height in pixels of the 3D bar. Mostly
+	 * used for the 3D bar chart.
+	 */
 	function set_3d( $val )
 	{
 		$tmp = '3d';
 		$this->$tmp				= $val;		
 	}
 	
+	/**
+	 * @param $x_axis_labels as an x_axis_labels object
+	 * Use this to customize the labels (colour, font, etc...)
+	 */
 	function set_labels( $x_axis_labels )
 	{
 		//$this->labels = $v;
 		$this->labels = $x_axis_labels;
 	}
 	
-	//
-	// helper function to make the examples
-	// simpler.
-	//
+	/**
+	 * Sugar syntax: helper function to make the examples simpler.
+	 * @param $a is an array of labels
+	 */
 	function set_labels_from_array( $a )
 	{
 		$x_axis_labels = new x_axis_labels();
@@ -69,6 +129,9 @@ class x_axis
 			$x_axis_labels->set_steps( $this->steps );
 	}
 	
+	/**
+	 * min and max.
+	 */
 	function set_range( $min, $max )
 	{
 		$this->min = $min;

+ 3 - 0
pages/php-ofc-library/ofc_x_axis_label.php

@@ -1,5 +1,8 @@
 <?php
 
+/**
+ * x_axis_label see x_axis_labels
+ */
 class x_axis_label
 {
 	function x_axis_label( $text, $colour, $size, $rotate )

+ 39 - 4
pages/php-ofc-library/ofc_x_axis_labels.php

@@ -4,14 +4,27 @@ class x_axis_labels
 {
 	function x_axis_labels(){}
 	
+	/**
+	 * @param $steps which labels are generated
+	 */
 	function set_steps( $steps )
 	{
 		$this->steps = $steps;
 	}
 	
-	//
-	// An array of [x_axis_label or string]
-	//
+	/**
+	 * @param $steps as integer which labels are visible
+	 */
+	function visible_steps( $steps )
+	{
+		$this->{"visible-steps"} = $steps;
+		return $this;
+	}
+	
+	/**
+	 *
+	 * @param $labels as an array of [x_axis_label or string]
+	 */
 	function set_labels( $labels )
 	{
 		$this->labels = $labels;
@@ -22,13 +35,35 @@ class x_axis_labels
 		$this->colour = $colour;
 	}
 	
+	/**
+	 * font size in pixels
+	 */
 	function set_size( $size )
 	{
 		$this->size = $size;
 	}
 	
+	/**
+	 * rotate labels
+	 */
 	function set_vertical()
 	{
-		$this->rotate = "vertical";
+		$this->rotate = 270;
+	}
+	
+	/**
+	 * @param @angle as real. The angle of the text.
+	 */
+	function rotate( $angle )
+	{
+		$this->rotate = $angle;
+	}
+	
+	/**
+	 * @param $text as string. Replace and magic variables with actual x axis position.
+	 */
+	function text( $text )
+	{
+		$this->text = $text;
 	}
 }

+ 4 - 4
pages/php-ofc-library/ofc_y_axis.php

@@ -4,10 +4,10 @@ class y_axis extends y_axis_base
 {
 	function y_axis(){}
 	
-	//
-	// y axis right does NOT control
-	// grid colour, the left axis does
-	//
+	/**
+	 * @param $colour as string. The grid are the lines inside the chart.
+	 * HEX colour, e.g. '#ff0000'
+	 */
 	function set_grid_colour( $colour )
 	{
 		$tmp = 'grid-colour';

+ 62 - 2
pages/php-ofc-library/ofc_y_axis_base.php

@@ -4,11 +4,17 @@ class y_axis_base
 {
 	function y_axis_base(){}
 	
+	/**
+	 * @param $s as integer, thickness of the Y axis line
+	 */
 	function set_stroke( $s )
 	{
 		$this->stroke = $s;
 	}
 	
+	/**
+	 * @param $val as integer. The length of the ticks in pixels
+	 */
 	function set_tick_length( $val )
 	{
 		$tmp = 'tick-length';
@@ -32,6 +38,15 @@ class y_axis_base
 		$this->$tmp = $colour;
 	}
 	
+	/**
+	 * Set min and max values, also (optionally) set the steps value.
+	 * You can reverse the chart by setting min larger than max, e.g. min = 10
+	 * and max = 0.
+	 * 
+	 * @param $min as integer
+	 * @param $max as integer
+	 * @param $steps as integer.
+	 */
 	function set_range( $min, $max, $steps=1 )
 	{
 		$this->min = $min;
@@ -39,18 +54,63 @@ class y_axis_base
 		$this->set_steps( $steps );
 	}
 	
+	/**
+	 * Sugar for set_range
+	 */
+	function range( $min, $max, $steps=1 )
+	{
+		$this->set_range( $min, $max, $steps );
+		return $this;
+	}
+	
+	/**
+	 * @param $off as Boolean. If true the Y axis is nudged up half a step.
+	 */
 	function set_offset( $off )
 	{
 		$this->offset = $off?1:0;
 	}
 	
-	function set_labels( $labels )
+	/**
+	 * @param $y_axis_labels as an y_axis_labels object
+	 * Use this to customize the labels (colour, font, etc...)
+	 */
+	function set_labels( $y_axis_labels )
 	{
-		$this->labels = $labels;	
+		$this->labels = $y_axis_labels;
 	}
 	
+	/**
+	 * Pass in some text for each label. This can contain magic variables "#val#" which
+	 * will get replaced with the value for that Y axis label. Useful for:
+	 * - "£#val#"
+	 * - "#val#%"
+	 * - "#val# million"
+	 * 
+	 * @param $text as string.
+	 */
+	function set_label_text( $text )
+	{
+		$tmp = new y_axis_labels();
+		$tmp->set_text( $text );
+		$this->labels = $tmp;
+	}
+	
+	/**
+	 * @param $steps as integer.
+	 *
+	 * Only show every $steps label, e.g. every 10th
+	 */
 	function set_steps( $steps )
 	{
 		$this->steps = $steps;	
 	}
+	
+	/**
+	 * Make the labels show vertical
+	 */
+	function set_vertical()
+	{
+		$this->rotate = "vertical";
+	}
 }

+ 48 - 8
pages/php-ofc-library/open-flash-chart.php

@@ -20,21 +20,29 @@ include_once 'ofc_title.php';
 include_once 'ofc_y_axis_base.php';
 include_once 'ofc_y_axis.php';
 include_once 'ofc_y_axis_right.php';
+include_once 'ofc_y_axis_labels.php';
+include_once 'ofc_y_axis_label.php';
 include_once 'ofc_x_axis.php';
-include_once 'ofc_area_base.php';
-include_once 'ofc_area_hollow.php';
-include_once 'ofc_area_line.php';
+
+
 include_once 'ofc_pie.php';
-include_once 'ofc_bar.php';
-include_once 'ofc_bar_filled.php';
+//include_once 'ofc_bar.php';
 include_once 'ofc_bar_glass.php';
+include_once 'ofc_bar_filled.php';
 include_once 'ofc_bar_stack.php';
-include_once 'ofc_bar_3d.php';
+//include_once 'ofc_bar_3d.php';
 include_once 'ofc_hbar.php';
 include_once 'ofc_line_base.php';
 include_once 'ofc_line.php';
-include_once 'ofc_line_dot.php';
-include_once 'ofc_line_hollow.php';
+//include_once 'ofc_line_dot.php';
+//include_once 'ofc_line_hollow.php';
+include_once 'ofc_candle.php';
+include_once 'ofc_area_base.php';
+include_once 'ofc_tags.php';
+include_once 'ofc_arrow.php';
+//include_once 'ofc_area_hollow.php';
+//include_once 'ofc_area_line.php';
+
 include_once 'ofc_x_legend.php';
 include_once 'ofc_y_legend.php';
 include_once 'ofc_bar_sketch.php';
@@ -49,6 +57,9 @@ include_once 'ofc_radar_axis_labels.php';
 include_once 'ofc_radar_spoke_labels.php';
 include_once 'ofc_line_style.php';
 
+include_once 'dot_base.php';
+include_once 'ofc_menu.php';
+
 class open_flash_chart
 {
 	function open_flash_chart()
@@ -112,6 +123,35 @@ class open_flash_chart
 		$this->tooltip = $tooltip;	
 	}
 	
+	/**
+	 * This is a bit funky :(
+	 *
+	 * @param $num_decimals as integer. Truncate the decimals to $num_decimals, e.g. set it
+	 * to 5 and 3.333333333 will display as 3.33333. 2.0 will display as 2 (or 2.00000 - see below)
+	 * @param $is_fixed_num_decimals_forced as boolean. If true it will pad the decimals.
+	 * @param $is_decimal_separator_comma as boolean
+	 * @param $is_thousand_separator_disabled as boolean
+	 *
+	 * This needs a bit of love and attention
+	 */
+	function set_number_format($num_decimals, $is_fixed_num_decimals_forced, $is_decimal_separator_comma, $is_thousand_separator_disabled )
+	{
+		$this->num_decimals = $num_decimals;
+		$this->is_fixed_num_decimals_forced = $is_fixed_num_decimals_forced;
+		$this->is_decimal_separator_comma = $is_decimal_separator_comma;
+		$this->is_thousand_separator_disabled = $is_thousand_separator_disabled;
+	}
+	
+	/**
+	 * This is experimental and will change as we make it work
+	 * 
+	 * @param $m as ofc_menu
+	 */
+	function set_menu($m)
+	{
+		$this->menu = $m;
+	}
+	
 	function toString()
 	{
 		if (function_exists('json_encode'))

+ 749 - 936
setup/data/structure/1.menus.xml

@@ -1,1020 +1,833 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Set>
-<menuNode id="1">
-<name>Admin tools</name>
-<label>Admin tools</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:32px;&quot;&gt;Administration tools&lt;/p&gt;
-&lt;p&gt;Tools accessible only to logins having the administrator profile&lt;/p&gt;
-</template>
-<type>administrator</type>
-<rank>1000</rank>
-<parent_id>0</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="2">
-<name>All Applications</name>
-<label>All Applications</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizApplication&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Applications&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizApplication&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>16</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="3">
-<name>All Circuits</name>
-<label>All Circuits</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizCircuit&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Circuits&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizCircuit&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>16</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="4">
-<name>All Contracts</name>
-<label>All Contracts</label>
-<hyperlink>./UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContract&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContract&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>2</rank>
-<parent_id>38</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="5">
-<name>All Interfaces</name>
-<label>All Interfaces</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizInterface&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Interfaces&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizInterface&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>16</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="6">
-<name>All Network devices</name>
-<label>All Network devices</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizNetworkDevice&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Network Devices&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizNetworkDevice&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>16</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="7">
-<name>All Patches</name>
-<label>All Patches</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPatch&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Patches&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPatch&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>16</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="8">
-<name>All PCs</name>
-<label>All PCs</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPC&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All PCs&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPC&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>16</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="9">
-<name>All Servers</name>
-<label>All Servers</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServer&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Servers&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServer&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>16</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="10">
-<name>All Services</name>
-<label>All Services</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizService&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizService&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>1</rank>
-<parent_id>38</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="11">
-<name>All Subnets</name>
-<label>All subnets</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizSubnet&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Subnets&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizSubnet&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>16</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="45">
-<name>Application log</name>
-<label>Application log</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path>../images/std_view.gif</icon_path>
-<template>
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT Event&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT Event&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>administrator</type>
-<rank>2</rank>
-<parent_id>1</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="12">
-<name>Audit</name>
-<label>Audit</label>
-<hyperlink>./audit.php</hyperlink>
-<icon_path></icon_path>
-<template></template>
-<type>application</type>
-<rank>4</rank>
-<parent_id>17</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="13">
-<name>Change Management</name>
-<label>Change Management</label>
-<hyperlink>./UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;style&gt;
-.dashboard {
-vertical-align:top;
-width:50%;
-border:1px solid #000;
--moz-border-radius:10px;
-padding:5px;
-text-align:center;
-}
-&lt;/style&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:24px;&quot;&gt;Changes Overview&lt;/p&gt;
-&lt;table border=&quot;0&quot; padding=&quot;5&quot;&gt;
+<?xml version="1.0" encoding="UTF-8"?>
+<Set>
+<menuNode alias="menuNode" id="1">
+<name>UI:AdminToolsMenu</name>
+<label>UI:AdminToolsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;p&gt;&lt;/p&gt;
+&lt;p&gt;&lt;/p&gt;
+&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:32px;&quot;&gt;Administration tools&lt;/p&gt;
+&lt;p&gt;Tools accessible only to logins having the administrator profile&lt;/p&gt;
+</template>
+<type>administrator</type>
+<rank>1000</rank>
+<parent_id>0</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="15">
+<name>UI:AdvancedToolsMenu</name>
+<label>UI:AdvancedToolsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;p&gt;&lt;/p&gt;
+&lt;p&gt;&lt;/p&gt;
+&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:32px;&quot;&gt;Tools for the iTop consultant&lt;/p&gt;
+&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:14px;&quot;&gt;&lt;i&gt;This section contains links to useful tools for extending or debugging iTop&lt;/i&gt;&lt;/p&gt;
+</template>
+<type>application</type>
+<rank>9</rank>
+<parent_id>0</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="16">
+<name>UI:ApplicationLogMenu</name>
+<label>UI:ApplicationLogMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path>../images/std_view.gif</icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT Event&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:ApplicationLogMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT Event&lt;/itopblock&gt;
+</template>
+<type>administrator</type>
+<rank>2</rank>
+<parent_id>1</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="17">
+<name>UI:ApplicationsMenu</name>
+<label>UI:ApplicationsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizApplication&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:ApplicationsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizApplication&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>4</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="2">
+<name>UI:AuditMenu</name>
+<label>UI:AuditMenu+</label>
+<hyperlink>./audit.php</hyperlink>
+<icon_path></icon_path>
+<template></template>
+<type>application</type>
+<rank>4</rank>
+<parent_id>5</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="3">
+<name>UI:ChangeManagementMenu</name>
+<label>UI:ChangeManagementMenu+</label>
+<hyperlink>./UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;h1&gt;&lt;itopstring&gt;UI:ChangeManagementMenu:Title&lt;/itopstring&gt;&lt;/h1&gt;
+&lt;table border=&quot;0&quot; padding=&quot;5&quot; width=&quot;100%&quot;&gt;
 &lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:type;chart_title:Changes by type&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:type;chart_title:UI-ChangeManagementMenu-ChangesByType&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:ticket_status;chart_title:Changes by status&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:ticket_status;chart_title:UI-ChangeManagementMenu-ChangesByStatus&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Changes by Workgroup&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;count&quot; parameters=&quot;group_by:workgroup_id&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket&lt;/itopblock&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-ChangeManagementMenu-ChangesByWorkgroup&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;count&quot; parameters=&quot;group_by:workgroup_name&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Changes not yet assigned&lt;/p&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-ChangeManagementMenu-ChangesNotYetAssigned&lt;/itopstring&gt;&lt;/p&gt;
 &lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; parameters=&quot;dashboard:true&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE ticket_status = &apos;New&apos;&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
-&lt;/table&gt;
-</template>
-<type>application</type>
-<rank>7</rank>
-<parent_id>0</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="14">
-<name>Closed Changes</name>
-<label>Closed Changes</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE ticket_status = &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE ticket_status = &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>5</rank>
-<parent_id>13</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="15">
-<name>Closed Incident</name>
-<label>List of closed ticket</label>
-<hyperlink>./UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket WHERE ticket_status LIKE &apos;Open&apos; AND severity LIKE &apos;critical&apos;&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket WHERE ticket_status = &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>5</rank>
-<parent_id>24</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="16">
-<name>Configuration Items</name>
-<label>All about devices</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;style&gt;
-td.dashboard {
- vertical-align:top;
- text-align: center;
- border: 1px solid #ccc;
- -moz-border-radius: 10px;
- padding: 10px;
-}
-&lt;/style&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:24px;&quot;&gt;Configuration Items&lt;/p&gt;
-&lt;table border=&quot;0&quot; padding=&quot;5&quot; class=&quot;layout&quot;&gt;
+&lt;/table&gt;</template>
+<type>application</type>
+<rank>7</rank>
+<parent_id>0</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="18">
+<name>UI:CircuitsMenu</name>
+<label>UI:CircuitsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizCircuit&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:CircuitsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizCircuit&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>4</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="19">
+<name>UI:ClosedChangesMenu</name>
+<label>UI:ClosedChangesMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE ticket_status = &apos;Closed&apos;&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:ClosedChangesMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE ticket_status = &apos;Closed&apos;&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>5</rank>
+<parent_id>3</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="20">
+<name>UI:ClosedIncidentsMenu</name>
+<label>UI:ClosedIncidentsMenu+</label>
+<hyperlink>./UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket WHERE ticket_status = &apos;Closed&apos;&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:ClosedIncidentsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket WHERE ticket_status = &apos;Closed&apos;&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>5</rank>
+<parent_id>10</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="4">
+<name>UI:ConfigurationItemsMenu</name>
+<label>UI:ConfigurationItemsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;h1&gt;&lt;itopstring&gt;UI:ConfigurationItemsMenu:Title&lt;/itopstring&gt;&lt;/h1&gt;
+&lt;table border=&quot;0&quot; padding=&quot;5&quot; class=&quot;layout&quot; width=&quot;100%&quot;&gt;
 &lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:All servers by business criticity;group_by:severity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServer&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:UI-ConfigurationItemsMenu-ServersByCriticity;group_by:severity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServer&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:All PCs by business criticity;group_by:severity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPC&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:UI-ConfigurationItemsMenu-PCsByCriticity;group_by:severity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPC&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:All network devices by business criticity;group_by:severity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizNetworkDevice&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:UI-ConfigurationItemsMenu-NWDevicesByCriticity;group_by:severity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizNetworkDevice&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:All applications by business criticity;group_by:severity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizApplication&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:UI-ConfigurationItemsMenu-ApplicationsByCriticity;group_by:severity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizApplication&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
-&lt;/table&gt;</template>
-<type>application</type>
-<rank>2</rank>
-<parent_id>17</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="17">
-<name>Configuration Management</name>
-<label>Configuration Management</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;style&gt;
-td.dashboard {
- vertical-align:top;
- text-align: center;
- border: 1px solid #ccc;
- -moz-border-radius: 10px;
- padding: 10px;
-}
-&lt;/style&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:24px;&quot;&gt;Infrastructure Overview&lt;/p&gt;
-&lt;table border=&quot;0&quot; padding=&quot;5&quot; class=&quot;layout&quot;&gt;
+&lt;/table&gt;</template>
+<type>application</type>
+<rank>2</rank>
+<parent_id>5</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="5">
+<name>UI:ConfigurationManagementMenu</name>
+<label>UI:ConfigurationManagementMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;h1&gt;&lt;itopstring&gt;UI:ConfigurationManagementMenu:Title&lt;/itopstring&gt;&lt;/h1&gt;
+&lt;table border=&quot;0&quot; padding=&quot;5&quot; class=&quot;layout&quot; width=&quot;100%&quot;&gt;
 &lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:status;chart_title:Infrastructure Objects by status&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT logInfra&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:status;chart_title:UI-ConfigurationManagementMenu-InfraByStatus&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT logInfra&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:finalclass;chart_title:Infrastructure Objects by type&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT logInfra&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:finalclass;chart_title:UI-ConfigurationManagementMenu-InfraByType&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT logInfra&lt;/itopblock&gt;
 &lt;/td&gt;
-&lt;/tr&gt;&lt;tr&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Infrastructure Objects by type&lt;/p&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-ConfigurationManagementMenu-InfraByType&lt;/itopstring&gt;&lt;/h2&gt;
 &lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;count&quot; parameters=&quot;group_by:finalclass&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT logInfra&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td&gt;
 &amp;nbsp;
 &lt;/td&gt;
 &lt;/tr&gt;
-&lt;/table&gt;
-
-</template>
-<type>application</type>
-<rank>2</rank>
-<parent_id>0</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="18">
-<name>Contacts</name>
-<label>Everything about Contacts</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;style&gt;
-td.dashboard {
- vertical-align:top;
- text-align: center;
- border: 1px solid #ccc;
- -moz-border-radius: 10px;
- padding: 10px;
-}
-&lt;/style&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:24px;&quot;&gt;Contacts Overview&lt;/p&gt;
-&lt;table border=&quot;0&quot; padding=&quot;5&quot; class=&quot;layout&quot;&gt;
+&lt;/table&gt;</template>
+<type>application</type>
+<rank>2</rank>
+<parent_id>0</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="6">
+<name>UI:ContactsMenu</name>
+<label>UI:ContactsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;h1&gt;&lt;itopstring&gt;UI:ContactsMenu:Title&lt;/itopstring&gt;&lt;/h1&gt;
+&lt;table border=&quot;0&quot; padding=&quot;5&quot; class=&quot;layout&quot; width=&quot;100%&quot;&gt;
 &lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Contacts by Location&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;count&quot; parameters=&quot;group_by:location_id&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContact&lt;/itopblock&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-ContactsMenu-ContactsByLocation&lt;/itopstring&gt;&lt;/h2&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;count&quot; parameters=&quot;group_by:location_name&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContact&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:Contacts by location;group_by:location_id&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContact&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;chart_title:UI-ContactsMenu-ContactsByLocation;group_by:location_name&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContact&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Contacts by Type&lt;/p&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-ContactsMenu-ContactsByType&lt;/itopstring&gt;&lt;/h2&gt;
 &lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;count&quot; parameters=&quot;group_by:finalclass&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContact&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Contacts by Status&lt;/p&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-ContactsMenu-ContactsByStatus&lt;/itopstring&gt;&lt;/h2&gt;
 &lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;count&quot; parameters=&quot;group_by:status&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContact&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
-&lt;/table&gt;</template>
-<type>application</type>
-<rank>1</rank>
-<parent_id>17</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="19">
-<name>CSV import</name>
-<label>Bulk creation or update</label>
-<hyperlink>csvimport.php</hyperlink>
-<icon_path></icon_path>
-<template></template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>40</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="20">
-<name>Data Model</name>
-<label>Overview of the Data Model</label>
-<hyperlink>schema.php</hyperlink>
-<icon_path></icon_path>
-<template></template>
-<type>administrator</type>
-<rank>1500</rank>
-<parent_id>1</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="21">
-<name>Document</name>
-<label>Any object of class &apos;Document&apos;</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizDocument&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Documents&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizDocument&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>6</rank>
-<parent_id>17</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="22">
-<name>Export</name>
-<label>Export any filter in HTML, CSV or XML</label>
-<hyperlink>../webservices/export.php</hyperlink>
-<icon_path></icon_path>
-<template></template>
-<type>administrator</type>
-<rank>1001</rank>
-<parent_id>1</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="23">
-<name>Grouping</name>
-<label>All Groups</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizInfraGroup&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Groups&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizInfraGroup&lt;/itopblock&gt;
-&lt;/div&gt;
-
-
-
-</template>
-<type>application</type>
-<rank>3</rank>
-<parent_id>17</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="24">
-<name>Incident Management</name>
-<label>Incident Management</label>
-<hyperlink>./UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;style&gt;
-.dashboard {
-vertical-align:top;
-width:50%;
-border:1px solid #000;
--moz-border-radius:10px;
-padding:5px;
-text-align:center;
-}
-&lt;/style&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:24px;&quot;&gt;Incidents Overview&lt;/p&gt;
-&lt;table border=&quot;0&quot; padding=&quot;5&quot;&gt;
+&lt;/table&gt;</template>
+<type>application</type>
+<rank>1</rank>
+<parent_id>5</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="21">
+<name>UI:ContractsMenu</name>
+<label>UI:ContractsMenu+</label>
+<hyperlink>./UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContract&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:ContractsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContract&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>2</rank>
+<parent_id>14</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="7">
+<name>UI:CSVImportMenu</name>
+<label>UI:CSVImportMenu+</label>
+<hyperlink>csvimport.php</hyperlink>
+<icon_path></icon_path>
+<template></template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>15</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="8">
+<name>UI:DataModelMenu</name>
+<label>UI:DataModelMenu+</label>
+<hyperlink>schema.php</hyperlink>
+<icon_path></icon_path>
+<template></template>
+<type>administrator</type>
+<rank>1500</rank>
+<parent_id>1</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="22">
+<name>UI:DocumentsMenu</name>
+<label>UI:DocumentsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizDocument&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:DocumentsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizDocument&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>6</rank>
+<parent_id>5</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="9">
+<name>UI:ExportMenu</name>
+<label>UI:ExportMenu+</label>
+<hyperlink>../webservices/export.php</hyperlink>
+<icon_path></icon_path>
+<template></template>
+<type>administrator</type>
+<rank>1001</rank>
+<parent_id>1</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="23">
+<name>UI:GroupingMenu</name>
+<label>UI:GroupingMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizInfraGroup&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:GroupingMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizInfraGroup&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>3</rank>
+<parent_id>5</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="10">
+<name>UI:IncidentManagementMenu</name>
+<label>UI:IncidentManagementMenu+</label>
+<hyperlink>./UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;h1&gt;&lt;itopstring&gt;UI:IncidentManagementMenu:Title&lt;/itopstring&gt;&lt;/h1&gt;
+&lt;table border=&quot;0&quot; padding=&quot;5&quot; width=&quot;100%&quot;&gt;
 &lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:type;chart_title:Incidents by Type&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:type;chart_title:UI-IncidentManagementMenu-IncidentsByType&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:ticket_status;chart_title:Incidents by status&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:ticket_status;chart_title:UI-IncidentManagementMenu-IncidentsByStatus&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Incidents by Workgroup&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;count&quot; parameters=&quot;group_by:workgroup_id&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket&lt;/itopblock&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-IncidentManagementMenu-IncidentsByWorkgroup&lt;/itopstring&gt;&lt;/h2p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;count&quot; parameters=&quot;group_by:workgroup_name&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Incidents not yet assigned&lt;/p&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-IncidentManagementMenu-IncidentsNotYetAssigned&lt;/itopstring&gt;&lt;/h2p&gt;
 &lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; parameters=&quot;dashboard:true&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket WHERE ticket_status = &apos;New&apos;&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
-&lt;/table&gt;
-</template>
-<type>application</type>
-<rank>5</rank>
-<parent_id>0</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="25">
-<name>Known Errors</name>
-<label>Known Errors</label>
-<hyperlink>./UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizKnownError&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizKnownError&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>999</rank>
-<parent_id>24</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="26">
-<name>Locations</name>
-<label>Any locations</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizLocation&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:24px;&quot;&gt;All Locations&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizLocation&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>5</rank>
-<parent_id>17</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="27">
-<name>My Changes</name>
-<label>My changes</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket AS i WHERE i.agent_id = :current_contact_id&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;My Changes as a requester&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket AS i WHERE i.requestor_id = :current_contact_id&lt;/itopblock&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;My Changes as an agent&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket AS i WHERE i.agent_id = :current_contact_id&lt;/itopblock&gt;
-
-</template>
-<type>application</type>
-<rank>1</rank>
-<parent_id>13</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="28">
-<name>My Incidents</name>
-<label>My Incidents</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket AS i WHERE i.agent_id = :current_contact_id&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;My Incidents as a caller&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket AS i WHERE i.caller_id = :current_contact_id&lt;/itopblock&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;My Incidents as an agent&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket AS i WHERE i.agent_id = :current_contact_id&lt;/itopblock&gt;
-
-</template>
-<type>application</type>
-<rank>1</rank>
-<parent_id>24</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="29">
-<name>My Service calls</name>
-<label>My Service calls</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall AS i WHERE i.agent_id = :current_contact_id&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;My service calls as a caller&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall AS i WHERE i.caller_id = :current_contact_id&lt;/itopblock&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;My service calls as an agent&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall AS i WHERE i.agent_id = :current_contact_id&lt;/itopblock&gt;
-
-</template>
-<type>application</type>
-<rank>1</rank>
-<parent_id>37</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="46">
-<name>Notifications</name>
-<label>Configuration of the Notifications</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;div class=&quot;page_header&quot; style=&quot;padding:0.5em;&quot;&gt;
-&lt;h1&gt;Configuration of the &lt;span class=&quot;hilite&quot;&gt;Notifications&lt;/span&gt;&lt;/h1&gt;
-&lt;/div&gt;
-&lt;itoptoggle name=&quot;Help&quot; open=&quot;true&quot;&gt;
-&lt;div style=&quot;padding: 1em; font-size:1.25em;background:#E8F3CF;margin-top: 0.25em;&quot;&gt;
-&lt;img src=&quot;../images/bell.png&quot; style=&quot;margin-top: -60px; margin-right: 10px; float: right;&quot;&gt;
-&lt;p&gt;In iTop the notifications are fully customizable. They are based on two sets of objects: &lt;i&gt;triggers and actions&lt;/i&gt;.&lt;/p&gt;
-&lt;p&gt;&lt;i&gt;&lt;b&gt;Triggers&lt;/b&gt;&lt;/i&gt; define when a notification will be executed. There are 3 types of triggers for covering 3 differents phases of an object life cycle:
-&lt;ol&gt;
-	&lt;li&gt;the &apos;OnCreate&apos; triggers get executed when an object of the specified class is created&lt;/li&gt;
-	&lt;li&gt;the &apos;OnStateEnter&apos; triggers get executed before an object of the given class enters a specified state (coming from another state)&lt;/li&gt;
-	&lt;li&gt;the &apos;OnStateLeave&apos; triggers get executed when an object of the given class is leaving a specified state&lt;/li&gt;
-&lt;/ol&gt;
-&lt;/p&gt;
-&lt;p&gt;
-&lt;i&gt;&lt;b&gt;Actions&lt;/b&gt;&lt;/i&gt; define the actions to be performed when the triggers execute. For now there is only one kind of action consisting in sending an email message.
-Such actions also define the template to be used for sending the email as well as the other parameters of the message like the recipients, importance, etc.
-&lt;/p&gt;
-&lt;p&gt;A special page: &lt;a href=&quot;../setup/email.test.php&quot; target=&quot;_blank&quot;&gt;email.test.php&lt;/a&gt; is available for testing and troubleshooting your PHP mail configuration.&lt;/p&gt;
-&lt;p&gt;To be executed, actions must be associated to triggers.
-When associated with a trigger, each action is given an &apos;order&apos; number, specifying in which order the actions are to be executed.&lt;/p&gt;
-&lt;/div&gt;
-&lt;/itoptoggle&gt;
-&lt;p&gt;&amp;nbsp;&lt;/p&gt;
-&lt;itoptabs&gt;
-	&lt;itoptab name=&quot;Triggers&quot;&gt;
-		&lt;h3&gt;Available Triggers&lt;/h3&gt;
-		&lt;table style=&quot;border:0;border-spacing:10px;width:100%;&quot;&gt;
-		&lt;tr&gt;
-		&lt;td style=&quot;vertical-align:top;width:33%;padding:10px;background:#f8f8f8;&quot;&gt;
-		&lt;h4&gt;When an object is created&lt;/h4&gt;
-		&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT TriggerOnObjectCreate&lt;/itopblock&gt;
-		&lt;/td&gt;
-		&lt;td style=&quot;vertical-align:top;width:33%;padding:10px;background:#f8f8f8;&quot;&gt;
-		&lt;h4&gt;When an object enters a state&lt;/h4&gt;
-		&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT TriggerOnStateEnter&lt;/itopblock&gt;
-		&lt;/td&gt;
-		&lt;td style=&quot;vertical-align:top;width:33%;padding:10px;background:#f8f8f8;&quot;&gt;
-		&lt;h4&gt;When an object leaves a state&lt;/h4&gt;
-		&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT TriggerOnStateLeave&lt;/itopblock&gt;
-		&lt;/td&gt;
-		&lt;/tr&gt;
-		&lt;/table&gt;
-	&lt;/itoptab&gt;
-	&lt;itoptab name=&quot;Actions&quot;&gt;
-		&lt;h3&gt;Available Actions&lt;/h3&gt;
-		&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT ActionEmail&lt;/itopblock&gt;
-	&lt;/itoptab&gt;
-&lt;/itoptabs&gt;</template>
-<type>administrator</type>
-<rank>2</rank>
-<parent_id>1</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="30">
-<name>Open Changes</name>
-<label>Open Changes</label>
-<hyperlink>./UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>3</rank>
-<parent_id>13</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="31">
-<name>Open Incidents</name>
-<label>List of open incidents</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket WHERE ticket_status = &apos;Open&apos; AND severity = &apos;critical&apos;&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket WHERE ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>3</rank>
-<parent_id>24</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="32">
-<name>Open Service calls</name>
-<label>Open Service calls</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall WHERE call_status != &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall WHERE call_status != &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>2</rank>
-<parent_id>37</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="33">
-<name>Persons</name>
-<label>Any contact of class &apos;Person&apos;</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPerson&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPerson&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>7</rank>
-<parent_id>18</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="34">
-<name>Profiles</name>
-<label>User profiles</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path>../images/std_view.gif</icon_path>
-<template>
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT URP_Profiles AS URP_Profiles WHERE 1&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT URP_Profiles AS URP_Profiles WHERE 1&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>administrator</type>
-<rank>11</rank>
-<parent_id>43</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="35">
-<name>Run queries</name>
-<label>Run any query</label>
-<hyperlink>./run_query.php</hyperlink>
-<icon_path></icon_path>
-<template></template>
-<type>administrator</type>
-<rank>1002</rank>
-<parent_id>1</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="36">
-<name>Scheduled Outages</name>
-<label>Scheduled Outages</label>
-<hyperlink>./UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE outage = &apos;Yes&apos; AND ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE outage = &apos;Yes&apos; AND ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>7</rank>
-<parent_id>13</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="37">
-<name>Service Desk</name>
-<label>Service Desk</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;style&gt;
-.dashboard {
-vertical-align:top;
-width:50%;
-border:1px solid #000;
--moz-border-radius:10px;
-padding:5px;
-text-align:center;
-}
-&lt;/style&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:24px;&quot;&gt;Service Calls Overview&lt;/p&gt;
-&lt;table border=&quot;0&quot; padding=&quot;5&quot;&gt;
+&lt;/table&gt;</template>
+<type>application</type>
+<rank>5</rank>
+<parent_id>0</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="24">
+<name>UI:InterfacesMenu</name>
+<label>UI:InterfacesMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizInterface&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:InterfacesMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizInterface&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>4</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="25">
+<name>UI:KnownErrorsMenu</name>
+<label>UI:KnownErrorsMenu+</label>
+<hyperlink>./UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizKnownError&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:KnownErrorsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizKnownError&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>10</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="26">
+<name>UI:LocationsMenu</name>
+<label>UI:LocationsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizLocation&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:LocationsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizLocation&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>5</rank>
+<parent_id>5</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="27">
+<name>UI:MyChangesMenu</name>
+<label>UI:MyChangesMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket AS C WHERE C.agent_id = :current_contact_id&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:MyChangesMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket AS C WHERE C.agent_id = :current_contact_id&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>1</rank>
+<parent_id>3</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="28">
+<name>UI:MyIncidentsMenu</name>
+<label>UI:MyIncidentsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket AS I WHERE I.agent_id = :current_contact_id&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:MyIncidentsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket AS I WHERE I.agent_id = :current_contact_id&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>1</rank>
+<parent_id>10</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="29">
+<name>UI:MyServiceCallsMenu</name>
+<label>UI:MyServiceCallsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall AS SC WHERE SC.agent_id = :current_contact_id&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:MyServiceCallsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall AS SC WHERE SC.agent_id = :current_contact_id&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>1</rank>
+<parent_id>13</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="30">
+<name>UI:NetworkDevicesMenu</name>
+<label>UI:NetworkDevicesMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizNetworkDevice&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:NetworkDevicesMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizNetworkDevice&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>4</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="11">
+<name>UI:NotificationsMenu</name>
+<label>UI:NotificationsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;div class=&quot;page_header&quot; style=&quot;padding:0.5em;&quot;&gt;
+&lt;h1&gt;Configuration of the &lt;span class=&quot;hilite&quot;&gt;Notifications&lt;/span&gt;&lt;/h1&gt;
+&lt;/div&gt;
+&lt;itoptoggle name=&quot;Help&quot; open=&quot;true&quot;&gt;
+&lt;div style=&quot;padding: 1em; font-size:1.25em;background:#E8F3CF;margin-top: 0.25em;&quot;&gt;
+&lt;img src=&quot;../images/bell.png&quot; style=&quot;margin-top: -60px; margin-right: 10px; float: right;&quot;&gt;
+&lt;p&gt;In iTop the notifications are fully customizable. They are based on two sets of objects: &lt;i&gt;triggers and actions&lt;/i&gt;.&lt;/p&gt;
+&lt;p&gt;&lt;i&gt;&lt;b&gt;Triggers&lt;/b&gt;&lt;/i&gt; define when a notification will be executed. There are 3 types of triggers for covering 3 differents phases of an object life cycle:
+&lt;ol&gt;
+	&lt;li&gt;the &apos;OnCreate&apos; triggers get executed when an object of the specified class is created&lt;/li&gt;
+	&lt;li&gt;the &apos;OnStateEnter&apos; triggers get executed before an object of the given class enters a specified state (coming from another state)&lt;/li&gt;
+	&lt;li&gt;the &apos;OnStateLeave&apos; triggers get executed when an object of the given class is leaving a specified state&lt;/li&gt;
+&lt;/ol&gt;
+&lt;/p&gt;
+&lt;p&gt;
+&lt;i&gt;&lt;b&gt;Actions&lt;/b&gt;&lt;/i&gt; define the actions to be performed when the triggers execute. For now there is only one kind of action consisting in sending an email message.
+Such actions also define the template to be used for sending the email as well as the other parameters of the message like the recipients, importance, etc.
+&lt;/p&gt;
+&lt;p&gt;A special page: &lt;a href=&quot;../setup/email.test.php&quot; target=&quot;_blank&quot;&gt;email.test.php&lt;/a&gt; is available for testing and troubleshooting your PHP mail configuration.&lt;/p&gt;
+&lt;p&gt;To be executed, actions must be associated to triggers.
+When associated with a trigger, each action is given an &apos;order&apos; number, specifying in which order the actions are to be executed.&lt;/p&gt;
+&lt;/div&gt;
+&lt;/itoptoggle&gt;
+&lt;p&gt;&amp;nbsp;&lt;/p&gt;
+&lt;itoptabs&gt;
+	&lt;itoptab name=&quot;Triggers&quot;&gt;
+		&lt;h3&gt;Available Triggers&lt;/h3&gt;
+		&lt;table style=&quot;border:0;border-spacing:10px;width:100%;&quot;&gt;
+		&lt;tr&gt;
+		&lt;td style=&quot;vertical-align:top;width:33%;padding:10px;background:#f8f8f8;&quot;&gt;
+		&lt;h4&gt;When an object is created&lt;/h4&gt;
+		&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT TriggerOnObjectCreate&lt;/itopblock&gt;
+		&lt;/td&gt;
+		&lt;td style=&quot;vertical-align:top;width:33%;padding:10px;background:#f8f8f8;&quot;&gt;
+		&lt;h4&gt;When an object enters a state&lt;/h4&gt;
+		&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT TriggerOnStateEnter&lt;/itopblock&gt;
+		&lt;/td&gt;
+		&lt;td style=&quot;vertical-align:top;width:33%;padding:10px;background:#f8f8f8;&quot;&gt;
+		&lt;h4&gt;When an object leaves a state&lt;/h4&gt;
+		&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT TriggerOnStateLeave&lt;/itopblock&gt;
+		&lt;/td&gt;
+		&lt;/tr&gt;
+		&lt;/table&gt;
+	&lt;/itoptab&gt;
+	&lt;itoptab name=&quot;Actions&quot;&gt;
+		&lt;h3&gt;Available Actions&lt;/h3&gt;
+		&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT ActionEmail&lt;/itopblock&gt;
+	&lt;/itoptab&gt;
+&lt;/itoptabs&gt;</template>
+<type>administrator</type>
+<rank>2</rank>
+<parent_id>1</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="31">
+<name>UI:OpenChangesMenu</name>
+<label>UI:OpenChangesMenu+</label>
+<hyperlink>./UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:OpenChangesMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>3</rank>
+<parent_id>3</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="32">
+<name>UI:OpenIncidentsMenu</name>
+<label>UI:OpenIncidentsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket WHERE ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:OpenIncidentsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket WHERE ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>3</rank>
+<parent_id>10</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="33">
+<name>UI:OpenServiceCallsMenu</name>
+<label>UI:OpenServiceCallsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall WHERE call_status != &apos;Closed&apos;&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:OpenServiceCallsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall WHERE call_status != &apos;Closed&apos;&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>2</rank>
+<parent_id>13</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="34">
+<name>UI:PatchesMenu</name>
+<label>UI:PatchesMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPatch&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:PatchesMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPatch&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>4</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="35">
+<name>UI:PCsMenu</name>
+<label>UI:PCsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPC&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:PCsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPC&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>4</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="36">
+<name>UI:PersonsMenu</name>
+<label>UI:PersonsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPerson&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:PersonsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizPerson&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>7</rank>
+<parent_id>6</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="37">
+<name>UI:ProfilesMenu</name>
+<label>UI:ProfilesMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path>../images/std_view.gif</icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT URP_Profiles&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:ProfilesMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT URP_Profiles&lt;/itopblock&gt;
+</template>
+<type>administrator</type>
+<rank>11</rank>
+<parent_id>45</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="12">
+<name>UI:RunQueriesMenu</name>
+<label>UI:RunQueriesMenu+</label>
+<hyperlink>./run_query.php</hyperlink>
+<icon_path></icon_path>
+<template></template>
+<type>administrator</type>
+<rank>1002</rank>
+<parent_id>1</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="38">
+<name>UI:ScheduledOutagesMenu</name>
+<label>UI:ScheduledOutagesMenu+</label>
+<hyperlink>./UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE outage = &apos;Yes&apos; AND ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:ScheduledOutagesMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizChangeTicket WHERE outage = &apos;Yes&apos; AND ticket_status != &apos;Closed&apos;&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>7</rank>
+<parent_id>3</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="39">
+<name>UI:ServersMenu</name>
+<label>UI:ServersMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServer&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:ServersMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServer&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>4</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="13">
+<name>UI:ServiceDeskMenu</name>
+<label>UI:ServiceDeskMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;h1&gt;&lt;itopstring&gt;UI:ServiceDeskMenu:Title&lt;/itopstring&gt;&lt;/h1&gt;
+&lt;table border=&quot;0&quot; padding=&quot;5&quot; width=&quot;100%&quot;&gt;
 &lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:type;chart_title:Service Calls by Type&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:type;chart_title:UI-ServiceDeskMenu-CallsByType&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:call_status;chart_title:Service Calls by status&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:call_status;chart_title:UI-ServiceDeskMenu-CallsByStatus&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:severity;chart_title:Service Calls by Severity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:severity;chart_title:UI-ServiceDeskMenu-CallsBySeverity&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Service calls not yet assigned&lt;/p&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-ServiceDeskMenu-CallsNotYetAssigned&lt;/itopstring&gt;&lt;/h2&gt;
 &lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; parameters=&quot;dashboard:true&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall WHERE call_status = &apos;New&apos;&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
-&lt;/table&gt;
-</template>
-<type>application</type>
-<rank>3</rank>
-<parent_id>0</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="38">
-<name>Service Management</name>
-<label>Service Management</label>
-<hyperlink>./UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;style&gt;
-.dashboard {
-vertical-align:top;
-width:50%;
-border:1px solid #000;
--moz-border-radius:10px;
-padding:5px;
-text-align:center;
-}
-&lt;/style&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:24px;&quot;&gt;Service Management Overview&lt;/p&gt;
-&lt;table border=&quot;0&quot; padding=&quot;5&quot;&gt;
+&lt;/table&gt;</template>
+<type>application</type>
+<rank>3</rank>
+<parent_id>0</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="14">
+<name>UI:ServiceManagementMenu</name>
+<label>UI:ServiceManagementMenu+</label>
+<hyperlink>./UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;h1&gt;&lt;itopstring&gt;UI:ServiceManagementMenu:Title&lt;/itopstring&gt;&lt;/h1&gt;
+&lt;table border=&quot;0&quot; padding=&quot;5&quot; width=&quot;100%&quot;&gt;
 &lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:type;chart_title:Contracts by service level&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContract&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:bars;group_by:type;chart_title:UI-ServiceManagementMenu-ContractsBySrvLevel&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContract&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:status;chart_title:Contracts by status&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContract&lt;/itopblock&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;open_flash_chart&quot; parameters=&quot;chart_type:pie;group_by:status;chart_title:UI-ServiceManagementMenu-ContractsByStatus&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContract&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td class=&quot;dashboard&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;Contracts ending in 30 days&lt;/p&gt;
+&lt;h2&gt;&lt;itopstring&gt;UI-ServiceManagementMenu-ContractsEndingIn30Days&lt;/itopstring&gt;&lt;/h2&gt;
 &lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; parameters=&quot;dashboard:true&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizContract WHERE bizContract.end_prod = (TO_DAYS(NOW()) + TO_DAYS(30))&lt;/itopblock&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
-&lt;/table&gt;
-</template>
-<type>application</type>
-<rank>8</rank>
-<parent_id>0</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="39">
-<name>Teams</name>
-<label>Any contact of class &apos;team&apos;</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizTeam&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizTeam&lt;/itopblock&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>8</rank>
-<parent_id>18</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="40">
-<name>Tools</name>
-<label>Advanced tools</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:32px;&quot;&gt;Tools for the iTop consultant&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:14px;&quot;&gt;&lt;i&gt;This section contains links to useful tools for extending or debugging iTop&lt;/i&gt;&lt;/p&gt;
-</template>
-<type>application</type>
-<rank>9</rank>
-<parent_id>0</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="41">
-<name>Universal Search</name>
-<label>Search for anything...</label>
-<hyperlink>UniversalSearch.php</hyperlink>
-<icon_path></icon_path>
-<template></template>
-<type>administrator</type>
-<rank>1600</rank>
-<parent_id>1</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="42">
-<name>User logins</name>
-<label>User logins</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path>../images/std_view.gif</icon_path>
-<template>
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT URP_Users AS URP_Users WHERE 1&lt;/itopblock&gt;
-&lt;div id=&quot;BottomPane&quot;&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT URP_Users AS URP_Users WHERE 1&lt;/itopblock&gt;
-&lt;/div&gt;
-</template>
-<type>administrator</type>
-<rank>10</rank>
-<parent_id>43</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="43">
-<name>User management</name>
-<label>User management</label>
-<hyperlink>UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:32px;&quot;&gt;User management&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:14px;&quot;&gt;&lt;i&gt;User management by profiles&lt;/i&gt;&lt;/p&gt;
-</template>
-<type>administrator</type>
-<rank>1</rank>
-<parent_id>1</parent_id>
-<user_id>0</user_id>
-</menuNode>
-<menuNode id="44">
-<name>Welcome</name>
-<label>Welcome</label>
-<hyperlink>./UI.php</hyperlink>
-<icon_path></icon_path>
-<template>&lt;div style=&quot;width:100%;background: url(../images/welcome.jpg) top left no-repeat;&quot;&gt;
-&lt;style&gt;
-.dashboard {
-vertical-align:top;
-width:50%;
-border:0px solid #000;
-background-color:#F9F9F1;
-padding:10px;
-text-align:left;
-font-size:10pt;
-}
-.dashboard2 {
-vertical-align:top;
-width:50%;
-border:0px solid #000;
--moz-border-radius:10px;
-padding:5px;
-text-align:left;
-}
-
-td.dashboard li {
-margin-top: 5px;
-display: list-item;
-}
-&lt;/style&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;p style=&quot;text-align:left; font-size:32px;padding-left:400px;padding-top:40px;margin-bottom:30px;margin-top:0;color:#FFFFFF;&quot;&gt;Welcome to iTop&lt;/p&gt;
-&lt;p&gt;&lt;/p&gt;
-&lt;table border=&quot;0&quot; style=&quot;padding:10px;border-spacing: 10px;&quot;&gt;
-&lt;tr&gt;
-&lt;td class=&quot;dashboard&quot;&gt;
-&lt;p&gt;iTop is a complete, OpenSource, IT Operational Portal.&lt;/p&gt;
-&lt;ul&gt;It includes:
-&lt;li&gt;A complete CMDB (Configuration management database) to document and manage the IT inventory.&lt;/li&gt;
-&lt;li&gt;An Incident management module to track and communicate about all issues occurring in the IT.&lt;/li&gt;
-&lt;li&gt;A change management module to plan and track the changes to the IT environment.&lt;/li&gt;
-&lt;li&gt;A known error database to speed up the resolution of incidents.&lt;/li&gt;
-&lt;li&gt;An outage module to document all planned outages and notify the appropriate contacts.&lt;/li&gt;
-&lt;li&gt;Dashboards to quickly get an overview of your IT.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;p&gt;All the modules can be setup, step by step, indepently of each other.&lt;/p&gt;
-&lt;/td&gt;
-&lt;td class=&quot;dashboard&quot;&gt;
-&lt;p&gt;iTop is service provider oriented, it allows IT engineers to manage easily multiple customers or organizations.
-&lt;ul&gt;iTop, delivers a feature-rich set of business processes that:
-&lt;li&gt;Enhances IT management effectiveness&lt;/li&gt; 
-&lt;li&gt;Drives IT operations performance&lt;/li&gt; 
-&lt;li&gt;Improves customer satisfaction and provides executives with insights into business performance.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;/p&gt;
-&lt;p&gt;iTop is completely opened to be integrated within your current IT Management infrastructure.&lt;/p&gt;
-&lt;p&gt;
-&lt;ul&gt;Adopting this new generation of IT Operational portal will help you to:
-&lt;li&gt;Better manage a more and more complex IT environment.&lt;/li&gt;
-&lt;li&gt;Implement ITIL processes at your own pace.&lt;/li&gt;
-&lt;li&gt;Manage the most important asset of your IT: Documentation.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;/p&gt;
-&lt;/td&gt;
-&lt;/tr&gt;
-&lt;tr&gt;
-&lt;td class=&quot;dashboard2&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;My Service calls&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall AS i WHERE i.caller_id = :current_contact_id&lt;/itopblock&gt;
-&lt;/td&gt;
-&lt;td class=&quot;dashboard2&quot;&gt;
-&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;My Incident tickets&lt;/p&gt;
-&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket AS i WHERE i.caller_id = :current_contact_id&lt;/itopblock&gt;
-&lt;/td&gt;
-
-&lt;/tr&gt;
-&lt;/table&gt;
-&lt;/div&gt;</template>
-<type>application</type>
-<rank>1</rank>
-<parent_id>0</parent_id>
-<user_id>0</user_id>
-</menuNode>
-</Set>
+&lt;/table&gt;</template>
+<type>application</type>
+<rank>8</rank>
+<parent_id>0</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="40">
+<name>UI:ServicesMenu</name>
+<label>UI:ServicesMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizService&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:ServicesMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizService&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>1</rank>
+<parent_id>14</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="41">
+<name>UI:SubnetsMenu</name>
+<label>UI:SubnetsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizSubnet&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:SubnetsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizSubnet&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>999</rank>
+<parent_id>4</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="42">
+<name>UI:TeamsMenu</name>
+<label>UI:TeamsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizTeam&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:TeamsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizTeam&lt;/itopblock&gt;
+</template>
+<type>application</type>
+<rank>8</rank>
+<parent_id>6</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="44">
+<name>UI:UniversalSearchMenu</name>
+<label>UI:UniversalSearchMenu+</label>
+<hyperlink>UniversalSearch.php</hyperlink>
+<icon_path></icon_path>
+<template></template>
+<type>administrator</type>
+<rank>1600</rank>
+<parent_id>1</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="43">
+<name>UI:UserAccountsMenu</name>
+<label>UI:UserAccountsMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path>../images/std_view.gif</icon_path>
+<template>&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;search&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT URP_Users&lt;/itopblock&gt;
+&lt;p class=&quot;page-header&quot;&gt;&lt;itopstring&gt;UI:UserAccountsMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT URP_Users&lt;/itopblock&gt;
+</template>
+<type>administrator</type>
+<rank>10</rank>
+<parent_id>45</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="45">
+<name>UI:UserManagementMenu</name>
+<label>UI:UserManagementMenu+</label>
+<hyperlink>UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;p&gt;&lt;/p&gt;
+&lt;p&gt;&lt;/p&gt;
+&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:32px;&quot;&gt;User management&lt;/p&gt;
+&lt;p&gt;&lt;/p&gt;
+&lt;p style=&quot;text-align:center; font-family:Georgia, &apos;Times New Roman&apos;, Times, serif; font-size:14px;&quot;&gt;&lt;i&gt;User management by profiles&lt;/i&gt;&lt;/p&gt;
+</template>
+<type>administrator</type>
+<rank>1</rank>
+<parent_id>1</parent_id>
+<user_id>0</user_id>
+</menuNode>
+<menuNode alias="menuNode" id="46">
+<name>UI:WelcomeMenu</name>
+<label>UI:WelcomeMenu+</label>
+<hyperlink>./UI.php</hyperlink>
+<icon_path></icon_path>
+<template>&lt;div style=&quot;width:100%;background: url(../images/welcome.jpg) top left no-repeat;&quot;&gt;
+&lt;style&gt;
+.dashboard {
+vertical-align:top;
+width:50%;
+border:0px solid #000;
+background-color:#F9F9F1;
+padding:10px;
+text-align:left;
+font-size:10pt;
+}
+.dashboard2 {
+vertical-align:top;
+width:50%;
+border:0px solid #000;
+-moz-border-radius:10px;
+padding:5px;
+text-align:left;
+}
+
+td.dashboard li {
+margin-top: 5px;
+display: list-item;
+}
+&lt;/style&gt;
+&lt;p&gt;&lt;/p&gt;
+&lt;p&gt;&lt;/p&gt;
+&lt;p style=&quot;text-align:left; font-size:32px;padding-left:400px;padding-top:40px;margin-bottom:30px;margin-top:0;color:#FFFFFF;&quot;&gt;&lt;itopstring&gt;UI:WelcomeMenu:Title&lt;/itopstring&gt;&lt;/p&gt;
+&lt;p&gt;&lt;/p&gt;
+&lt;table border=&quot;0&quot; style=&quot;padding:10px;border-spacing: 10px;&quot;&gt;
+&lt;tr&gt;
+&lt;td class=&quot;dashboard&quot;&gt;
+&lt;itopstring&gt;UI:WelcomeMenu:LeftBlock&lt;/itopstring&gt;
+&lt;/td&gt;
+&lt;td class=&quot;dashboard&quot;&gt;
+&lt;itopstring&gt;UI:WelcomeMenu:RightBlock&lt;/itopstring&gt;
+&lt;/td&gt;
+&lt;/tr&gt;
+&lt;tr&gt;
+&lt;td class=&quot;dashboard2&quot;&gt;
+&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;&lt;itopstring&gt;UI:WelcomeMenu:MyCalls&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizServiceCall AS i WHERE i.caller_id = :current_contact_id&lt;/itopblock&gt;
+&lt;/td&gt;
+&lt;td class=&quot;dashboard2&quot;&gt;
+&lt;p style=&quot;text-align:left; font-family:Verdana, Arial, sans-serif; font-size:16px;&quot;&gt;&lt;itopstring&gt;UI:WelcomeMenu:MyIncidents&lt;/itopstring&gt;&lt;/p&gt;
+&lt;itopblock BlockClass=&quot;DisplayBlock&quot; type=&quot;list&quot; asynchronous=&quot;false&quot; encoding=&quot;text/oql&quot;&gt;SELECT bizIncidentTicket AS i WHERE i.caller_id = :current_contact_id&lt;/itopblock&gt;
+&lt;/td&gt;
+
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/div&gt;</template>
+<type>application</type>
+<rank>1</rank>
+<parent_id>0</parent_id>
+<user_id>0</user_id>
+</menuNode>
+</Set>

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません