Pārlūkot izejas kodu

N.981 Regression introduced in [r4692]. It make sense to preserve the existing value... excepted when reloading some form elements (filtering depending on fields that have just been touched by the user).

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@4895 a333f486-631f-4898-b8df-5754b55c2be0
romainq 7 gadi atpakaļ
vecāks
revīzija
c31616c4e9
2 mainītis faili ar 25 papildinājumiem un 4 dzēšanām
  1. 24 3
      application/cmdbabstract.class.inc.php
  2. 1 1
      pages/ajax.render.php

+ 24 - 3
application/cmdbabstract.class.inc.php

@@ -1763,8 +1763,22 @@ EOF
 */
 */
 		return $sHtml;
 		return $sHtml;
 	}
 	}
-	
-	public static function GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $value = '', $sDisplayValue = '', $iId = '', $sNameSuffix = '', $iFlags = 0, $aArgs = array())
+
+	/**
+	 * @param $oPage
+	 * @param $sClass
+	 * @param $sAttCode
+	 * @param $oAttDef
+	 * @param string $value
+	 * @param string $sDisplayValue
+	 * @param string $iId
+	 * @param string $sNameSuffix
+	 * @param int $iFlags
+	 * @param array $aArgs
+	 * @param bool $bPreserveCurrentValue Preserve the current value even if not allowed
+	 * @return string
+	 */
+	public static function GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $value = '', $sDisplayValue = '', $iId = '', $sNameSuffix = '', $iFlags = 0, $aArgs = array(), $bPreserveCurrentValue = true)
 	{
 	{
 		static $iInputId = 0;
 		static $iInputId = 0;
 		$sFieldPrefix = '';
 		$sFieldPrefix = '';
@@ -2026,7 +2040,14 @@ EOF
 					$aEventsList[] ='validate';
 					$aEventsList[] ='validate';
 					$aEventsList[] ='change';
 					$aEventsList[] ='change';
 
 
-					$oAllowedValues = MetaModel::GetAllowedValuesAsObjectSet($sClass, $sAttCode, $aArgs, '', $value);
+					if ($bPreserveCurrentValue)
+					{
+						$oAllowedValues = MetaModel::GetAllowedValuesAsObjectSet($sClass, $sAttCode, $aArgs, '', $value);
+					}
+					else
+					{
+						$oAllowedValues = MetaModel::GetAllowedValuesAsObjectSet($sClass, $sAttCode, $aArgs);
+					}
 					$sFieldName = $sFieldPrefix.$sAttCode.$sNameSuffix;
 					$sFieldName = $sFieldPrefix.$sAttCode.$sNameSuffix;
 					$aExtKeyParams = $aArgs;
 					$aExtKeyParams = $aArgs;
 					$aExtKeyParams['iFieldSize'] = $oAttDef->GetMaxSize();
 					$aExtKeyParams['iFieldSize'] = $oAttDef->GetMaxSize();

+ 1 - 1
pages/ajax.render.php

@@ -626,7 +626,7 @@ try
 					else
 					else
 					{
 					{
 						$iFlags = MetaModel::GetAttributeFlags($sClass, $oObj->GetState(), $sAttCode);
 						$iFlags = MetaModel::GetAttributeFlags($sClass, $oObj->GetState(), $sAttCode);
-						$sHTMLValue = cmdbAbstractObject::GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $value, $displayValue, $sId, '', $iFlags, array('this' => $oObj, 'formPrefix' => $sFormPrefix));
+						$sHTMLValue = cmdbAbstractObject::GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $value, $displayValue, $sId, '', $iFlags, array('this' => $oObj, 'formPrefix' => $sFormPrefix), false);
 						// Make sure that we immediately validate the field when we reload it
 						// Make sure that we immediately validate the field when we reload it
 						$oPage->add_ready_script("$('#$sId').trigger('validate');");
 						$oPage->add_ready_script("$('#$sId').trigger('validate');");
 					}
 					}