diff --git a/application/ui.extkeywidget.class.inc.php b/application/ui.extkeywidget.class.inc.php index d5be22940..1e71ef6d9 100644 --- a/application/ui.extkeywidget.class.inc.php +++ b/application/ui.extkeywidget.class.inc.php @@ -126,7 +126,14 @@ class UIExtKeyWidget } else { - $sWizHelper = 'oWizardHelper'.$sFormPrefix; + if (isset($aArgs['wizHelper'])) + { + $sWizHelper = $aArgs['wizHelper']; + } + else + { + $sWizHelper = 'oWizardHelper'.$sFormPrefix; + } $sWizHelperJSON = $sWizHelper.'.ToJSON()'; $sJSSearchMode = 'false'; } diff --git a/application/ui.linkswidget.class.inc.php b/application/ui.linkswidget.class.inc.php index 6f104237f..0c5bc0842 100644 --- a/application/ui.linkswidget.class.inc.php +++ b/application/ui.linkswidget.class.inc.php @@ -104,12 +104,14 @@ class UILinksWidget { $sPrefix = "$this->m_sAttCode{$this->m_sNameSuffix}"; $aRow = array(); + $aFieldsMap = array(); if(is_object($linkObjOrId)) { $key = $linkObjOrId->GetKey(); $sPrefix .= "[$key]["; $sNameSuffix = "]"; // To make a tabular form $aArgs['prefix'] = $sPrefix; + $aArgs['wizHelper'] = "oWizardHelper{$this->m_iInputId}{$key}"; $aArgs['this'] = $linkObjOrId; $aRow['form::checkbox'] = "m_iInputId.".OnSelectChange();\" value=\"$key\">"; $aRow['form::checkbox'] .= ""; @@ -119,7 +121,9 @@ class UILinksWidget $sSafeId = str_replace(array('[',']','-'), '_', $sFieldId); $oAttDef = MetaModel::GetAttributeDef($this->m_sLinkedClass, $sFieldCode); $aRow[$sFieldCode] = cmdbAbstractObject::GetFormElementForField($oP, $this->m_sLinkedClass, $sFieldCode, $oAttDef, $linkObjOrId->Get($sFieldCode), '' /* DisplayValue */, $sSafeId, $sNameSuffix, 0, $aArgs); + $aFieldsMap[$sFieldCode] = $sFieldId; } + $sState = $linkObjOrId->GetState(); } else { @@ -131,6 +135,7 @@ class UILinksWidget $oNewLinkObj->Set($this->m_sExtKeyToMe, $oCurrentObj); // Setting the extkey with the object alsoo fills the related external fields $sNameSuffix = "]"; // To make a tabular form $aArgs['prefix'] = $sPrefix; + $aArgs['wizHelper'] = "oWizardHelper{$this->m_iInputId}_".(-$linkObjOrId); $aArgs['this'] = $oNewLinkObj; $aRow['form::checkbox'] = "m_iInputId.".OnSelectChange();\" value=\"$linkObjOrId\">"; $aRow['form::checkbox'] .= ""; @@ -140,9 +145,21 @@ class UILinksWidget $sSafeId = str_replace(array('[',']','-'), '_', $sFieldId); $oAttDef = MetaModel::GetAttributeDef($this->m_sLinkedClass, $sFieldCode); $aRow[$sFieldCode] = cmdbAbstractObject::GetFormElementForField($oP, $this->m_sLinkedClass, $sFieldCode, $oAttDef, '' /* TO DO/ call GetDefaultValue($oObject->ToArgs()) */, '' /* DisplayValue */, $sSafeId /* id */, $sNameSuffix, 0, $aArgs); + $aFieldsMap[$sFieldCode] = $sFieldId; } + $sState = ''; } - + + $iFieldsCount = count($aFieldsMap); + $sJsonFieldsMap = json_encode($aFieldsMap); + + $oP->add_script( +<<m_sLinkedClass}', '', '$sState'); +{$aArgs['wizHelper']}.SetFieldsMap($sJsonFieldsMap); +{$aArgs['wizHelper']}.SetFieldsCount($iFieldsCount); +EOF + ); $aRow['static::key'] = $oLinkedObj->GetHyperLink(); foreach(MetaModel::GetZListItems($this->m_sRemoteClass, 'list') as $sFieldCode) {