Преглед на файлове

#986 Search form: handle indirect external keys

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@3321 a333f486-631f-4898-b8df-5754b55c2be0
romainq преди 10 години
родител
ревизия
3a873c2343
променени са 1 файла, в които са добавени 12 реда и са изтрити 8 реда
  1. 12 8
      application/cmdbabstract.class.inc.php

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

@@ -1436,20 +1436,24 @@ abstract class cmdbAbstractObject extends CMDBObject implements iDisplay
 			}
 
 			$oAttDef = MetaModel::GetAttributeDef($sClassName, $sFilterCode);
-			if ($oAttDef->IsExternalKey())
+			if ($oAttDef->IsExternalKey(EXTKEY_ABSOLUTE))
 			{
-				$sTargetClass = $oAttDef->GetTargetClass();
+				$oKeyAttDef = $oAttDef->GetFinalAttDef();
+				$sKeyAttClass = $oKeyAttDef->GetHostClass();
+				$sKeyAttCode = $oKeyAttDef->GetCode();
+
+				$sTargetClass = $oKeyAttDef->GetTargetClass();
 				$oSearch = new DBObjectSearch($sTargetClass);
 				$oSearch->SetModifierProperty('UserRightsGetSelectFilter', 'bSearchMode', true);
 				$oAllowedValues = new DBObjectSet($oSearch);
 
-				$iFieldSize = $oAttDef->GetMaxSize();
-				$iMaxComboLength = $oAttDef->GetMaximumComboLength();
-				$sHtml .= "<label>".MetaModel::GetFilterLabel($sClassName, $sFilterCode).":</label>&nbsp;";
+				$iFieldSize = $oKeyAttDef->GetMaxSize();
+				$iMaxComboLength = $oKeyAttDef->GetMaximumComboLength();
+				$sHtml .= "<label>".MetaModel::GetFilterLabel($sKeyAttClass, $sKeyAttCode).":</label>&nbsp;";
 				$aExtKeyParams = $aExtraParams;
-				$aExtKeyParams['iFieldSize'] = $oAttDef->GetMaxSize();
-				$aExtKeyParams['iMinChars'] = $oAttDef->GetMinAutoCompleteChars();
-				$sHtml .= UIExtKeyWidget::DisplayFromAttCode($oPage, $sFilterCode, $sClassName, $oAttDef->GetLabel(), $oAllowedValues, $sFilterValue, $sSearchFormId.'search_'.$sFilterCode, false, $sFilterCode, '', $aExtKeyParams, true);
+				$aExtKeyParams['iFieldSize'] = $oKeyAttDef->GetMaxSize();
+				$aExtKeyParams['iMinChars'] = $oKeyAttDef->GetMinAutoCompleteChars();
+				$sHtml .= UIExtKeyWidget::DisplayFromAttCode($oPage, $sKeyAttCode, $sKeyAttClass, $oAttDef->GetLabel(), $oAllowedValues, $sFilterValue, $sSearchFormId.'search_'.$sFilterCode, false, $sFilterCode, '', $aExtKeyParams, true);
 			}
 			else
 			{