diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php index 7f62fc071f..02b46f032b 100644 --- a/application/cmdbabstract.class.inc.php +++ b/application/cmdbabstract.class.inc.php @@ -2076,8 +2076,8 @@ HTML $sWizardHelperJsVarName = "oWizardHelper{$sFormPrefix}"; $aDependencies = MetaModel::GetDependentAttributes($sClass, $sAttCode); - switch ($oAttDef->GetEditClass()) - { + $sAttDefEditClass = $oAttDef->GetEditClass(); + switch ($sAttDefEditClass) { case 'Date': $sInputType = self::ENUM_INPUT_TYPE_SINGLE_INPUT; $aEventsList[] = 'validate'; @@ -2502,37 +2502,52 @@ HTML; break; case 'CustomFields': + case 'FormField': + if ($sAttDefEditClass === 'CustomFields') { + /** @var \ormCustomFieldsValue $value */ + $oForm = $value->GetForm($sFormPrefix); + } else if ($sAttDefEditClass === 'FormField') { + $sFormId = 'ff_'.$oAttDef->GetCode(); + if (false === is_null($sFormPrefix)) { + $sFormId = $sFormPrefix.$sFormId; + } + + $oForm = new Combodo\iTop\Form\Form($sFormId); + /** @var \Combodo\iTop\Form\Field\Field $sFormFieldClass */ + $sFormFieldClass = $oAttDef::GetFormFieldClass(); + $oAttDefField = new $sFormFieldClass($sAttCode.'_field'); + $oForm->AddField($oAttDefField); + } + + $oFormRenderer = new ConsoleFormRenderer($oForm); + $aFormRenderedContent = $oFormRenderer->Render(); + + $aFieldSetOptions = array( + 'field_identifier_attr' => 'data-field-id', + // convention: fields are rendered into a div and are identified by this attribute + 'fields_list' => $aFormRenderedContent, + 'fields_impacts' => $oForm->GetFieldsImpacts(), + 'form_path' => $oForm->GetId(), + ); + $sFieldSetOptions = json_encode($aFieldSetOptions); + $aFormHandlerOptions = array( + 'wizard_helper_var_name' => 'oWizardHelper'.$sFormPrefix, + 'custom_field_attcode' => $sAttCode, + ); + $sFormHandlerOptions = json_encode($aFormHandlerOptions); + $sHTMLValue .= '