فهرست منبع

- reintegrated the changes (mostly bug fixes) from the 0.7.2 branch

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@83 a333f486-631f-4898-b8df-5754b55c2be0
dflaven 16 سال پیش
والد
کامیت
d4454046d9

+ 7 - 7
addons/userrights/userrightsmatrix.class.inc.php

@@ -312,7 +312,7 @@ class UserRightsMatrix extends UserRightsAddOnAPI
 		$oLogin = $oSet->Fetch();
 		if ($oLogin->Get('password') == $sPassword)
 		{
-			return true;
+			return $oLogin->Get('userid');
 		}
 		// todo: throw an exception?
 		return false;
@@ -324,7 +324,7 @@ class UserRightsMatrix extends UserRightsAddOnAPI
 		return $oNullFilter;
 	}
 
-	public function IsActionAllowed($sUserName, $sClass, $iActionCode, dbObjectSet $aInstances)
+	public function IsActionAllowed($iUserId, $sClass, $iActionCode, dbObjectSet $aInstances)
 	{
 		if (!array_key_exists($iActionCode, self::$m_aActionCodes))
 		{
@@ -332,7 +332,7 @@ class UserRightsMatrix extends UserRightsAddOnAPI
 		}
 		$sAction = self::$m_aActionCodes[$iActionCode];
 
-		$oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT UserRightsMatrixClassGrant WHERE class = '$sClass' AND action = '$sAction' AND login = '$sUserName'"));
+		$oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT UserRightsMatrixClassGrant WHERE class = '$sClass' AND action = '$sAction' AND userid = '$iUserId'"));
 		if ($oSet->Count() < 1)
 		{
 			return UR_ALLOWED_NO;
@@ -352,7 +352,7 @@ class UserRightsMatrix extends UserRightsAddOnAPI
 		return $iRetCode;
 	}
 
-	public function IsActionAllowedOnAttribute($sUserName, $sClass, $sAttCode, $iActionCode, dbObjectSet $aInstances)
+	public function IsActionAllowedOnAttribute($iUserId, $sClass, $sAttCode, $iActionCode, dbObjectSet $aInstances)
 	{
 		if (!array_key_exists($iActionCode, self::$m_aActionCodes))
 		{
@@ -360,7 +360,7 @@ class UserRightsMatrix extends UserRightsAddOnAPI
 		}
 		$sAction = self::$m_aActionCodes[$iActionCode];
 
-		$oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT UserRightsMatrixAttributeGrant WHERE UserRightsMatrixAttributeGrant.class = '$sClass' AND UserRightsMatrixAttributeGrant.attcode = '$sAttCode' AND UserRightsMatrixAttributeGrant.action = '$sAction' AND UserRightsMatrixAttributeGrant.login = '$sUserName'"));
+		$oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT UserRightsMatrixAttributeGrant WHERE class = '$sClass' AND attcode = '$sAttCode' AND action = '$sAction' AND userid = '$iUserId'"));
 		if ($oSet->Count() < 1)
 		{
 			return UR_ALLOWED_NO;
@@ -380,9 +380,9 @@ class UserRightsMatrix extends UserRightsAddOnAPI
 		return $iRetCode;
 	}
 
-	public function IsStimulusAllowed($sUserName, $sClass, $sStimulusCode, dbObjectSet $aInstances)
+	public function IsStimulusAllowed($iUserId, $sClass, $sStimulusCode, dbObjectSet $aInstances)
 	{
-		$oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT UserRightsMatrixClassStimulusGrant WHERE class = '$sClass' AND stimulus = '$sStimulusCode' AND login = '$sUserName'"));
+		$oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT UserRightsMatrixClassStimulusGrant WHERE class = '$sClass' AND stimulus = '$sStimulusCode' AND userid = '$iUserId'"));
 		if ($oSet->Count() < 1)
 		{
 			return UR_ALLOWED_NO;

+ 10 - 8
application/cmdbabstract.class.inc.php

@@ -142,7 +142,7 @@ abstract class cmdbAbstractObject extends CMDBObject
 		if (!empty($sTemplate))
 		{
 			$oTemplate = new DisplayTemplate($sTemplate);
-			$oTemplate->Render($oPage, array('class'=> get_class($this),'pkey'=> $this->GetKey(), 'name' => $this->GetName()));
+			$oTemplate->Render($oPage, array('class_name'=> MetaModel::GetName(get_class($this)),'class'=> get_class($this),'pkey'=> $this->GetKey(), 'name' => $this->GetName()));
 		}
 		else
 		{
@@ -152,7 +152,7 @@ abstract class cmdbAbstractObject extends CMDBObject
 			$oSingletonFilter->AddCondition('pkey', array($this->GetKey()));
 			$oBlock = new MenuBlock($oSingletonFilter, 'popup', false);
 			$oBlock->Display($oPage, -1);
-			$oPage->add("<h1>".Metamodel::GetName(get_class($this)).": <span class=\"hilite\">".$this->GetDisplayName()."</span></h1>\n");
+			$oPage->add("<h1>".Metamodel::GetName(MetaModel::GetName(get_class($this))).": <span class=\"hilite\">".$this->GetDisplayName()."</span></h1>\n");
 			$oHistoryFilter = new DBObjectSearch('CMDBChangeOpSetAttribute');
 			$oHistoryFilter->AddCondition('objkey', $this->GetKey());
 			$oBlock = new HistoryBlock($oHistoryFilter, 'toggle', false);
@@ -276,13 +276,15 @@ abstract class cmdbAbstractObject extends CMDBObject
 		}
 		$oMenuBlock = new MenuBlock($oSet->GetFilter());
 		$sHtml .= '<table class="listContainer">';
+		$sColspan = '';
 		if ($bDisplayMenu)
 		{
-			$sHtml .= '<tr class="containerHeader"><td>';
+			$sColspan = 'colspan="2"';
+			$sHtml .= '<tr class="containerHeader"><td>&nbsp;'.$oSet->Count().' object(s)</td><td>';
 			$sHtml .= $oMenuBlock->GetRenderContent($oPage, $sLinkageAttribute);
 			$sHtml .= '</td></tr>';
 		}
-		$sHtml .= '<tr><td>';
+		$sHtml .= "<tr><td $sColspan>";
 		$sHtml .= $oPage->GetTable($aAttribs, $aValues, array('class'=>$sClassName, 'filter'=>$oSet->GetFilter()->serialize(), 'preview' => true));
 		$sHtml .= '</td></tr>';
 		$sHtml .= '</table>';
@@ -519,14 +521,14 @@ abstract class cmdbAbstractObject extends CMDBObject
 					{
 						$sHTMLValue = "<input type=\"text\" size=\"70\" value=\"\" name=\"attr_$sAttCode\"  id=\"$iInputId\"/>";
 					}
-					else if (count($aAllowedValues) > 20)
+					else if (count($aAllowedValues) > 50)
 					{
 						// too many choices, use an autocomplete
 						// The input for the auto complete
-						$sHTMLValue = "<input type=\"text\" id=\"$iInputId\" size=\"50\" name=\"\" value=\"$sDisplayValue\" />";
+						$sHTMLValue = "<input type=\"text\" id=\"label_$iInputId\" size=\"50\" name=\"\" value=\"$sDisplayValue\" />";
 						// another hidden input to store & pass the object's Id
-						$sHTMLValue .= "<input type=\"hidden\" id=\"id_ac_$iInputId\" name=\"attr_$sAttCode\" value=\"$value\" />\n";
-						$oPage->add_ready_script("\$('#$iInputId').autocomplete('./ajax.render.php', { minChars:3, onItemSelect:selectItem, onFindValue:findValue, formatItem:formatItem, autoFill:true, keyHolder:'#id_ac_$iInputId', extraParams:{operation:'autocomplete', sclass:'$sClass',attCode:'".$sAttCode."'}});");
+						$sHTMLValue .= "<input type=\"hidden\" id=\"$iInputId\" name=\"attr_$sAttCode\" value=\"$value\" />\n";
+						$oPage->add_ready_script("\$('#label_$iInputId').autocomplete('./ajax.render.php', { minChars:3, onItemSelect:selectItem, onFindValue:findValue, formatItem:formatItem, autoFill:true, keyHolder:'#$iInputId', extraParams:{operation:'autocomplete', sclass:'$sClass',attCode:'".$sAttCode."'}});");
 					}
 					else
 					{

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

@@ -248,10 +248,6 @@ class DisplayBlock
 			$bDashboardMode = isset($aExtraParams['dashboard']) ? ($aExtraParams['dashboard'] == 'true') : false;
 			if ( ($this->m_oSet->Count()> 0) && (UserRights::IsActionAllowed($this->m_oSet->GetClass(), UR_ACTION_READ, $this->m_oSet) == UR_ALLOWED_YES) )
 			{
-				if (!$bDashboardMode)
-				{
-					$sHtml .= $oPage->GetP($this->m_oSet->Count()." object(s).");
-				}
 				$sLinkage = isset($aExtraParams['linkage']) ? $aExtraParams['linkage'] : '';
 				$sHtml .= cmdbAbstractObject::GetDisplaySet($oPage, $this->m_oSet, $sLinkage, !$bDashboardMode /* bDisplayMenu */);
 			}
@@ -616,7 +612,8 @@ class MenuBlock extends DisplayBlock
 			}
 			else
 			{
-				$aActions[] = array ('label' => 'eMail', 'url' => "mailto:?subject=".$oSet->GetFilter()->__DescribeHTML()."&body=".urlencode("http://localhost:81/pages/UI.php?operation=search&filter=$sFilter&$sContext"));
+				$sUrl = self::GetAbsoluteUrl();
+				$aActions[] = array ('label' => 'eMail', 'url' => "mailto:?subject=".$oSet->GetFilter()->__DescribeHTML()."&body=".urlencode("$sUrl?operation=search&filter=$sFilter&$sContext"));
 				$aActions[] = array ('label' => 'CSV Export', 'url' => "../pages/$sUIPage?operation=search&filter=$sFilter&format=csv&$sContext");
 				$aActions[] = array ('label' => 'Bookmark...', 'url' => "../pages/ajax.render.php?operation=create&class=$sClass&filter=$sFilter", 'class' => 'jqmTrigger');
 				if ($bIsModifyAllowed) { $aActions[] = array ('label' => 'New...', 'url' => "../pages/$sUIPage?operation=new&class=$sClass&$sContext"); }
@@ -663,7 +660,8 @@ class MenuBlock extends DisplayBlock
 			else
 			{
 				// many objects in the set, possible actions are: new / modify all / delete all
-				$aActions[] = array ('label' => 'eMail', 'url' => "mailto:?subject=".$oSet->GetFilter()->__DescribeHTML()."&body=".urlencode("http://localhost:81/pages/UI.php?operation=search&filter=$sFilter&$sContext"));
+				$sUrl = self::GetAbsoluteUrl();
+				$aActions[] = array ('label' => 'eMail', 'url' => "mailto:?subject=".$oSet->GetFilter()->__DescribeHTML()."&body=".urlencode("$sUrl?operation=search&filter=$sFilter&$sContext"));
 				$aActions[] = array ('label' => 'CSV Export', 'url' => "../pages/$sUIPage?operation=search&filter=$sFilter&format=csv&$sContext");
 				$aActions[] = array ('label' => 'Bookmark...', 'url' => "../pages/ajax.render.php?operation=create&class=$sClass&filter=$sFilter", 'class' => 'jqmTrigger');
 				if ($bIsModifyAllowed) { $aActions[] = array ('label' => 'New...', 'url' => "../pages/$sUIPage?operation=new&class=$sClass&$sContext"); }
@@ -680,7 +678,25 @@ class MenuBlock extends DisplayBlock
 		$sHtml .= "</ul>\n</li>\n</ul></div>\n";
 		$oPage->add_ready_script("$(\"ul.jd_menu\").jdMenu();\n");
 		return $sHtml;
-	}
+	}	
 	
+	static public function GetAbsoluteUrl()
+	{
+		// Build an absolute URL to this page on this server/port
+		$sServerName = $_SERVER['SERVER_NAME'];
+		$sProtocol = isset($_SERVER['HTTPS']) ? 'https' : 'http';
+		if ($sProtocol == 'http')
+		{
+			$sPort = ($_SERVER['SERVER_PORT'] == 80) ? '' : ':'.$_SERVER['SERVER_PORT'];
+		}
+		else
+		{
+			$sPort = ($_SERVER['SERVER_PORT'] == 443) ? '' : ':'.$_SERVER['SERVER_PORT'];
+		}
+		$sPath = $_SERVER['REQUEST_URI'];
+		$sUrl = "$sProtocol://{$sServerName}{$sPort}{$sPath}";
+		
+		return $sUrl;
+	}
 }
 ?>

+ 2 - 1
application/itopwebpage.class.inc.php

@@ -255,7 +255,8 @@ EOF
 			$sText = "Your search";
 			$sOnClick = " onclick=\"this.value='';this.onclick=null;\"";
 		}
-		echo "<div id=\"OrganizationSelection\" style=\"position:absolute; top:18px; right:16px; width:400px;\">";
+		$sUserName = UserRights::GetUser();
+		echo "<div id=\"OrganizationSelection\" style=\"position:absolute; top:18px; right:16px; width:400px;\">Logged as '$sUserName'&nbsp;&nbsp;&nbsp;";
 		echo "<form action=\"../pages/UI.php\" style=\"display:inline\"><div style=\"padding:1px; background-color:#fff;display:inline;\"><img src=\"../images/magnifier.gif\"/><input style=\"border:0\" type=\"text\" size=\"15\" title=\"Global Search\" name=\"text\" value=\"$sText\"$sOnClick></input></div><input type=\"Submit\" value=\"Search\">
 			  <input type=\"hidden\" name=\"operation\" value=\"full_text\"></form>\n";
 		echo "</div>\n";

+ 1 - 1
application/ui.linkswidget.class.inc.php

@@ -61,7 +61,7 @@ class UILinksWidget
 		}
 
 		// Many values (or even a unknown list) display an autocomplete
-		if ( (count($aAllowedValues) == 0) || (count($aAllowedValues) > 20) )
+		if ( (count($aAllowedValues) == 0) || (count($aAllowedValues) > 50) )
 		{
 			// too many choices, use an autocomplete
 			// The input for the auto complete

+ 35 - 32
application/uiwizard.class.inc.php

@@ -34,42 +34,45 @@ class UIWizard
 		$sJSHandlerCode = ''; // Javascript code to be executed each time this step of the wizard is entered
 		foreach($aStep as $sAttCode)
 		{
-			$oAttDef = MetaModel::GetAttributeDef($this->m_sClass, $sAttCode);
-			$sAttLabel = $oAttDef->GetLabel();
-			$iOptions = isset($aStates[$this->m_sTargetState]['attribute_list'][$sAttCode]) ? $aStates[$this->m_sTargetState]['attribute_list'][$sAttCode] : 0;
-	
-			$aPrerequisites = $oAttDef->GetPrerequisiteAttributes();
-			if ($iOptions & (OPT_ATT_MANDATORY | OPT_ATT_MUSTCHANGE | OPT_ATT_MUSTPROMPT))
+			if ($sAttCode != 'finalclass') // Do not displa the attribute that stores the actual class name
 			{
-				$aFields[$sAttCode] = array();
-				foreach($aPrerequisites as $sCode)
+				$oAttDef = MetaModel::GetAttributeDef($this->m_sClass, $sAttCode);
+				$sAttLabel = $oAttDef->GetLabel();
+				$iOptions = isset($aStates[$this->m_sTargetState]['attribute_list'][$sAttCode]) ? $aStates[$this->m_sTargetState]['attribute_list'][$sAttCode] : 0;
+		
+				$aPrerequisites = $oAttDef->GetPrerequisiteAttributes();
+				if ($iOptions & (OPT_ATT_MANDATORY | OPT_ATT_MUSTCHANGE | OPT_ATT_MUSTPROMPT))
 				{
-					$aFields[$sAttCode][$sCode] = '';
+					$aFields[$sAttCode] = array();
+					foreach($aPrerequisites as $sCode)
+					{
+						$aFields[$sAttCode][$sCode] = '';
+					}
 				}
+				if (count($aPrerequisites) > 0)
+				{
+					$aOptions[] = 'Prerequisites: '.implode(', ', $aPrerequisites);
+				}
+				
+				$sFieldFlag = ($iOptions & (OPT_ATT_MANDATORY | OPT_ATT_MUSTCHANGE)) ? ' <span class="hilite">*</span>' : '';
+				$oDefaultValuesSet = $oAttDef->GetDefaultValue(); // @@@ TO DO: get the object's current value if the object exists
+				$sHTMLValue = cmdbAbstractObject::GetFormElementForField($this->m_oPage, $this->m_sClass, $sAttCode, $oAttDef, $oDefaultValuesSet, '', "att_$iMaxInputId");
+				$aFieldsMap[$iMaxInputId] = $sAttCode;
+				$aDetails[] = array('label' => $oAttDef->GetLabel().$sFieldFlag, 'value' => "<div id=\"field_$iMaxInputId\">$sHTMLValue</div>");
+				if ($oAttDef->GetValuesDef() != null)
+				{
+					$sJSHandlerCode .= "\toWizardHelper.RequestAllowedValues('$sAttCode');\n";
+				}
+				if ($oAttDef->GetDefaultValue() != null)
+				{
+					$sJSHandlerCode .= "\toWizardHelper.RequestDefaultValue('$sAttCode');\n";
+				}
+				if ($oAttDef->IsLinkSet())
+				{
+					$sJSHandlerCode .= "\toLinkWidgetatt_$iMaxInputId.Init();";
+				}
+				$iMaxInputId++;
 			}
-			if (count($aPrerequisites) > 0)
-			{
-				$aOptions[] = 'Prerequisites: '.implode(', ', $aPrerequisites);
-			}
-			
-			$sFieldFlag = ($iOptions & (OPT_ATT_MANDATORY | OPT_ATT_MUSTCHANGE)) ? ' <span class="hilite">*</span>' : '';
-			$oDefaultValuesSet = $oAttDef->GetDefaultValue(); // @@@ TO DO: get the object's current value if the object exists
-			$sHTMLValue = cmdbAbstractObject::GetFormElementForField($this->m_oPage, $this->m_sClass, $sAttCode, $oAttDef, $oDefaultValuesSet, '', "att_$iMaxInputId");
-			$aFieldsMap[$iMaxInputId] = $sAttCode;
-			$aDetails[] = array('label' => $oAttDef->GetLabel().$sFieldFlag, 'value' => "<div id=\"field_$iMaxInputId\">$sHTMLValue</div>");
-			if ($oAttDef->GetValuesDef() != null)
-			{
-				$sJSHandlerCode .= "\toWizardHelper.RequestAllowedValues('$sAttCode');\n";
-			}
-			if ($oAttDef->GetDefaultValue() != null)
-			{
-				$sJSHandlerCode .= "\toWizardHelper.RequestDefaultValue('$sAttCode');\n";
-			}
-			if ($oAttDef->IsLinkSet())
-			{
-				$sJSHandlerCode .= "\toLinkWidgetatt_$iMaxInputId.Init();";
-			}
-			$iMaxInputId++;
 		}
 		//$aDetails[] = array('label' => '', 'value' => '<input type="button" value="Next &gt;&gt;">');
 		$this->m_oPage->details($aDetails);

+ 1 - 1
business/templates/Circuits.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/WanLinks.jpg" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/application.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/software.jpg" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/change.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/imageChange.gif" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/contract.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/erwanContracts.jpg" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/default.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/tar.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/document.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/folder_documents.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/group.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/tar.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/interface.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/tar.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/knownError.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <itopblock blockclass="DisplayBlock" asynchronous="true" type="bare_details" encoding="text/sibusql">bizKnownError: pkey = $pkey$</itopblock>

+ 1 - 1
business/templates/location.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/starthere.png" style="margin-top:-20px; margin-right:10px; float:right">

+ 1 - 1
business/templates/network.device.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/connect_to_network.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/pc.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/laptop_pcmcia.png" style="margin-top:-20px; margin-right:10px; float:right">

+ 1 - 1
business/templates/person.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/users2-big.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/server.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/network-server.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/service.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/kservices-big.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/software.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/software.jpg" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/team.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/users2-big.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 1 - 1
business/templates/ticket.html

@@ -1,6 +1,6 @@
 <div class="page_header">
 	<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
-	<h1>$class$: <span class="hilite">$name$</span></h1>
+	<h1>$class_name$: <span class="hilite">$name$</span></h1>
 	<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOpSetAttribute WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
 </div>
 <img src="../images/messagebox_warning.png" style="margin-top:-10px; margin-right:10px; float:right">

+ 4 - 4
core/userrights.class.inc.php

@@ -176,7 +176,7 @@ class UserRights
 
 	public static function GetFilter($sClass)
 	{
-		if (!MetaModel::HasCategory($sClass, 'bizModel')) return new DBObjectSearch($sClass);
+		if (!MetaModel::HasCategory($sClass, 'bizmodel')) return new DBObjectSearch($sClass);
 		if (!self::CheckLogin()) return false;
 
 		return self::$m_oAddOn->GetFilter(self::$m_iUserId, $sClass);
@@ -184,7 +184,7 @@ class UserRights
 
 	public static function IsActionAllowed($sClass, $iActionCode, dbObjectSet $aInstances)
 	{
-		if (!MetaModel::HasCategory($sClass, 'bizModel')) return true;
+		if (!MetaModel::HasCategory($sClass, 'bizmodel')) return true;
 		if (!self::CheckLogin()) return false;
 
 		return self::$m_oAddOn->IsActionAllowed(self::$m_iUserId, $sClass, $iActionCode, $aInstances);
@@ -192,7 +192,7 @@ class UserRights
 
 	public static function IsStimulusAllowed($sClass, $sStimulusCode, dbObjectSet $aInstances)
 	{
-		if (!MetaModel::HasCategory($sClass, 'bizModel')) return true;
+		if (!MetaModel::HasCategory($sClass, 'bizmodel')) return true;
 		if (!self::CheckLogin()) return false;
 
 		return self::$m_oAddOn->IsStimulusAllowed(self::$m_iUserId, $sClass, $sStimulusCode, $aInstances);
@@ -200,7 +200,7 @@ class UserRights
 
 	public static function IsActionAllowedOnAttribute($sClass, $sAttCode, $iActionCode, dbObjectSet $aInstances)
 	{
-		if (!MetaModel::HasCategory($sClass, 'bizModel')) return true;
+		if (!MetaModel::HasCategory($sClass, 'bizmodel')) return true;
 		if (!self::CheckLogin()) return false;
 
 		return self::$m_oAddOn->IsActionAllowedOnAttribute(self::$m_iUserId, $sClass, $sAttCode, $iActionCode, $aInstances);

+ 2 - 7
pages/UI.php

@@ -243,22 +243,17 @@ switch($operation)
 			$oP->add_linked_script("../js/jquery.blockUI.js");
 			$oWizard = new UIWizard($oP, $sClass, $sStateCode);
 			$sStateCode = $oWizard->GetTargetState(); // Will computes the default state if none was supplied
+			$sClassLabel = MetaModel::GetName($sClass);
+			$oP->p("<h2>Creation of a new $sClassLabel</h2>");
 			if (!empty($sStateCode))
 			{
 				$aStates = MetaModel::EnumStates($sClass);
 				$sStateLabel = $aStates[$sStateCode]['label'];
-				$oP->p("Wizard for creating an object of class '$sClass' in state '$sStateCode'.");
-			}
-			else
-			{
-				// Stateless object
-				$oP->p("Wizard for creating an object of class '$sClass'.");
 			}
 			$aWizardSteps = $oWizard->GetWizardStructure();
 			
 			// Display the structure of the wizard
 			$iStepIndex = 1;
-			$oP->p("<h2>Wizard Steps for creating an object of class '$sClass' in state '$sStateCode'</h2>\n");
 			$iMaxInputId = 0;
 			$aFieldsMap = array();
 			foreach($aWizardSteps['mandatory'] as $aSteps)

+ 0 - 8
pages/opensearch.xml

@@ -1,8 +0,0 @@
-<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
-<ShortName>iTop</ShortName>
-<Contact>webmaster@itop.com</Contact>
-<Description>Recherche dans iTop</Description>
-<InputEncoding>ISO-8859-1</InputEncoding>
-<Url type="text/html" method="get" template="http://localhost:81/pages/UI.php?text={searchTerms}&amp;operation=full_text"/>
-<moz:SearchForm>http://localhost:81/pages/UI.php</moz:SearchForm>
-</OpenSearchDescription>

+ 1 - 1
pages/schema.php

@@ -160,7 +160,7 @@ function DisplayLifecycle($oPage, $sClass)
 	{
 		$aStates = MetaModel::EnumStates($sClass);
 		$aStimuli = MetaModel::EnumStimuli($sClass);
-		$oPage->add("<img src=\"/pages/graphviz.php?class=$sClass\">\n");
+		$oPage->add("<img src=\"../pages/graphviz.php?class=$sClass\">\n");
 		$oPage->add("<h3>Transitions</h3>\n");
 		$oPage->add("<ul>\n");
 		foreach ($aStates as $sStateCode => $aStateDef)

+ 10 - 10
setup/data/03.persons.xml

@@ -1,33 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Set>
 <bizPerson id="21">
-<name>Denis</name>
+<name>Verne</name>
 <status>production</status>
 <org_id>3</org_id>
-<email>denis.flaven@gmail.com</email>
+<email>jules.verne@gmail.com</email>
 <phone></phone>
 <location_id>29</location_id>
-<first_name>Flaven</first_name>
+<first_name>Jules</first_name>
 <employe_number></employe_number>
 </bizPerson>
 <bizPerson id="20">
-<name>Quetiez</name>
+<name>Dumas</name>
 <status>production</status>
 <org_id>3</org_id>
-<email>romain.quetiez@gmail.com</email>
+<email>alexandre.dumas@gmail.com</email>
 <phone></phone>
 <location_id>1</location_id>
-<first_name>Romain</first_name>
+<first_name>Dumas</first_name>
 <employe_number></employe_number>
 </bizPerson>
 <bizPerson id="7">
-<name>Taloc</name>
+<name>Hugo</name>
 <status>production</status>
 <org_id>3</org_id>
-<email>erwan.taloc@gmail.com</email>
+<email>victor.hugo@gmail.com</email>
 <phone>33172382223</phone>
 <location_id>1</location_id>
-<first_name>Erwan</first_name>
+<first_name>Victor</first_name>
 <employe_number>e12345</employe_number>
 </bizPerson>
-</Set>
+</Set>

+ 1 - 1
setup/menus.xml

@@ -592,7 +592,7 @@ text-align:center;
 &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;Welcome to iTop&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;Version 0.7&lt;/i&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;Version 0.8&lt;/i&gt;&lt;/p&gt;
 
 </template>
 <rank>1</rank>