浏览代码

Fixed the handling of default values in the object creation form.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@472 a333f486-631f-4898-b8df-5754b55c2be0
dflaven 15 年之前
父节点
当前提交
0fc037cdd3
共有 2 个文件被更改,包括 55 次插入10 次删除
  1. 41 8
      application/cmdbabstract.class.inc.php
  2. 14 2
      pages/UI.php

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

@@ -949,11 +949,6 @@ abstract class cmdbAbstractObject extends CMDBObject
 							$sHTMLValue .= "<input type=\"hidden\" id=\"$iId\" name=\"attr_{$sAttCode}{$sNameSuffix}\" value=\"$value\" />\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 = "<div id=\"field_{$sFieldId}\">".self::GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $sValue, $sDisplayValue, $sFieldId, '', $iFlags, $aArgs)."</div>";
 								$aFieldsMap[$sFieldId] = $sAttCode;
 								$aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => $sHTMLValue);

+ 14 - 2
pages/UI.php

@@ -664,7 +664,13 @@ try
 
 			$oP->add("<img src=\"".$oObjToClone->GetIcon()."\" style=\"margin-top:-30px; margin-right:10px; float:right\">\n");
 			$oP->add("<div class=\"wizContainer\">\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("</div>\n");
 		}
 		else
@@ -696,7 +702,13 @@ try
 			$oP->add("<h1>".Dict::Format('UI:CreationTitle_Class', $sClassLabel)."</h1>\n");
 			$oP->add("<div class=\"wizContainer\">\n");
 			$oP->add("<img src=\"".MetaModel::GetClassIcon($sClass)."\" style=\"margin-top:-30px; margin-right:10px; float:right\">\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("</div>\n");
 		break;