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 e26807ddba..56a443e663 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 @@ -561,7 +561,8 @@ class BrowseBrickController extends BrickController $aRow[$key]['fields'] = array(); foreach ($aLevelsProperties[$key]['fields'] as $aField) { - $aRow[$key]['fields'][$aField['code']] = $value->Get($aField['code']); + $oAttDef = MetaModel::GetAttributeDef(get_class($value), $aField['code']); + $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 26c392fe31..e71b95547a 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 @@ -306,7 +306,7 @@ class ManageBrickController extends BrickController { // Set properties $sCurrentClass = $sKey; - $sTitleAttrCode = MetaModel::GetFriendlyNameAttributeCode($sCurrentClass); + $sTitleAttrCode = 'friendlyname'; // Getting area columns properties $aColumnsAttrs = $oBrick->GetFields(); @@ -389,7 +389,7 @@ class ManageBrickController extends BrickController } else { - $sValue = $oCurrentRow->Get($sItemAttr); + $sValue = $oAttDef->GetValueLabel($oCurrentRow->Get($sItemAttr)); } unset($oAttDef); diff --git a/datamodels/2.x/itop-portal-base/portal/src/controllers/objectcontroller.class.inc.php b/datamodels/2.x/itop-portal-base/portal/src/controllers/objectcontroller.class.inc.php index b6b6773492..41a497a99c 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/controllers/objectcontroller.class.inc.php +++ b/datamodels/2.x/itop-portal-base/portal/src/controllers/objectcontroller.class.inc.php @@ -32,6 +32,7 @@ use \IssueLog; use \MetaModel; use \DBSearch; use \DBObjectSearch; +use \FalseExpression; use \BinaryExpression; use \FieldExpression; use \VariableExpression; @@ -39,6 +40,8 @@ use \ListExpression; use \ScalarExpression; use \DBObjectSet; use \cmdbAbstractObject; +use \AttributeEnum; +use \AttributeFinalClass; use \UserRights; use \Combodo\iTop\Portal\Helper\ApplicationHelper; use \Combodo\iTop\Portal\Helper\SecurityHelper; @@ -833,7 +836,7 @@ class ObjectController extends AbstractController // - Retrieving class attribute list $aAttCodes = ApplicationHelper::GetLoadedListFromClass($oApp, $sTargetObjectClass, 'list'); // - Adding friendlyname attribute to the list is not already in it - $sTitleAttCode = MetaModel::GetFriendlyNameAttributeCode($sTargetObjectClass); + $sTitleAttCode = 'friendlyname'; if (($sTitleAttCode !== null) && !in_array($sTitleAttCode, $aAttCodes)) { $aAttCodes = array_merge(array($sTitleAttCode), $aAttCodes); @@ -881,7 +884,35 @@ class ObjectController extends AbstractController $oAttDef = MetaModel::GetAttributeDef($sTargetObjectClass, $aAttCodes[$i]); $sAttCode = (!$oAttDef->IsExternalKey()) ? $aAttCodes[$i] : $aAttCodes[$i] . '_friendlyname'; // Building expression for the current attcode - $oBinExpr = new BinaryExpression(new FieldExpression($sAttCode, $oSearch->GetClassAlias()), 'LIKE', new VariableExpression('re_query')); + // - For attributes that need conversion from their display value to storage value + // Note : This is dirty hack that will need to be refactored in the OQL core in order to be nicer and to be extended to other types such as dates etc... + if (($oAttDef instanceof AttributeEnum) || ($oAttDef instanceof AttributeFinalClass)) + { + // Looking up storage value + $aMatchedCodes = array(); + foreach ($oAttDef->GetAllowedValues() as $sValueCode => $sValueLabel) + { + if (stripos($sValueLabel, $sQuery) !== false) + { + $aMatchedCodes[] = $sValueCode; + } + } + // Building expression + if (!empty($aMatchedCodes)) + { + $oEnumeratedListExpr = ListExpression::FromScalars($aMatchedCodes); + $oBinExpr = new BinaryExpression(new FieldExpression($sAttCode, $oSearch->GetClassAlias()), 'IN', $oEnumeratedListExpr); + } + else + { + $oBinExpr = new FalseExpression(); + } + } + // - For regular attributs + else + { + $oBinExpr = new BinaryExpression(new FieldExpression($sAttCode, $oSearch->GetClassAlias()), 'LIKE', new VariableExpression('re_query')); + } // Adding expression to the full expression (all attcodes) if ($i === 0) { @@ -1071,7 +1102,7 @@ class ObjectController extends AbstractController // // - Retrieving class attribute list // $aAttCodes = MetaModel::FlattenZList(MetaModel::GetZListItems($sTargetObjectClass, 'list')); // // - Adding friendlyname attribute to the list is not already in it -// $sTitleAttrCode = MetaModel::GetFriendlyNameAttributeCode($sTargetObjectClass); +// $sTitleAttrCode = 'friendlyname'; // if (($sTitleAttrCode !== null) && !in_array($sTitleAttrCode, $aAttCodes)) // { // $aAttCodes = array_merge(array($sTitleAttrCode), $aAttCodes); diff --git a/datamodels/2.x/itop-portal-base/portal/src/forms/objectformmanager.class.inc.php b/datamodels/2.x/itop-portal-base/portal/src/forms/objectformmanager.class.inc.php index abbd87ca0f..52c6b39f8b 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/forms/objectformmanager.class.inc.php +++ b/datamodels/2.x/itop-portal-base/portal/src/forms/objectformmanager.class.inc.php @@ -539,7 +539,7 @@ class ObjectFormManager extends FormManager // Note : This snippet is inspired from AttributeLinkedSet::MakeFormField() $aAttCodesToDisplay = ApplicationHelper::GetLoadedListFromClass($this->oApp, $oField->GetTargetClass(), 'list'); // - Adding friendlyname attribute to the list is not already in it - $sTitleAttCode = MetaModel::GetFriendlyNameAttributeCode($oField->GetTargetClass()); + $sTitleAttCode = 'friendlyname'; if (($sTitleAttCode !== null) && !in_array($sTitleAttCode, $aAttCodesToDisplay)) { $aAttCodesToDisplay = array_merge(array($sTitleAttCode), $aAttCodesToDisplay); diff --git a/datamodels/2.x/itop-portal-base/portal/web/css/portal.css b/datamodels/2.x/itop-portal-base/portal/web/css/portal.css index 15dd7a1338..2b4505acdb 100644 --- a/datamodels/2.x/itop-portal-base/portal/web/css/portal.css +++ b/datamodels/2.x/itop-portal-base/portal/web/css/portal.css @@ -442,6 +442,10 @@ footer { .dataTables_wrapper { padding: 10px 10px; } +.dataTable.table td img { + max-width: 100%; + height: initial !important; +} #brick_content_toolbar { /* margin: 10px 0px 6px 0px; */ padding: 10px; diff --git a/datamodels/2.x/itop-portal-base/portal/web/css/portal.scss b/datamodels/2.x/itop-portal-base/portal/web/css/portal.scss index a365a09112..6ddb4599e7 100644 --- a/datamodels/2.x/itop-portal-base/portal/web/css/portal.scss +++ b/datamodels/2.x/itop-portal-base/portal/web/css/portal.scss @@ -465,6 +465,10 @@ footer{ .dataTables_wrapper{ padding: 10px 10px; } +.dataTable.table td img{ + max-width: 100%; + height: initial !important; +} #brick_content_toolbar{ /* margin: 10px 0px 6px 0px; */ padding: 10px;