Bug #81620

Linkhandler remove all attributes set in the link wizard and the template

Added by Kevin Appelt over 4 years ago. Updated almost 2 years ago.

Status:
Closed
Priority:
Must have
Assignee:
-
Category:
Link Handling, Site Handling & Routing
Start date:
2017-06-19
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
8
PHP Version:
7.0
Tags:
linkhandler, typolink
Complexity:
medium
Is Regression:
Sprint Focus:

Description

My configuration

I am using version TYPO3 CMS 8.7.1 and the linkhandler from core.

I have a template like this:

<f:link.typolink parameter="{link}" class="btn more">Mehr erfahren</f:link.typolink>

I have the following pageTsConfig:

TCEMAIN {
    linkHandler {
        tx_news {
            handler = TYPO3\CMS\Recordlist\LinkHandler\RecordLinkHandler
            label = News
            configuration {
                table = tx_news_domain_model_news
                hidePageTree = 0
            }
            scanAfter = page
        }
    }
}

And this typoscript:

config {
    recordLinks {
        tx_news {
            typolink {
                parameter = {$id.newsDetailPid}
                additionalParams.data = field:uid
                additionalParams.wrap = &tx_news_pi1[news]=|&tx_news_pi1[action]=detail&tx_news_pi1[controller]=news
                useCacheHash = 1
            }
        }
    }
}

{$id.newsDetailPid} is set as 22.

The scenario

Now i create a link with the link wizard to a page (uid: 30) with some extra attributes set

t3://page?uid=30 _blank "btn special" Testtitle google=bad

and get this:
<a href="/index.php?id=1&google=bad" title="Testtitle" target="_blank" class="btn special more">Mehr erfahren</a>

Now i create a link with the link wizard to a news record (uid:1) with the same extra attributes set
t3://record?identifier=tx_news&uid=1 _blank "btn special" Testtitle google=bad

and get this:
<a href="/index.php?id=22&tx_news_pi1%5Bnews%5D=1&amp;tx_news_pi1%5Baction%5D=detail&amp;tx_news_pi1%5Bcontroller%5D=news&amp;cHash=e68aca14db3f2e4bc194845e951acc11">Mehr erfahren</a>

The problem

If i use a link created with linkhandler all attributes get completly removed.
I think the problem is somewhere in the method typoLink in /typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php but i am not sure.

One way it works to add the classes - but it is not useful

To add the classes i have to set them in the `parameter` in the typoscript of the linkhandler.
But this is not what is needed, because there is no class for “link to news” but the tags may have classes like in the example.


Related issues

Related to TYPO3 Core - Bug #81903: DatabaseRecordLinkBuilder is ignoring other settingsClosed2017-07-18

Actions
Related to TYPO3 Core - Bug #80896: TypolinkViewhelper with linkhandler ignores class attributeClosed2017-04-19

Actions
Related to TYPO3 Core - Bug #84942: target _blank is beeing ignored on CType "images" with recordLinksClosed2018-05-07

Actions
Related to TYPO3 Core - Bug #85868: Tests are not executedClosedBenni Mack2018-08-15

Actions
Related to TYPO3 Core - Bug #81316: linkhandler does not respect custom typolink configurationClosed2017-05-23

Actions
Related to TYPO3 Core - Bug #90404: Linkhandler removes all attributes set in fluid viewhelper if parameter uses stdWrapNew2020-02-17

Actions
#1

Updated by Gerrit Code Review over 4 years ago

  • Status changed from New to Under Review

Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/53275

#2

Updated by Gerrit Code Review over 4 years ago

Patch set 2 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/53275

#3

Updated by Gerrit Code Review about 4 years ago

Patch set 3 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/53275

#4

Updated by Gerrit Code Review about 4 years ago

Patch set 4 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/53275

#5

Updated by Markus Klein about 4 years ago

  • Complexity set to medium
  • Sprint Focus set to On Location Sprint
#6

Updated by Mathias Brodala about 4 years ago

  • Has duplicate Bug #81903: DatabaseRecordLinkBuilder is ignoring other settings added
#7

Updated by Mathias Brodala about 4 years ago

  • Has duplicate deleted (Bug #81903: DatabaseRecordLinkBuilder is ignoring other settings)
#8

Updated by Dennis Römmich about 4 years ago

What should be the expected behavior if i have the following link within the RTE:

<a class="btn special" title="Testtitle" href="t3://record?identifier=tx_news&uid=1">convallis</a>

I think this behavior is not covered by the given patch in gerrit, isn't it?

#9

Updated by Anja Leichsenring about 4 years ago

  • Sprint Focus deleted (On Location Sprint)
#10

Updated by Stefan Galinski almost 4 years ago

This is not a bug. Just a configuration issue.

Working example configuration:

config.recordLinks {
    pressRelease {
        forceLink = 0
        typolink {
            parameter = {$themes.pages.news.pressReleaseSingle}
            additionalParams = &tx_news_pi1[news]={field:uid}
            additionalParams.insertData = 1
            useCacheHash = 1

            ATagParams.data = parameters:allParams
            target.data = parameters:target
            title.data = parameters:title

            extTarget = _blank
            extTarget.override.data = parameters:target
        }
    }
}
#11

Updated by Francois Suter over 3 years ago

The above is true for a link inside the RTE, but when coming from a TS configuration or a Fluid view helper, the ContentObjectRenderer class does not load the link parameters into the parameters member variable.

This is actually quite a touchy issue as several sources of information must be combined:
  1. the additional parameters of the link itself
  2. the ViewHelper or the TS configuration driving the rendering with its own parameters
  3. the "base" linkhandler TS configuration

The difficulty lies in defining how each "level" overrides the other. The "parameter" and "additionalParams" properties should be carefully preserved because they are calculated in \TYPO3\CMS\Frontend\Typolink\DatabaseRecordLinkBuilder::build().

I do not have a good answer for now...

#12

Updated by Christian Kuhn over 3 years ago

  • Related to Bug #81903: DatabaseRecordLinkBuilder is ignoring other settings added
#13

Updated by Marc Hirdes over 3 years ago

The Fluid Typolinkviewhelper adds a parameter string like

parameter = t3://record?identifier=tx_news&uid=1 _blank "btn special" Testtitle google=bad

The sysext/frontend/Classes/Typolink/DatabaseRecordLinkBuilder.php creates a parameter string like the following, if 15 is the page uid of the detail page

parameter = 15

So all other settings will be ignored. Usefull would be a merge of the settings in the DatabaseRecordLinkBuilder

$typoScriptConfiguration = $configuration[$configurationKey]['typolink.'];

        /** @var TypoLinkCodecService $typoLinkCodecService */
        $typoLinkCodecService = GeneralUtility::makeInstance(TypoLinkCodecService::class);
        $typoScriptConfiguration['parameter'] = $typoLinkCodecService->encode(
            array_merge(
                array_filter($typoLinkCodecService->decode($conf['parameter']), 'strlen'),
                array_filter($typoLinkCodecService->decode($typoScriptConfiguration['parameter']), 'strlen')
            )
        );

A fix in the core would be great.

#14

Updated by DANIEL Rémy over 3 years ago

  • Related to Bug #80896: TypolinkViewhelper with linkhandler ignores class attribute added
#15

Updated by Elena Bartolotti over 3 years ago

  • Related to Bug #84942: target _blank is beeing ignored on CType "images" with recordLinks added
#16

Updated by Gerrit Code Review about 3 years ago

Patch set 4 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/57370

#17

Updated by Gerrit Code Review about 3 years ago

Patch set 1 for branch TYPO3_8-7 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/57883

#18

Updated by Susanne Moog about 3 years ago

  • Status changed from Under Review to Resolved
  • % Done changed from 0 to 100
#19

Updated by Benni Mack about 3 years ago

  • Related to Bug #85868: Tests are not executed added
#20

Updated by Benni Mack almost 3 years ago

  • Status changed from Resolved to Closed
#21

Updated by Markus Klein almost 3 years ago

  • Related to Bug #81316: linkhandler does not respect custom typolink configuration added
#22

Updated by Sergio Catalá over 2 years ago

Is this fixed for TYPO3 9.5?
I can find the same wrong behaviour described.

#23

Updated by Christoph Dörfel almost 2 years ago

  • % Done changed from 100 to 0

I can also reproduce this bug in TYPO3 8.7.29

#24

Updated by Markus Klein over 1 year ago

  • Related to Bug #90404: Linkhandler removes all attributes set in fluid viewhelper if parameter uses stdWrap added

Also available in: Atom PDF