From 3a21e38b9acbf78468f91cfbefaf79dd7eab9271 Mon Sep 17 00:00:00 2001
From: Georg Ringer <georg.ringer@gmail.com>
Date: Wed, 23 Sep 2015 11:17:32 +0200
Subject: [PATCH] [!!!][TASK] Resolve URLs to "Link to external URL"-pages
 directly

Render the external url directly in menus instead of linking to
the internal page and do a redirect afterwards.

Change-Id: Iff407ae2730bd3c66c5b403030887d9f01758a0b
Resolves: #62812
Releases: master
Reviewed-on: http://review.typo3.org/43496
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
---
 ...olveMenuUrlsToLinkToExternalPagesDirectly.rst |  9 +++++++++
 .../Menu/AbstractMenuContentObject.php           | 16 +++++++++++-----
 2 files changed, 20 insertions(+), 5 deletions(-)
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-62812-ResolveMenuUrlsToLinkToExternalPagesDirectly.rst

diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-62812-ResolveMenuUrlsToLinkToExternalPagesDirectly.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-62812-ResolveMenuUrlsToLinkToExternalPagesDirectly.rst
new file mode 100644
index 000000000000..54ac09440892
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-62812-ResolveMenuUrlsToLinkToExternalPagesDirectly.rst
@@ -0,0 +1,9 @@
+========================================================================
+Breaking: #62812 - Resolve URLs to "Link to external URL"-pages directly
+========================================================================
+
+Description
+===========
+
+The behaviour of pages with the type "Link to External URL"  is changed for menus. Those pages link now directly to
+the provided url instead of linking the internal page with a redirect afterwards.
\ No newline at end of file
diff --git a/typo3/sysext/frontend/Classes/ContentObject/Menu/AbstractMenuContentObject.php b/typo3/sysext/frontend/Classes/ContentObject/Menu/AbstractMenuContentObject.php
index edcb3664e41b..68252f26f9a7 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/Menu/AbstractMenuContentObject.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/Menu/AbstractMenuContentObject.php
@@ -1544,11 +1544,17 @@ abstract class AbstractMenuContentObject {
 			$addParams .= $this->I['val']['additionalParams'] . $this->menuArr[$key]['_ADD_GETVARS'];
 			$LD = $this->menuTypoLink($this->menuArr[$key], $mainTarget, '', '', $overrideArray, $addParams, $typeOverride);
 		}
-		// Override URL if using "External URL" as doktype with a valid e-mail address:
-		if ($this->menuArr[$key]['doktype'] == PageRepository::DOKTYPE_LINK && $this->menuArr[$key]['urltype'] == 3 && GeneralUtility::validEmail($this->menuArr[$key]['url'])) {
-			// Create mailto-link using \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::typolink (concerning spamProtectEmailAddresses):
-			$LD['totalURL'] = $this->parent_cObj->typoLink_URL(array('parameter' => $this->menuArr[$key]['url']));
-			$LD['target'] = '';
+		// Override URL if using "External URL"
+		if ($this->menuArr[$key]['doktype'] == PageRepository::DOKTYPE_LINK) {
+
+			if ($this->menuArr[$key]['urltype'] == 3 && GeneralUtility::validEmail($this->menuArr[$key]['url'])) {
+				// Create mailto-link using \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::typolink (concerning spamProtectEmailAddresses):
+				$LD['totalURL'] = $this->parent_cObj->typoLink_URL(array('parameter' => $this->menuArr[$key]['url']));
+				$LD['target'] = '';
+			} else {
+				$LD['totalURL'] = $this->parent_cObj->typoLink_URL(array('parameter' => $this->getSysPage()->getExtURL($this->menuArr[$key])));
+			}
+
 		}
 
 		$tsfe = $this->getTypoScriptFrontendController();
-- 
GitLab