Compare commits

...

1 Commits

Author SHA1 Message Date
Anne-Cath
3d67d17b34 N°8598 - Request template class not taken into account on portal scopes 2025-08-26 08:52:33 +02:00
2 changed files with 54 additions and 1 deletions

View File

@@ -13332,6 +13332,56 @@ class AttributeCustomFields extends AttributeDefinition
return $oForm;
}
/**
* @param DBObject $oHostObject
* @param null $oFormField
* @param ObjectFormHandlerHelper $oHelper
* Override to build the relevant form field
*
* When called first, $oFormField is null and will be created (eg. Make). Then when the ::parent is called and the
* $oFormField is passed, MakeFormField behaves more like a Prepare.
*/
public function MakeFormFieldForPortal(DBObject $oObject, $oFormField = null, $oHelper = null)
{
//ici
if ($oFormField === null)
{
$sFormFieldClass = static::GetFormFieldClass();
$oFormField = new $sFormFieldClass($this->GetCode());
$oFormField->SetForm($this->GetFormForPortal($oObject, null, $oHelper));
}
parent::MakeFormField($oObject, $oFormField);
return $oFormField;
}
/**
* @param DBObject $oHostObject
* @param null $sFormPrefix
* @param ObjectFormHandlerHelper $oHelper
*
* @return Combodo\iTop\Form\Form
* @throws \Exception
*/
public function GetFormForPortal(DBObject $oHostObject, $sFormPrefix = null, $oHelper =null)
{
try {
$oValue = $oHostObject->Get($this->GetCode());
$oHandler = $this->GetHandler($oValue->GetValues());
$sFormId = utils::IsNullOrEmptyString($sFormPrefix) ? 'cf_'.$this->GetCode() : $sFormPrefix.'_cf_'.$this->GetCode();
$oHandler->BuildForm($oHostObject, $sFormId, $oHelper);
$oForm = $oHandler->GetForm();
}
catch (Exception $e) {
$oForm = new Form('');
$oField = new LabelField('');
$oField->SetLabel('Custom field error: '.$e->getMessage());
$oForm->AddField($oField);
$oForm->Finalize();
}
return $oForm;
}
/**
* Read the data from where it has been stored. This verb must be implemented as soon as LoadFromClassTables returns false
* and LoadInObject returns true

View File

@@ -377,7 +377,10 @@ class ObjectFormManager extends FormManager
/** @var Field $oField */
$oField = null;
if (is_callable([$oAttDef, 'MakeFormField']))
if (is_callable([$oAttDef, 'MakeFormFieldForPortal']))
{
$oField = $oAttDef->MakeFormFieldForPortal($this->oObject, null, $this->oFormHandlerHelper);
} elseif (is_callable([$oAttDef, 'MakeFormField']))
{
$oField = $oAttDef->MakeFormField($this->oObject);
}