diff --git a/core/attributedef.class.inc.php b/core/attributedef.class.inc.php index 684a1353a..16712c0f1 100644 --- a/core/attributedef.class.inc.php +++ b/core/attributedef.class.inc.php @@ -4049,7 +4049,7 @@ class AttributeDuration extends AttributeInteger static public function GetFormFieldClass() { - return '\\Combodo\\iTop\\Form\\Field\\LabelField'; + return '\\Combodo\\iTop\\Form\\Field\\DurationField'; } public function MakeFormField(DBObject $oObject, $oFormField = null) @@ -4063,7 +4063,7 @@ class AttributeDuration extends AttributeInteger // Note : As of today, this attribute is -by nature- only supported in readonly mode, not edition $sAttCode = $this->GetCode(); - $oFormField->SetCurrentValue(html_entity_decode($oObject->GetAsHTML($sAttCode), ENT_QUOTES, 'UTF-8')); + $oFormField->SetCurrentValue($oObject->Get($sAttCode)); $oFormField->SetReadOnly(true); return $oFormField; diff --git a/datamodels/2.x/itop-portal-base/portal/src/controllers/browsebrickcontroller.class.inc.php b/datamodels/2.x/itop-portal-base/portal/src/controllers/browsebrickcontroller.class.inc.php index af7d2aab0..313f5867f 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/controllers/browsebrickcontroller.class.inc.php +++ b/datamodels/2.x/itop-portal-base/portal/src/controllers/browsebrickcontroller.class.inc.php @@ -601,7 +601,14 @@ class BrowseBrickController extends BrickController foreach ($aLevelsProperties[$key]['fields'] as $aField) { $oAttDef = MetaModel::GetAttributeDef(get_class($value), $aField['code']); - $aRow[$key]['fields'][$aField['code']] = $oAttDef->GetValueLabel($value->Get($aField['code'])); + if ($oAttDef->GetEditClass() === 'Duration') + { + $aRow[$key]['fields'][$aField['code']] = $oAttDef->GetAsHTML($value->Get($aField['code'])); + } + else + { + $aRow[$key]['fields'][$aField['code']] = $oAttDef->GetValueLabel($value->Get($aField['code'])); + } } } } diff --git a/datamodels/2.x/itop-portal-base/portal/src/controllers/managebrickcontroller.class.inc.php b/datamodels/2.x/itop-portal-base/portal/src/controllers/managebrickcontroller.class.inc.php index 7352d8e43..f180265f7 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/controllers/managebrickcontroller.class.inc.php +++ b/datamodels/2.x/itop-portal-base/portal/src/controllers/managebrickcontroller.class.inc.php @@ -28,6 +28,7 @@ use \MetaModel; use \AttributeDefinition; use \AttributeDate; use \AttributeDateTime; +use \AttributeDuration; use \AttributeSubItem; use \DBSearch; use \DBObjectSearch; @@ -410,7 +411,7 @@ class ManageBrickController extends BrickController } } } - elseif ($oAttDef instanceof AttributeSubItem) + elseif ($oAttDef instanceof AttributeSubItem || $oAttDef instanceof AttributeDuration) { $sValue = $oAttDef->GetAsHTML($oCurrentRow->Get($sItemAttr)); } @@ -473,5 +474,3 @@ class ManageBrickController extends BrickController } } - -?> \ No newline at end of file diff --git a/sources/form/field/durationfield.class.inc.php b/sources/form/field/durationfield.class.inc.php index 43d2fef28..92477a396 100644 --- a/sources/form/field/durationfield.class.inc.php +++ b/sources/form/field/durationfield.class.inc.php @@ -20,6 +20,8 @@ namespace Combodo\iTop\Form\Field; use \Combodo\iTop\Form\Field\Field; +use \Str; +use \AttributeDuration; /** * Description of StringField @@ -27,4 +29,14 @@ use \Combodo\iTop\Form\Field\Field; class DurationField extends Field { + /** + * Note: This is inspired by AttributeDuration::GetAsHTML() + * + * @return string + */ + public function GetDisplayValue() + { + return Str::pure2html(AttributeDuration::FormatDuration($this->currentValue)); + } + } diff --git a/sources/renderer/bootstrap/bsformrenderer.class.inc.php b/sources/renderer/bootstrap/bsformrenderer.class.inc.php index 98d3eba25..8d05b6d99 100644 --- a/sources/renderer/bootstrap/bsformrenderer.class.inc.php +++ b/sources/renderer/bootstrap/bsformrenderer.class.inc.php @@ -54,6 +54,7 @@ class BsFormRenderer extends FormRenderer $this->AddSupportedField('SelectObjectField', 'BsSelectObjectFieldRenderer'); $this->AddSupportedField('LinkedSetField', 'BsLinkedSetFieldRenderer'); $this->AddSupportedField('DateTimeField', 'BsSimpleFieldRenderer'); + $this->AddSupportedField('DurationField', 'BsSimpleFieldRenderer'); $this->AddSupportedField('FileUploadField', 'BsFileUploadFieldRenderer'); } diff --git a/sources/renderer/bootstrap/fieldrenderer/bssimplefieldrenderer.class.inc.php b/sources/renderer/bootstrap/fieldrenderer/bssimplefieldrenderer.class.inc.php index b89261e43..c274e4791 100644 --- a/sources/renderer/bootstrap/fieldrenderer/bssimplefieldrenderer.class.inc.php +++ b/sources/renderer/bootstrap/fieldrenderer/bssimplefieldrenderer.class.inc.php @@ -269,6 +269,21 @@ EOF $oOutput->AddHtml(''); break; + case 'Combodo\\iTop\\Form\\Field\\DurationField': + $oOutput->AddHtml('