Переглянути джерело

CSV export: added external fields (all scalar fields are given)

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@333 a333f486-631f-4898-b8df-5754b55c2be0
romainq 15 роки тому
батько
коміт
bb25b1f1fc
2 змінених файлів з 40 додано та 19 видалено
  1. 34 19
      application/cmdbabstract.class.inc.php
  2. 6 0
      core/attributedef.class.inc.php

+ 34 - 19
application/cmdbabstract.class.inc.php

@@ -214,7 +214,7 @@ abstract class cmdbAbstractObject extends CMDBObject
 	}
 
 	function GetBareDetails(WebPage $oPage)
-	{
+	{
 		$sHtml = '';
 		$oAppContext = new ApplicationContext();	
 		$sStateAttCode = MetaModel::GetStateAttributeCode(get_class($this));
@@ -266,7 +266,7 @@ abstract class cmdbAbstractObject extends CMDBObject
 		if (!empty($sTemplate))
 		{
 			$oTemplate = new DisplayTemplate($sTemplate);
-			$sNameAttCode = MetaModel::GetNameAttributeCode(get_class($this));
+			$sNameAttCode = MetaModel::GetNameAttributeCode(get_class($this));
 			$oTemplate->Render($oPage, array('class_name'=> MetaModel::GetName(get_class($this)),'class'=> get_class($this),'pkey'=> $this->GetKey(), 'name' => $this->Get($sNameAttCode)));
 		}
 		else
@@ -365,12 +365,12 @@ abstract class cmdbAbstractObject extends CMDBObject
 		}
 		if ($bSelectMode)
 		{
-			if (!$bSingleSelectMode)
-			{
+			if (!$bSingleSelectMode)
+			{
 			$aAttribs['form::select'] = array('label' => "<input type=\"checkbox\" onChange=\"var value = this.checked; $('.selectList{$iListId}').each( function() { this.checked = value; } );\"></input>", 'description' => 'Select / Deselect All');
 		}
 			else
-			{
+			{
 				$aAttribs['form::select'] = array('label' => "", 'description' => '');
 			}
 		}
@@ -396,12 +396,12 @@ abstract class cmdbAbstractObject extends CMDBObject
 			$aRow['key'] = $oObj->GetKey();
 			if ($bSelectMode)
 			{
-				if ($bSingleSelectMode)
-				{
+				if ($bSingleSelectMode)
+				{
 					$aRow['form::select'] = "<input type=\"radio\" class=\"selectList{$iListId}\" name=\"selectObject\" value=\"".$oObj->GetKey()."\"></input>";
-				}
-				else
-				{
+				}
+				else
+				{
 				$aRow['form::select'] = "<input type=\"checkBox\" class=\"selectList{$iListId}\" name=\"selectObject[]\" value=\"".$oObj->GetKey()."\"></input>";
 			}
 			}
@@ -571,12 +571,27 @@ abstract class cmdbAbstractObject extends CMDBObject
 		$aHeader = array();
 		foreach($aAuthorizedClasses as $sAlias => $sClassName)
 		{
-			$aList[$sClassName] = MetaModel::GetZListItems($sClassName, 'details');
-		$aHeader[] = MetaModel::GetKeyLabel($sClassName);
-			foreach($aList[$sClassName] as $sAttCode)
-		{
-			$aHeader[] = MetaModel::GetLabel($sClassName, $sAttCode);
-		}
+			foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode => $oAttDef)
+			{
+				if ($oAttDef->IsScalar())
+				{
+					$aList[$sClassName][$sAttCode] = $oAttDef;
+				}
+			}
+			$aHeader[] = MetaModel::GetKeyLabel($sClassName);
+			foreach($aList[$sClassName] as $sAttCode => $oAttDef)
+			{
+				if ($oAttDef->IsExternalField())
+				{
+					$sExtKeyLabel = MetaModel::GetLabel($sClassName, $oAttDef->GetKeyAttCode());
+					$sRemoteAttLabel = MetaModel::GetLabel($oAttDef->GetTargetClass(), $oAttDef->GetExtAttCode());
+					$aHeader[] = $sExtKeyLabel.'->'.$sRemoteAttLabel;
+				}
+				else
+				{
+					$aHeader[] = MetaModel::GetLabel($sClassName, $sAttCode);
+				}
+			}
 		}
 		$sHtml = '#'.$oSet->GetFilter()->ToOQL()."\n";
 		$sHtml .= implode($sSeparator, $aHeader)."\n";
@@ -587,9 +602,9 @@ abstract class cmdbAbstractObject extends CMDBObject
 			foreach($aAuthorizedClasses as $sAlias => $sClassName)
 			{
 				$oObj = $aObjects[$sAlias];
-			$aRow[] = $oObj->GetKey();
-				foreach($aList[$sClassName] as $sAttCode)
-			{
+				$aRow[] = $oObj->GetKey();
+				foreach($aList[$sClassName] as $sAttCode => $oAttDef)
+				{
 					$aRow[] = $oObj->GetAsCSV($sAttCode, $sSeparator, '\\');
 				}
 			}

+ 6 - 0
core/attributedef.class.inc.php

@@ -1185,6 +1185,12 @@ class AttributeExternalField extends AttributeDefinition
 		return $oExtAttDef->IsNullAllowed(); 
 	}
 
+	public function IsScalar()
+	{
+		$oExtAttDef = $this->GetExtAttDef();
+		return $oExtAttDef->IsScalar(); 
+	} 
+
 	public function GetBasicFilterOperators()
 	{
 		$oExtAttDef = $this->GetExtAttDef();