N°4213 Fix EnumSet rendering on details form in portal

This commit is contained in:
Pierre Goiffon
2021-11-24 11:32:10 +01:00
parent 65f9f86bcc
commit 2d67594ccf
3 changed files with 30 additions and 9 deletions

View File

@@ -138,7 +138,7 @@ final class ormTagSet extends ormSet
}
/**
* @return array of tags indexed by code
* @return array index: code, value: corresponding {@see \TagSetFieldData}
*/
public function GetTags()
{

View File

@@ -21,6 +21,7 @@
namespace Combodo\iTop\Renderer\Bootstrap\FieldRenderer;
use MetaModel;
use utils;
/**
* Description of BsSetFieldRenderer
@@ -105,18 +106,36 @@ EOF
// ... in view mode
else
{
$aItems = $oOrmItemSet->GetTags();
if ($oOrmItemSet instanceof \ormTagSet) {
$aItems = $oOrmItemSet->GetTags();
$fExtractTagData = static function($oTag, &$sItemLabel, &$sItemDescription) {
$sItemLabel = $oTag->Get('label');
$sItemDescription = $oTag->Get('description');
};
} else {
$aItems = $oOrmItemSet->GetValues();
$oAttDef = MetaModel::GetAttributeDef($oOrmItemSet->GetClass(), $oOrmItemSet->GetAttCode());
$fExtractTagData = static function($sEnumSetValue, &$sItemLabel, &$sItemDescription) use ($oAttDef) {
$sItemLabel = $oAttDef->GetValueLabel($sEnumSetValue);
$sItemDescription = '';
};
}
$oOutput->AddHtml('<div class="form-control-static">')
->AddHtml('<span class="label-group">');
foreach($aItems as $sItemCode => $oItem)
foreach($aItems as $sItemCode => $value)
{
$sItemLabel = $oItem->Get('label');
$sItemDescription = $oItem->Get('description');
$fExtractTagData($value, $sItemLabel, $sItemDescription);
$sDescriptionAttr = (empty($sItemDescription))
? ''
: ' data-description="'.utils::HtmlEntities($sItemDescription).'"';
$oOutput->AddHtml('<span class="label label-default" data-code="'.$sItemCode.'" data-label="')
->AddHtml($sItemLabel, true)
->AddHtml('" data-description="')
->AddHtml($sItemDescription, true)
->AddHtml('">')
->AddHtml('"')
->AddHtml($sDescriptionAttr)
->AddHtml('>')
->AddHtml($sItemLabel, true)
->AddHtml('</span>');
}

View File

@@ -20,6 +20,8 @@
namespace Combodo\iTop\Renderer;
use utils;
/**
* Description of RenderingOutput
*
@@ -118,7 +120,7 @@ class RenderingOutput
*/
public function AddHtml($sHtml, $bEncodeHtmlEntities = false)
{
$this->sHtml .= ($bEncodeHtmlEntities) ? htmlentities($sHtml, ENT_QUOTES, 'UTF-8') : $sHtml;
$this->sHtml .= ($bEncodeHtmlEntities) ? utils::HtmlEntities($sHtml) : $sHtml;
return $this;
}