Project

General

Profile

Bug #84692 » BUGFIX_Add_configuration_key__table__for_record_link_building_in_FE.patch

Marc Bastian Heinrichs, 2018-04-11 15:50

View differences:

typo3/sysext/frontend/Classes/Typolink/DatabaseRecordLinkBuilder.php (revision )
public function build(array &$linkDetails, string $linkText, string $target, array $conf): array
{
$tsfe = $this->getTypoScriptFrontendController();
$pageTsConfig = $tsfe->getPagesTSconfig();
$configurationKey = $linkDetails['identifier'] . '.';
$configuration = $tsfe->tmpl->setup['config.']['recordLinks.'];
$linkHandlerConfiguration = $pageTsConfig['TCEMAIN.']['linkHandler.'];
if (!isset($configuration[$configurationKey]) || !isset($linkHandlerConfiguration[$configurationKey])) {
if (!isset($configuration[$configurationKey])) {
throw new UnableToLinkException(
'Configuration how to link "' . $linkDetails['typoLinkParameter'] . '" was not found, so "' . $linkText . '" was not linked.',
1490989149,
......
);
}
$typoScriptConfiguration = $configuration[$configurationKey]['typolink.'];
$linkHandlerConfiguration = $linkHandlerConfiguration[$configurationKey]['configuration.'];
if ($configuration[$configurationKey]['forceLink']) {
$record = $tsfe->sys_page->getRawRecord($linkHandlerConfiguration['table'], $linkDetails['uid']);
$record = $tsfe->sys_page->getRawRecord($configuration[$configurationKey]['table'], $linkDetails['uid']);
} else {
$record = $tsfe->sys_page->checkRecord($linkHandlerConfiguration['table'], $linkDetails['uid']);
$record = $tsfe->sys_page->checkRecord($configuration[$configurationKey]['table'], $linkDetails['uid']);
}
if ($record === 0) {
throw new UnableToLinkException(
......
// Build the full link to the record
$localContentObjectRenderer = GeneralUtility::makeInstance(ContentObjectRenderer::class);
$localContentObjectRenderer->start($record, $linkHandlerConfiguration['table']);
$localContentObjectRenderer->start($record, $configuration[$configurationKey]['table']);
$localContentObjectRenderer->parameters = $this->contentObjectRenderer->parameters;
$link = $localContentObjectRenderer->typoLink($linkText, $typoScriptConfiguration);
(1-1/2)