diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php index 150ef478c2..dddc8be5c3 100644 --- a/application/cmdbabstract.class.inc.php +++ b/application/cmdbabstract.class.inc.php @@ -1763,8 +1763,22 @@ EOF */ 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; $sFieldPrefix = ''; @@ -2026,7 +2040,14 @@ EOF $aEventsList[] ='validate'; $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; $aExtKeyParams = $aArgs; $aExtKeyParams['iFieldSize'] = $oAttDef->GetMaxSize(); diff --git a/pages/ajax.render.php b/pages/ajax.render.php index fef671fdd3..adedcad2f0 100644 --- a/pages/ajax.render.php +++ b/pages/ajax.render.php @@ -626,7 +626,7 @@ try else { $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 $oPage->add_ready_script("$('#$sId').trigger('validate');"); }