diff --git a/js/utils.js b/js/utils.js index 979f4f007..5f1ebaa8c 100644 --- a/js/utils.js +++ b/js/utils.js @@ -409,8 +409,12 @@ function ToggleDurationField(field_id) { function PropagateCheckBox(bCurrValue, aFieldsList, bCheck) { if (bCurrValue == bCheck) { for (var i = 0; i < aFieldsList.length; i++) { - $('#enable_'+aFieldsList[i]).attr('checked', bCheck); - ToogleField(bCheck, aFieldsList[i]); + var sFieldId = aFieldsList[i]; + $('#enable_'+sFieldId).attr('checked', bCheck); + ToogleField(bCheck, sFieldId); + + // Cascade propagation + $('#enable_'+sFieldId).trigger('change'); } } } diff --git a/pages/UI.php b/pages/UI.php index 110a07acf..a34a020c6 100644 --- a/pages/UI.php +++ b/pages/UI.php @@ -1205,6 +1205,8 @@ EOF $aExpectedAttributes = MetaModel::GetTransitionAttributes($sClass, $sStimulus, $sState); $aDetails = array(); + $sFormId = 'apply_stimulus'; + $sFormPrefix = $sFormId.'_'; $iFieldIndex = 0; $aFieldsMap = array(); $aValues = array(); @@ -1220,6 +1222,7 @@ EOF $sReadyScript = ''; foreach($aExpectedAttributes as $sAttCode => $iExpectCode) { + $sFieldInputId = $sFormPrefix.$sAttCode; // Prompt for an attribute if // - the attribute must be changed or must be displayed to the user for confirmation // - or the field is mandatory and currently empty @@ -1232,19 +1235,19 @@ EOF if (count($aPrerequisites) > 0) { // When 'enabling' a field, all its prerequisites must be enabled too - $sFieldList = "['".implode("','", $aPrerequisites)."']"; - $oP->add_ready_script("$('#enable_{$sAttCode}').bind('change', function(evt, sFormId) { return PropagateCheckBox( this.checked, $sFieldList, true); } );\n"); + $sFieldList = "['{$sFormPrefix}".implode("','{$sFormPrefix}", $aPrerequisites)."']"; + $oP->add_ready_script("$('#enable_{$sFieldInputId}').bind('change', function(evt, sFormId) { return PropagateCheckBox( this.checked, $sFieldList, true); } );\n"); } $aDependents = MetaModel::GetDependentAttributes($sClass, $sAttCode); // List of attributes that are needed for the current one if (count($aDependents) > 0) { // When 'disabling' a field, all its dependent fields must be disabled too - $sFieldList = "['".implode("','", $aDependents)."']"; - $oP->add_ready_script("$('#enable_{$sAttCode}').bind('change', function(evt, sFormId) { return PropagateCheckBox( this.checked, $sFieldList, false); } );\n"); + $sFieldList = "['{$sFormPrefix}".implode("','{$sFormPrefix}", $aDependents)."']"; + $oP->add_ready_script("$('#enable_{$sFieldInputId}').bind('change', function(evt, sFormId) { return PropagateCheckBox( this.checked, $sFieldList, false); } );\n"); } $aArgs = array('this' => $oObj); - $sHTMLValue = cmdbAbstractObject::GetFormElementForField($oP, $sClass, $sAttCode, $oAttDef, $oObj->Get($sAttCode), $oObj->GetEditValue($sAttCode), $sAttCode, '', $iExpectCode, $aArgs); - $sComments = ''; + $sHTMLValue = cmdbAbstractObject::GetFormElementForField($oP, $sClass, $sAttCode, $oAttDef, $oObj->Get($sAttCode), $oObj->GetEditValue($sAttCode), $sFieldInputId, '', $iExpectCode, $aArgs); + $sComments = ''; if (!isset($aValues[$sAttCode])) { $aValues[$sAttCode] = array(); @@ -1272,11 +1275,11 @@ EOF } $sTip .= "
"; $sTip = addslashes($sTip); - $sReadyScript .= "$('#multi_values_$sAttCode').qtip( { content: '$sTip', show: 'mouseover', hide: 'mouseout', style: { name: 'dark', tip: 'leftTop' }, position: { corner: { target: 'rightMiddle', tooltip: 'leftTop' }} } );\n"; - $sComments .= '