From aac504ec0bc49a1f54c607d5d70db9bef1fa3bc7 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Tue, 28 Sep 2021 16:24:17 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B03917=20Fix=20object=20details=20icon=20c?= =?UTF-8?q?over=20method=20when=20using=20class=20highlight=20icon=20as=20?= =?UTF-8?q?object=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/dbobject.class.php | 47 +++++++++++++------ .../UI/Base/Layout/Object/ObjectDetails.php | 2 +- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/core/dbobject.class.php b/core/dbobject.class.php index 46f6c719f..4ff6f9783 100644 --- a/core/dbobject.class.php +++ b/core/dbobject.class.php @@ -1470,23 +1470,15 @@ abstract class DBObject implements iDisplay */ public function GetIcon($bImgTag = true) { - $sCode = $this->ComputeHighlightCode(); $sClass = get_class($this); - if($sCode != '') - { - $aHighlightScale = MetaModel::GetHighlightScale($sClass); - if (array_key_exists($sCode, $aHighlightScale)) - { - $sIconUrl = $aHighlightScale[$sCode]['icon']; - if($bImgTag) - { - return ""; - } - else - { - return $sIconUrl; - } + if($this->HasHighlightIcon()) { + $sIconUrl = MetaModel::GetHighlightScale($sClass)[$this->ComputeHighlightCode()]['icon']; + if($bImgTag) { + return ""; + } + else { + return $sIconUrl; } } @@ -1527,6 +1519,31 @@ abstract class DBObject implements iDisplay return $bHasInstanceIcon; } + /** + * @return bool True if the class has an highlight icon declared for the current object state + * @throws \ArchivedObjectException + * @throws \CoreException + * @since 3.0.0 + */ + public function HasHighlightIcon(): bool + { + $bHasHighlightIcon = false; + + $sCode = $this->ComputeHighlightCode(); + $sClass = get_class($this); + + if($sCode != '') + { + $aHighlightScale = MetaModel::GetHighlightScale($sClass); + if (array_key_exists($sCode, $aHighlightScale)) + { + $bHasHighlightIcon = true; + } + } + + return $bHasHighlightIcon; + } + /** * Get the label of a class * diff --git a/sources/application/UI/Base/Layout/Object/ObjectDetails.php b/sources/application/UI/Base/Layout/Object/ObjectDetails.php index 2fc2cb859..973d99b5c 100644 --- a/sources/application/UI/Base/Layout/Object/ObjectDetails.php +++ b/sources/application/UI/Base/Layout/Object/ObjectDetails.php @@ -204,7 +204,7 @@ class ObjectDetails extends Panel implements iKeyboardShortcut // Default icon is the class icon $sIconUrl = $oObject->GetIcon(false); // Note: Class icons are a square image with no margin around, so they need to be zoomed out in the medallion - $sIconCoverMethod = $oObject->HasInstanceIcon() ? static::ENUM_ICON_COVER_METHOD_COVER : static::ENUM_ICON_COVER_METHOD_ZOOMOUT; + $sIconCoverMethod = $oObject->HasInstanceIcon() && !$oObject->HasHighlightIcon() ? static::ENUM_ICON_COVER_METHOD_COVER : static::ENUM_ICON_COVER_METHOD_ZOOMOUT; $this->SetIcon($sIconUrl, $sIconCoverMethod, true); }