From ccf7dae56adaae36f4c0a103f1c7b3c17af8494a Mon Sep 17 00:00:00 2001
From: Wouter Wolters <typo3@wouterwolters.nl>
Date: Sat, 11 Jul 2015 11:58:48 +0200
Subject: [PATCH] [BUGFIX] Double protocol when using TCEMAIN.previewDomain

In EXT:viewpage the option TCEMAIN.previewDomain is used but
not evaluated correctly. The option can contain the protocol
already and this is not respected in EXT:viewpage.

Check if domain already contains a protocol.

Resolves: #34820
Resolves: #36542
Resolves: #23115
Releases: master, 6.2
Change-Id: I13f7cda1dca54d60d350ba460e43ec924c140d35
Reviewed-on: http://review.typo3.org/41095
Reviewed-by: Helmut Hummel <helmut.hummel@typo3.org>
Tested-by: Helmut Hummel <helmut.hummel@typo3.org>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
---
 .../Controller/ViewModuleController.php        | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php b/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php
index 42688d9c560e..b2e17a43b9d7 100644
--- a/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php
+++ b/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php
@@ -68,15 +68,19 @@ class ViewModuleController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionContr
 		// Modify relative path to protocol with host if domain record is given
 		$protocolAndHost = '..';
 		if ($domainName) {
-			$protocol = 'http';
-			$page = (array)$sysPage->getPage($finalPageIdToShow);
-			if ($page['url_scheme'] == 2 || $page['url_scheme'] == 0 && \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SSL')) {
-				$protocol = 'https';
+			// TCEMAIN.previewDomain can contain the protocol, check prevents double protocol URLs
+			if (strpos($domainName, '://') !== FALSE) {
+				$protocolAndHost = $domainName;
+			} else {
+				$protocol = 'http';
+				$page = (array)$sysPage->getPage($finalPageIdToShow);
+				if ($page['url_scheme'] == 2 || $page['url_scheme'] == 0 && \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SSL')) {
+					$protocol = 'https';
+				}
+				$protocolAndHost = $protocol . '://' . $domainName;
 			}
-			$protocolAndHost = $protocol . '://' . $domainName;
 		}
-		$url = $protocolAndHost . '/index.php?id=' . $finalPageIdToShow . $this->getTypeParameterIfSet($finalPageIdToShow) . $mountPointMpParameter . $adminCommand;
-		return $url;
+		return $protocolAndHost . '/index.php?id=' . $finalPageIdToShow . $this->getTypeParameterIfSet($finalPageIdToShow) . $mountPointMpParameter . $adminCommand;
 	}
 
 	/**
-- 
GitLab