diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php index 88bb1c955..7dc1d5e27 100644 --- a/application/cmdbabstract.class.inc.php +++ b/application/cmdbabstract.class.inc.php @@ -949,11 +949,6 @@ abstract class cmdbAbstractObject extends CMDBObject $sHTMLValue .= "\n"; $oPage->add_ready_script("\$('#label_$iId').autocomplete('./ajax.render.php', { scroll:true, minChars:3, onItemSelect:selectItem, onFindValue:findValue, formatItem:formatItem, autoFill:true, keyHolder:'#$iId', extraParams:{operation:'autocomplete', sclass:'$sClass',attCode:'".$sAttCode."'}});"); $oPage->add_ready_script("\$('#label_$iId').result( function(event, data, formatted) { if (data) { $('#{$iId}').val(data[1]); } } );"); - // Prepopulate with a default value -- but no display value... - //if (!empty($value)) - //{ - // $oPage->add_ready_script("\$('#label_$iInputId').search( 'domino.combodo.com' );"); - //} $aEventsList[] ='change'; } else @@ -1176,6 +1171,46 @@ EOF { if ($oAttDef->IsWritable()) { + if ($oObjectToClone != null) + { + $sValue = $oObjectToClone->GetEditValue($sAttCode); + $aArgs['this'] = $oObjectToClone; + } + else + { + if(isset($aArgs['default'][$sAttCode])) + { + $sValue = $aArgs['default'][$sAttCode]; + } + else + { + $sValue = $oAttDef->GetDefaultValue(); + } + } + // Prepopulate with a default value -- but no display value... + $sDisplayValue = ''; + if (!empty($sValue)) + { + $aAllowedValues = MetaModel::GetAllowedValues_att($sClass, $sAttCode, $aArgs, ''); + switch (count($aAllowedValues)) + { + case 1: + case 0: + $sDisplayValue = $sValue; + break; + + default: + $sDisplayValue = $sValue; + foreach($aAllowedValues as $key => $display) + { + if ($key == $sValue) + { + $sDisplayValue = $display; + break; + } + } + } + } if ($sStateAttCode == $sAttCode) { // State attribute is always read-only from the UI @@ -1193,13 +1228,11 @@ EOF if ($iFlags & OPT_ATT_READONLY) { // Attribute is read-only - $sHTMLValue = ($oObjectToClone == null) ? '' : $oObjectToClone->GetAsHTML($sAttCode); + $sHTMLValue = ($oObjectToClone == null) ? $sDisplayValue : $oObjectToClone->GetAsHTML($sAttCode); } else { $sFieldId = 'att_'.$iFieldIndex; - $sValue = ($oObjectToClone == null) ? '' : $oObjectToClone->Get($sAttCode); - $sDisplayValue = ($oObjectToClone == null) ? '' : $oObjectToClone->GetEditValue($sAttCode); $sHTMLValue = "
".self::GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $sValue, $sDisplayValue, $sFieldId, '', $iFlags, $aArgs)."
"; $aFieldsMap[$sFieldId] = $sAttCode; $aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => $sHTMLValue); diff --git a/pages/UI.php b/pages/UI.php index 6ce1fd672..0fc40a71a 100644 --- a/pages/UI.php +++ b/pages/UI.php @@ -664,7 +664,13 @@ try $oP->add("GetIcon()."\" style=\"margin-top:-30px; margin-right:10px; float:right\">\n"); $oP->add("
\n"); - cmdbAbstractObject::DisplayCreationForm($oP, $sClass, $oObjToClone); + $aDefaults = utils::ReadParam('default', array()); + $aContext = $oAppContext->GetAsHash(); + foreach($aContext as $key => $value) + { + $aDefaults[$key] = $value; + } + cmdbAbstractObject::DisplayCreationForm($oP, $sClass, $oObjToClone, array( 'default' => $aDefaults)); $oP->add("
\n"); } else @@ -696,7 +702,13 @@ try $oP->add("

".Dict::Format('UI:CreationTitle_Class', $sClassLabel)."

\n"); $oP->add("
\n"); $oP->add("\n"); - cmdbAbstractObject::DisplayCreationForm($oP, $sClass, null /* $oObjToClone */); + $aDefaults = utils::ReadParam('default', array()); + $aContext = $oAppContext->GetAsHash(); + foreach($aContext as $key => $value) + { + $aDefaults[$key] = $value; + } + cmdbAbstractObject::DisplayCreationForm($oP, $sClass, null /* $oObjToClone */, array('default' => $aDefaults)); $oP->add("
\n"); break;