diff --git a/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanel.php b/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanel.php index d42da9aaf..4d8b86a58 100644 --- a/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanel.php +++ b/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanel.php @@ -104,6 +104,9 @@ class ActivityPanel extends UIBlock $this->oObject = $oObject; $sObjectClass = get_class($this->oObject); + // Check if object has a lifecycle + $this->bHasLifecycle = !empty(MetaModel::GetStateAttributeCode($sObjectClass)); + // Initialize the case log tabs $this->InitializeCaseLogTabs(); $this->InitializeCaseLogTabsEntryForms(); @@ -114,9 +117,6 @@ class ActivityPanel extends UIBlock $this->AddCaseLogTab($sCaseLogAttCode); } - // Check if object has a lifecycle - $this->bHasLifecycle = !empty(MetaModel::GetStateAttributeCode($sObjectClass)); - return $this; } @@ -400,6 +400,7 @@ class ActivityPanel extends UIBlock /** * Add the case log tab to the panel * Note: Case log entries are added separately, see static::AddEntry() + * Note: If hidden, the case log will not be added * * @param string $sAttCode * @@ -411,12 +412,20 @@ class ActivityPanel extends UIBlock // Add case log only if not already existing if (!array_key_exists($sAttCode, $this->aCaseLogs)) { - $this->aCaseLogs[$sAttCode] = [ - 'rank' => count($this->aCaseLogs) + 1, - 'title' => MetaModel::GetLabel(get_class($this->oObject), $sAttCode), - 'total_messages_count' => 0, - 'authors' => [], - ]; + $iFlags = ($this->GetObject()->IsNew()) ? $this->GetObject()->GetInitialStateAttributeFlags($sAttCode) : $this->GetObject()->GetAttributeFlags($sAttCode); + $bIsHidden = (OPT_ATT_HIDDEN === ($iFlags & OPT_ATT_HIDDEN)); + $bIsReadOnly = (OPT_ATT_READONLY === ($iFlags & OPT_ATT_READONLY)); + + // Only if not hidden + if (false === $bIsHidden) { + $this->aCaseLogs[$sAttCode] = [ + 'rank' => count($this->aCaseLogs) + 1, + 'title' => MetaModel::GetLabel(get_class($this->oObject), $sAttCode), + 'total_messages_count' => 0, + 'authors' => [], + 'is_read_only' => $bIsReadOnly, + ]; + } } return $this; diff --git a/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanelFactory.php b/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanelFactory.php index 6f0f89e40..494e0dd92 100644 --- a/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanelFactory.php +++ b/sources/application/UI/Base/Layout/ActivityPanel/ActivityPanelFactory.php @@ -72,11 +72,13 @@ class ActivityPanelFactory $oActivityPanel->SetObjectMode($sMode); // Prepare caselogs - $aCaseLogAttCodes = array_keys($oActivityPanel->GetCaseLogTabs()); - foreach($aCaseLogAttCodes as $sCaseLogAttCode) + $aCaseLogTabs = $oActivityPanel->GetCaseLogTabs(); + foreach($aCaseLogTabs as $sCaseLogAttCode => $aCaseLogData) { - // Add new entry block - $oActivityPanel->SetCaseLogTabEntryForm($sCaseLogAttCode, CaseLogEntryFormFactory::MakeForCaselogTab($oObject, $sCaseLogAttCode, $sMode)); + // Add new entry block only if the case log is not read only + if (false === $aCaseLogData['is_read_only']) { + $oActivityPanel->SetCaseLogTabEntryForm($sCaseLogAttCode, CaseLogEntryFormFactory::MakeForCaselogTab($oObject, $sCaseLogAttCode, $sMode)); + } // Retrieve case logs entries /** @var \ormCaseLog $oCaseLog */