diff --git a/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/RecordProvider.php b/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/RecordProvider.php index b369351c0f38..dde8349f2924 100644 --- a/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/RecordProvider.php +++ b/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/RecordProvider.php @@ -459,7 +459,9 @@ protected function canShowInfo(): bool */ protected function canShowHistory(): bool { - return true; + $showHistoryTS = $this->backendUser->getTSConfig('options.showHistory'); + $showHistory = (bool)trim($showHistoryTS['properties'][$this->table] ?? $showHistoryTS['value'] ?? '1'); + return $showHistory; } /** diff --git a/typo3/sysext/backend/Classes/Controller/EditDocumentController.php b/typo3/sysext/backend/Classes/Controller/EditDocumentController.php index cf114983ff6f..c5e87b26ee18 100644 --- a/typo3/sysext/backend/Classes/Controller/EditDocumentController.php +++ b/typo3/sysext/backend/Classes/Controller/EditDocumentController.php @@ -1310,56 +1310,56 @@ protected function getButtons() $buttonBar->addButton($deleteButton, ButtonBar::BUTTON_POSITION_LEFT, 3); } // Undo: - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class) - ->getQueryBuilderForTable('sys_history'); - - $undoButtonR = $queryBuilder->select('tstamp') - ->from('sys_history') - ->where( - $queryBuilder->expr()->eq( - 'tablename', - $queryBuilder->createNamedParameter($this->firstEl['table'], \PDO::PARAM_STR) - ), - $queryBuilder->expr()->eq( - 'recuid', - $queryBuilder->createNamedParameter($this->firstEl['uid'], \PDO::PARAM_INT) - ) - ) - ->orderBy('tstamp', 'DESC') - ->setMaxResults(1) - ->execute() - ->fetch(); - - if ($undoButtonR !== false) { - $aOnClick = 'window.location.href=' . - GeneralUtility::quoteJSvalue( - (string)$uriBuilder->buildUriFromRoute( - 'record_history', - [ - 'element' => $this->firstEl['table'] . ':' . $this->firstEl['uid'], - 'revert' => 'ALL_FIELDS', - 'returnUrl' => $this->R_URI, - ] + if ($this->getNewIconMode($this->firstEl['table'], 'showHistory')) { + $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class) + ->getQueryBuilderForTable('sys_history'); + $undoButtonR = $queryBuilder->select('tstamp') + ->from('sys_history') + ->where( + $queryBuilder->expr()->eq( + 'tablename', + $queryBuilder->createNamedParameter($this->firstEl['table'], \PDO::PARAM_STR) + ), + $queryBuilder->expr()->eq( + 'recuid', + $queryBuilder->createNamedParameter($this->firstEl['uid'], \PDO::PARAM_INT) ) - ) . '; return false;'; - - $undoButton = $buttonBar->makeLinkButton() - ->setHref('#') - ->setOnClick($aOnClick) - ->setTitle( - sprintf( - $lang->getLL('undoLastChange'), - BackendUtility::calcAge( - ($GLOBALS['EXEC_TIME'] - $undoButtonR['tstamp']), - $lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:labels.minutesHoursDaysYears') + ) + ->orderBy('tstamp', 'DESC') + ->setMaxResults(1) + ->execute() + ->fetch(); + if ($undoButtonR !== false) { + $aOnClick = 'window.location.href=' . + GeneralUtility::quoteJSvalue( + (string)$uriBuilder->buildUriFromRoute( + 'record_history', + [ + 'element' => $this->firstEl['table'] . ':' . $this->firstEl['uid'], + 'revert' => 'ALL_FIELDS', + 'returnUrl' => $this->R_URI, + ] + ) + ) . '; return false;'; + + $undoButton = $buttonBar->makeLinkButton() + ->setHref('#') + ->setOnClick($aOnClick) + ->setTitle( + sprintf( + $lang->getLL('undoLastChange'), + BackendUtility::calcAge( + ($GLOBALS['EXEC_TIME'] - $undoButtonR['tstamp']), + $lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:labels.minutesHoursDaysYears') + ) ) ) - ) - ->setIcon($this->moduleTemplate->getIconFactory()->getIcon( - 'actions-document-history-open', - Icon::SIZE_SMALL - )); - $buttonBar->addButton($undoButton, ButtonBar::BUTTON_POSITION_LEFT, 3); + ->setIcon($this->moduleTemplate->getIconFactory()->getIcon( + 'actions-document-history-open', + Icon::SIZE_SMALL + )); + $buttonBar->addButton($undoButton, ButtonBar::BUTTON_POSITION_LEFT, 3); + } } if ($this->getNewIconMode($this->firstEl['table'], 'showHistory')) { $aOnClick = 'window.location.href=' . diff --git a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php index 1b3a3d9775d8..ee2bca63a6f1 100644 --- a/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php +++ b/typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php @@ -1956,12 +1956,16 @@ public function makeControl($table, $row) // If the table is NOT a read-only table, then show these links: if ($this->isEditable($table)) { // "Revert" link (history/undo) - $moduleUrl = (string)$uriBuilder->buildUriFromRoute('record_history', ['element' => $table . ':' . $row['uid']]); - $onClick = 'return jumpExt(' . GeneralUtility::quoteJSvalue($moduleUrl) . ',\'#latest\');'; - $historyAction = '' - . $this->iconFactory->getIcon('actions-document-history-open', Icon::SIZE_SMALL)->render() . ''; - $this->addActionToCellGroup($cells, $historyAction, 'history'); + $showHistoryTS = $this->getBackendUserAuthentication()->getTSConfig('options.showHistory'); + $showHistory = (bool)trim($showHistoryTS['properties'][$table] ?? $showHistoryTS['value'] ?? '1'); + if ($showHistory) { + $moduleUrl = BackendUtility::getModuleUrl('record_history', ['element' => $table . ':' . $row['uid']]); + $onClick = 'return jumpExt(' . GeneralUtility::quoteJSvalue($moduleUrl) . ',\'#latest\');'; + $historyAction = '' + . $this->iconFactory->getIcon('actions-document-history-open', Icon::SIZE_SMALL)->render() . ''; + $this->addActionToCellGroup($cells, $historyAction, 'history'); + } // "Edit Perms" link: if ($table === 'pages' && $this->getBackendUserAuthentication()->check('modules', 'system_BeuserTxPermission') && ExtensionManagementUtility::isLoaded('beuser')) { if ($isL10nOverlay) {