Portal: handle mandatory attributes in Reopen/Close dialogs

SVN:trunk[3397]
This commit is contained in:
Romain Quetiez
2014-10-31 15:42:13 +00:00
parent 19a2180c2b
commit 77cf399c72

View File

@@ -1144,7 +1144,22 @@ function MakeStimulusForm(WebPage $oP, $oObj, $sStimulusCode, $aEditAtt)
$oP->add("<input type=\"hidden\" name=\"id\" value=\"".$oObj->GetKey()."\">");
$oP->add("<input type=\"hidden\" name=\"operation\" value=\"update_request\">");
$oP->add("<input type=\"hidden\" id=\"stimulus_to_apply\" name=\"apply_stimulus\" value=\"$sStimulusCode\">\n");
$aTransitions = $oObj->EnumTransitions();
$aStimuli = MetaModel::EnumStimuli($sClass);
if (!isset($aTransitions[$sStimulusCode]))
{
// Invalid stimulus
throw new ApplicationException(Dict::Format('UI:Error:Invalid_Stimulus_On_Object_In_State', $sStimulusCode, $oObj->GetName(), $oObj->GetStateLabel()));
}
// Compute the attribute flags in the target state
$aTransition = $aTransitions[$sStimulusCode];
$sTargetState = $aTransition['target_state'];
$aTargetStates = MetaModel::EnumStates($sClass);
$aTargetState = $aTargetStates[$sTargetState];
$aExpectedAttributes = $aTargetState['attribute_list'];
foreach($aEditAtt as $sAttCode)
{
$sValue = $oObj->Get($sAttCode);
@@ -1152,7 +1167,8 @@ function MakeStimulusForm(WebPage $oP, $oObj, $sStimulusCode, $aEditAtt)
$aArgs = array('this' => $oObj, 'formPrefix' => '');
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
$sInputId = 'input_'.$sAttCode;
$sHTMLValue = "<span id=\"field_{$sStimulusCode}_{$sInputId}\">".cmdbAbstractObject::GetFormElementForField($oP, $sClass, $sAttCode, $oAttDef, $sValue, $sDisplayValue, $sInputId, '', 0 /*$iFlags*/, $aArgs).'</span>';
$iFlags = array_key_exists($sAttCode, $aExpectedAttributes) ? $aExpectedAttributes[$sAttCode] : 0;
$sHTMLValue = "<span id=\"field_{$sStimulusCode}_{$sInputId}\">".cmdbAbstractObject::GetFormElementForField($oP, $sClass, $sAttCode, $oAttDef, $sValue, $sDisplayValue, $sInputId, '', $iFlags, $aArgs).'</span>';
$oP->add('<h1>'.MetaModel::GetLabel($sClass, $sAttCode).'</h1>');
$oP->add($sHTMLValue);